このところスクレイピングのご相談が多く、HTMLのみであればPHP+Goutte、
JSでページを書き換えているものならNode.js+NightmareJS+Electronを利用しています。
先日もNightmareJSでスクレイピングツールを作ったのですが、
結果をメールに添付して飛ばしてほしいというご要望がございました。
そのときに使ったメール送信モジュール Nodemailer を紹介します。
SMTPでの送信がデフォルトで組み込まれていて、
sendmailコマンドでの送信はモジュールを組み込むことで可能になっています。(PHPとは逆)
その他の送信モジュールはこちら。
以下は、画像を入れたHTMLメールにPDFを添付して送信したサンプルです。
説明の必要はないと思いますが、cid(Content-ID)は見慣れない方もいるかもしれません。
HTMLから添付した画像を参照する場合は、添付ファイルのファイル名ではなく、
このIDを使う決まりになっています。https://tools.ietf.org/html/rfc2392
(これはNodemailerに限った話でありません)
日本語はUTF-8を使用します。(これはNodemailerの決まり)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
var nodemailer = require('nodemailer'); var transporter = nodemailer.createTransport({ host : 'XXXX.XXXX.ne.jp', port : 25, auth : { user : 'XXXX@XXXX.XXXX.ne.jp', pass : 'XXXX' } }); transporter.sendMail({ from : 'info@atage.jp', to : 'XXXX@XXXX.com', subject : 'お問い合わせありがとうございます。', html : { path : './message.html' }, attachments : [ { filename : '会社案内.pdf', path : './profile.pdf' }, { cid : 'logo', path : './logo.png' } ] }, function (error, info) { console.log(info); }); |
message.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<html> <head> <meta http-equiv="Content-Type" Content="text/html;charset=UTF-8"> </head> <body> この度はお問い合わせいただきありがとうございます。<br> <br> 弊社は、ウェブとデータベースの開発を承っておりまして、<br> ユーザー目線で使いやすいシステムを心がけております。<br> <br> 3営業日以内に担当者より連絡をさせていただきます。<br> よろしくお願い申し上げます。<br> <br> <img src="cid:logo"><br> 東京都練馬区南大泉5-38-7 プレイン昭代103<br> TEL:03-5308-5198<br> URL: https://www.atage.jp/<br> </body> </html> |
Gmail宛に送信されたメール