nodemailerとさくらのメールサーバからメールを送信
nodemailerからさくらのメールサーバ経由でメールを送信する
普通には送信できない
以下のような587ポートへの接続は失敗する。
port: 587, secure: true,
メッセージは以下のようなものが表示される。
Error: 47437359817600:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:827: code: 'ECONNECTION', command: 'CONN' }
587を指定しているのに465が強制される
これは、Nodeでさくらのメールを使うを読むまでは全くわからなかった。
そのため、以下のように設定を行う。
const transporter = mail.createTransport({ host: 'XXX.sakura.ne.jp', port: 587, secure: false, requireTLS: true, auth: { user: 'username', pass: 'password' } });
海外のサービスからアクセスする際は注意
海外からさくらに対してアクセスさせる際は注意しなければならない。 具体的には、私はfirebse functionsのusリージョンからアクセスをさせようとしていたため、エラーが発生した。 メッセージは以下。
Error: Mail command failed: 550 5.7.1
これを回避するには、さくらの国外IPアドレスのフィルタを無効にする必要がありそう。 無効にするにはドキュメントをを参照。 (他人のサーバなのでこれ以上は試していない)