「広告」

WordPress、お問い合わせフォームから、メールが届かない場合

「広告」
記事内に広告が含まれています。
「広告」

WordPressの「Contact Form 7」などのプラグインで、設定をしているが、メールが届かない!
という場合があります。

特に、宛先が、Gmailの場合が多いように感じます。

これは、メール送信時の「envelope from」をきちんと設定すると、Gmailに届くと思います。

「広告」

メール到達のための解決方法

新たにプラグインを入れる方法もありますが、ここでは、「functions.php」に処理を加える方法を書きます。

add_action('phpmailer_init', function($phpmailer){
  $phpmailer->SMTPKeepAlive = true;
  $phpmailer->Sender = '(実在するメールアドレス)';
});

↑上記の4行を追加します。
「実在するメールアドレス」には、管理者のドメイン、もしくは、管理者のメールアドレスを設定します。

設定をしない場合

設定をしない場合のメールログを見てみます。

postfix/qmgr[10550]: XXXXXXXXXXX: from=<動作ユーザ@ホスト名>, size=801, nrcpt=1 (queue active)
postfix/smtp[17445]: XXXXXXXXXXX: to=<管理者へ>, relay=XXXXXXXXXXX:25, delay=0.32, delays=0.02/0.02/0.06/0.21, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as XXXXXXXXXXX)
postfix/qmgr[10550]: XXXXXXXXXXX: removed

上記のように動作します。
ここで、重要なのは、「from=<動作ユーザ@ホスト名>」です。
www-data@server1
とか、になることもあります。

この「from(差出人)」は、システム上の差出人で、「envelope from」と呼ばれています。

Gmailに送る場合、Gmail側から見ると、この「envelope from」が通知されます。
「www-data@server1 からですよ」とGmail側に来ますが、Gmail側からすれば、「誰ですか?」となります。

実在する、「info@実在ドメイン名」なら、「あー、このドメインの方ね」とわかります。
上記の「www-data@server1」では、わかりません。
このため、Gmail側では、「迷惑メールだー」「スパムだー」となって、受け取ってくれません。

「広告」

設定をした場合

「functions.php」に

add_action('phpmailer_init', function($phpmailer){
  $phpmailer->SMTPKeepAlive = true;
  $phpmailer->Sender = '(実在するメールアドレス)';
});

をした場合

postfix/qmgr[10550]: XXXXXXXXXXX: from=<(実在するメールアドレス)>, size=801, nrcpt=1 (queue active)
postfix/smtp[17445]: XXXXXXXXXXX: to=<管理者へ>, relay=XXXXXXXXXXX:25, delay=0.78, delays=0/0/0.03/0.74, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as XXXXXXXXXXX)
postfix/qmgr[10550]: XXXXXXXXXXX: removed

と、「from」が、「functions.php」で指定をした、「実在するメールアドレス」になります。

これにより、迷惑メール(スパム)と疑われる事が少なくなります。

この「from」は、システム上の差出人であり、
メールソフト側から、みた、差出人は、
「Contact Form 7」で設定をした差出人となります。

タイトルとURLをコピーしました