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. 使い方
- MySQLに下記を登録します。
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');
- email設定の変更 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 = "メール送信済み"
)
- db設定の変更 model/base.go
const (
MODEL_DRIVER = "mysql"
MODEL_USER = "*"
MODEL_PASSWORD = "*"
MODEL_NAME = "*"
)
- 実行!
$ go run main.go
5. 参考にしたサイト
htmlメールは下記のサイトを参考にさせていだきました。
https://blog.kannart.co.jp/coding/1093/
SMTPに関しては下記を参考にさせていだきました。
https://qiita.com/cyabane/items/b0cbc9bc7526c56f5724