1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Goでhtmlメール自動送信

Posted at

1. はじめに

誰かにhtmlメールを送信するサービスはたくさんありますが、SMTPやhtmlメールの
テンプレートなど、参考になるサイトがいくつかあり、意外に自分で作れるかもと思い、作ってみました。

2. コード

完成したコードはgithubに置いてます。
https://github.com/koki-iwaizumi/html_email

※GoのDB周りはxormを使っています。

3. 処理の流れ

①MySQLに保存してあるユーザ情報を取得(const EMAIL_TARGET_STATUSとjintoカラムが一致するユーザーを取得)
②メールテンプレート作成
③ユーザー毎にメールの文言修正後、SMTPでメール送信
④全員にメール送信したら、コンソール上で'PRESS Y'と表示されるので、'Y'を押しエンターを押すと終了

3. 使い方

  1. MySQLに下記を登録します。
person.sql
CREATE TABLE IF NOT EXISTS `person` (
	`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
	`company` varchar(255) NOT NULL DEFAULT '',
	`email` varchar(255) NOT NULL DEFAULT '',
	`name` varchar(255) NOT NULL DEFAULT '',
	`honorific` varchar(255) NOT NULL DEFAULT '',
	`post_h` varchar(3) NOT NULL DEFAULT '',
	`post_l` varchar(4) NOT NULL DEFAULT '',
	`prefecture` varchar(255) NOT NULL DEFAULT '',
	`address_h` varchar(25) NOT NULL DEFAULT '',
	`address_l` varchar(25) NOT NULL DEFAULT '',
	`jinto` varchar(10) NOT NULL DEFAULT '',
	`saibaru` varchar(10) NOT NULL DEFAULT '',
	`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
	PRIMARY KEY (`id`),
	UNIQUE KEY `company` (`company`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `person` (`id`, `company`, `email`, `name`, `honorific`, `post_h`, `post_l`, `prefecture`, `address_h`, `address_l`, `jinto`, `saibaru`, `created`) VALUES
(1, 'test_company', 'info@test.test', 'testname', '様', '111', '1111', 'prefecture', 'address_h', 'address_l', '未送信', '未送信', '2019-05-14 23:21:54');
  1. email設定の変更 main.go
main.go
const (
	EMAIL_HOST                = "*"
	EMAIL_PORT                = "*"
	EMAIL_USER                = "*"
	EMAIL_PASSWORD            = "*"
	EMAIL_FROMNAME            = "*"
	EMAIL_FROMADDRESS         = "*"
	EMAIL_SUBJECT             = "IoTデータロガーのご紹介!"
	EMAIL_PATH                = "view/email.html"
	EMAIL_TARGET_STATUS       = "未送信"
	EMAIL_TARGET_STATUS_AFTER = "メール送信済み"
)
  1. db設定の変更 model/base.go
model/base.go
const (
	MODEL_DRIVER   = "mysql"
	MODEL_USER     = "*"
	MODEL_PASSWORD = "*"
	MODEL_NAME     = "*"
)
  1. 実行!

$ go run main.go

5. 参考にしたサイト

htmlメールは下記のサイトを参考にさせていだきました。
https://blog.kannart.co.jp/coding/1093/

SMTPに関しては下記を参考にさせていだきました。
https://qiita.com/cyabane/items/b0cbc9bc7526c56f5724

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?