ヘッダーが特定の長さに達すると、私の PHPmail()
は常にメールの送信を停止します。From
ヘッダーにキリル文字を使用してFrom
いるので、エンコードするwindows-1251
必要があります (これは、サポートする必要があるすべての HTML メール クライアントで機能すると思われる唯一のエンコードです)。
だから、私のコード:
$to = 'myemail@test.com';
$subject = 'Cyrillic subject goes here';
$message = $letterbody; //letterbody gets form data and packs it into nice table
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Transfer-Encoding: 8bit\r\n";
//takes Lastname of the person registering, encodes it so all the clients can read, takes its email address
$headers .= "From: =?windows-1251?B?".base64_encode($lastname)."?= <$email>\r\n";
$headers .= "Content-type: text/html; charset=\"windows-1251\"\r\n";
mail($to,"=?windows-1251?B?".base64_encode($subject)."?=",$message,$headers);
たとえば、$email
変数をtest@test.com
に設定 $lastname
し、「tttt」に設定します。メールが送信され、$headers
次のようになります (var_dump()
送信直前から取得)。
MIME バージョン: 1.0
Content-Transfer-Encoding: 8 ビット
From: =?windows-1251?B?dHR0dHQ=?=
Content-type: text/html; charset="windows-1251"
同じメールアドレスに「t」をもう1つ追加すると
$email = test@test.com;
$lastname = "tttttt"
メールは送信されず、次の$headers
ようになります。
MIME バージョン: 1.0
Content-Transfer-Encoding: 8 ビット
From: =?windows-1251?B?dHR0dHR0?=
Content-type: text/html; charset="windows-1251"
他に何ができるかわかりません。のエンコーディングがない場合は$lastname
正常に動作しているように見えますが、Ubuntu 13 の Postfix などの一部の電子メール クライアントでは読み取れません。
Postfixに何らかの$headers
制限を設定する必要があるのではないでしょうか?