メールがうまく配信されません。
うまく配信されませんというのは、
そもそも誰にもメールが送られない、CCの全員に送られない、その他のどれなんでしょうか?
これは回答者という他人から質問文の状況を読むだけでは全くわかりません。
なので問題の切り分けをしっかりするようお願いします。
このフェイズに到達しないと何も手助けは出来ません。
とりあえず3点を確認してみてください。
- メール送信実行のコールバック関数にデバッグプリントを仕込む
- オブジェクトは同名のキーを2つ所持できない
- ISPなどの制限でメールが送信できない可能性がある
メール送信実行のコールバック関数にデバッグプリントを仕込む
それが動作したのか、してないのかを確認することは非常に重要です。
下記のようなコードに変更してみてください。
js
1smtp.sendMail(message, function(error, info){
2 if (error) console.error(error);
3 console.log(info);
4});
オブジェクトは同名のキーを2つ所持できない
js
1var message = {
2 from: 'aaa@bbb.com',
3 to: req.session.mail_address1,
4 cc: cc1,
5 cc: cc2, // <- この行がアウト
6
7 subject: 'subjectに関する件',
8 text: '本文記載'
9};
表題の通りです。
Chromeのコンソールで確認してみましょう。
> {a: 123, a: 234}
{a: 234}
潰れて後のキーだけしか存在できていない事が確認できます。
上の方でvar cc2 = 'xxx@yyy.com;www@qqq.com';
としているように
;
で区切れば複数のメールアドレスを指定できるようなので、
cc: cc1 + ';' + cc2,
という風にすれば動作するのではないでしょうか?
もしこのcc1が空かもしれない!ということであれば、
三項演算子を使って
cc: (cc1 ? cc1 + ';' : '')
+ cc2,`みたいにすれば解決するでしょう。
ISPなどの制限でメールが送信できない可能性がある
最後、これはプログラミングのコードの問題とは異なりますが、
インターネットでは様々な迷惑メールが飛び交っています。
インターネットを利用するだけで誰でも簡単にメールが送信できると
悪意のユーザーが捨てプロバイダからメールを全世界に送信しまくるみたいな事が可能になってしまいます。
そこで、ISO(インターネットサービスプロバイダ)のうち、
個人利用の回線の多くは好き勝手にメールが送信できないよう制限がかけられています。
まずCC部分が正常に動作しないのか?そもそもメールが送信出来ないのか?
……という風に問題を切り分けて考えるようにしてみてください。
【追記】 CCの指定内容
そもそもCCが;
区切りって何を見て決めたんですか?
ちょっと調べてみましょう。
ソースコードにはnodemailer
という変数が存在します。
これってこのライブラリを指していますか?
https://nodemailer.com/about/
もしそうなら;
が問題で確定でしょうね。
「Common fields」の「cc」には下記のように記載されています。
cc: Comma separated list or an array of recipients email addresses that will appear on the Cc: field
意訳: Ccフィールドに表示される受信者のメールアドレスのカンマ区切りリスト、または配列
英語能力カスの私が頑張った解読結果ではなく、
機械学習のすごいやつDeepLに翻訳させたので間違いはないでしょう。
許されるのは下記の2つです。
- カンマ区切り:
"a@example.com,b@example.com"
- 配列:
["a@example.com", "b@example.com"]
JavaScriptは文字列から配列を作るためのメソッドが用意されており、
splitを使う事で行なえます。
また、Node.jsはES2015に対応しているので
スプレッド構文が可能です。
配列に1個付け足すなど...
を使えば瞬殺です。
コードにするとこんな感じになるんですかね?
js
1const cc2 = 'xxx@yyy.com;www@qqq.com'.split(';')
2
3const message = {
4 cc: (cc1 ? [cc1, ...cc2] : cc2),
5}
こんな風に、有名どころのライブラリには
作者が残した使い方説明書(Usage)が引っ付いているので、
それを見る癖をつけるようにしてください。
英語で辛い?
1パラグラフ程度ならDeepL様が瞬殺で翻訳してくれるので大丈夫です。
デスクトップ版を入れておけばわからない文章をドラッグしてCtrl+Cを2回叩くだけで日本語になります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/03 09:09
2020/08/03 09:49
2020/08/03 23:40