PhpからGmailアカウントに送信されたメールの疑わしいmessage-idヘッダーがあります:
Message-Id: <[email protected]>
この奇妙なフォーマットがあり、SMTPIN_ADDED_MISSINGがここで何を意味するのか教えていただけますか?インターネットで見た例では、送信ドメインを含むこのような形式でしたが、何らかの理由でメッセージIDに含まれていません。
[email protected]
このヘッダーをZend_Mailに設定したとは思いません。このヘッダーを生成するものは何ですか?このヘッダーに問題がありますか?
適切な送信メールクライアントは、メールの送信時にMessage-ID
ヘッダーを生成する必要があります。 Googleは「ニース」であり、メッセージがメールシステムを通過するときに生成しますが、ほとんどの場合は生成されません。ほとんどのスパムフィルタは、メッセージがスパムである可能性が高いことを示すものとして、この欠落しているヘッダーを受け取ります。不正な形式または欠落しているヘッダーは、「スパムスコア」に追加されます。
生成するのは難しくありません。必要なのは、メッセージごとに一意であるということだけです。
$message-id = time() .'-' . md5($sender . $recipient) . '@' $_SERVER['SERVER_NAME'];
または
$message-id = time() .'-' . md5($sender . $recipient) . '@yourdomain.com';
与える:
[email protected]
Google SMTPは、欠落している場合にそれを生成します。このヘッダーは、最初のSMTPサーバーで設定する必要があります。だからあなたはそれを生成しません-グーグルは生成します。複数の配信を防ぎ、関連するメッセージをリンクするために使用されます。
メッセージIDヘッダーを設定する必要はありませんが、ほとんどの(すべてではありませんが、構成されているだけです)smtpがこのヘッダーを追加する(修正される可能性があります)のは良い習慣のようです。したがって、他の人によるこのヘッダーの生成を回避するために、自分で生成することができます。
これは私にとってはうまくいきます(私にとってもスパムの問題だったので、ヘッダーに「日付」行を追加しました)。 このコードの平和 に基づいています。
これが私のPHP配列アプローチ(PearのMailおよびMimeライブラリを使用)です:
$headers = array(
'From' => $from,
'Subject' => $subject,
'To' => $to,
'Cc' => '',
'Date' => date('r'),
'Message-ID' => sprintf("<%s.%s@%s>",
base_convert(microtime(), 10, 36),
base_convert(bin2hex(openssl_random_pseudo_bytes(8)), 16, 36),
'youdomain.com')
);
Olegが別の回答でコメントしたように、文字通り$_SERVER['SERVER_NAME']
の代わりに'youdomain.com'
を使用しても、phpcliでは機能しないことに注意してください。
tl; dr;電子メールを送信するときにポート25を使用せず、代わりにポート587を使用します
カスタム作成したgolangメールクライアントからポート25を使用して、宛先のメールアドレスがgmailまたはgoogle gsuite adddressのいずれかでローカルのPostfixサーバーに送信メールを送信していたとき、
Message ID <[email protected]>
gmailの宛先メールアドレスから見た場合Show Original
...ただし、golang電子メールクライアントとローカルpostfixサーバーの両方で完全なTLS証明書を使用しているため、アウトバウンド電子メールクライアントでポート25の使用を安全なポート587に置き換えると(postfixはすでにTLS証明書を使用していました)、適切な
Message ID <[email protected]>
注-メールヘッダーを定義することはありませんmessage-id
実際、私が使用しているgolangリポジトリには、そのヘッダーを定義するためのapi呼び出しがありません。
交換されたメッセージを追跡するために同じMessageIdを使用しています。
私はMessageIdを次のように修正します:
$mail->MessageID =sprintf('<%s@%s>', $myMessageID, 'myserver');