1

PHPスクリプトを介してマルチパート/代替MIME電子メールを送信しようとしています...すべて正常に動作しますが、エンコーディングに問題があります! メール クライアントで、電子メール本文の強調文字が正しく表示されない! この問題を解決するためにボディをどのようにエンコードできますか? ...私は使用しようとしました..

utf8_encode($body)

良い結果がなければ!

未加工の形式の電子メールで、アクセント記号が =XX (XX は英数字) に置き換えられていることに気付きました... どうすればよいですか?

前もって感謝します!

これはコードです:

$header = "From: \n";
$header .= "Reply-To: \n";
$header .= "Content-Type: multipart/alternative; boundary=$alt_boundary\n"; 
$header .= "Mime-Version: 1.0\n";
$header .= "X-Mailer: PHP/".phpversion()."\n";

$body .= "\n".wordwrap($txt_body, 70);

$body .= "\n\n--$alt_boundary\n";
$body .= "Content-Type: multipart/mixed; boundary=$mixed_boundary\n";

$body .= "\n\n\n--$mixed_boundary\n";
$body .= "Content-Type: text/html; charset=utf-8\n";
$body .= "Content-Transfer-Encoding: 7bit\n";

$body .= "\n".wordwrap($html_body, 70);

$body .= "\n\n\n--$mixed_boundary\n";   
$body .= "Content-Disposition: attachment filename=\"test file\"\n";
$body .= "Content-Type: application/octet-stream; x-unix-mode=0644; name=\test file\"\n";
$body .= "Content-Transfer-Encoding: 7bit\n";

$body .="\n$file";

$body .= "\n\n--$mixed_boundary--";
$body .= "\n\n--$alt_boundary--"; 

mail($to, $subject, $body, utf8_encode($header));

編集:

$txt_bodyとは、次の$html_body2 つのファイルの内容です。

$txt_body = file_get_contents(...);
$html_body = file_get_contents(...);

そのファイルで、IPN を介して PayPal から受け取った情報の一部を置き換えます。電子メールを受信すると、IPN 情報で発生する強調表示のみが間違って表示されることに気付きました (つまり、ファイルの内容で置き換えた追加情報)。他の強調文字は正しく表示されます!!

どうすればこれを解決できますか?

解決済み:

私は問題を解決しました!utf8_encode() 関数は、教皇情報変数にのみ適用する必要があります。実際、$txt_body を utf8 でエンコードしようとしています... Paypal 変数は utf8 で 2 回エンコードされます。言い換えれば、私はそれを作った:

$txt_body = utf8_encode(file_get_contents(...));
$html_body = utf8_encode(file_get_contents(...));

$txt_body と $html_body よりも、IPN から受け取った情報を置き換えました!

ererybodyに感謝します!

4

2 に答える 2

2

その特定の部分のヘッダーで使用した文字エンコーディングを宣言する必要があります。

MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=boundary

--boundary
Content-Type: text/plain; charset=utf-8

This part uses UTF-8.
--boundary
Content-Type: text/plain; charset=iso-8859-1

This part uses ISO 8859-1.
--boundary--
于 2009-07-18T10:04:19.907 に答える
0

utf-8 でエンコードされたマルチパート メールはSwiftMailerで簡単に作成できます

$message->addPart($txt_body, 'text/plain', 'utf-8');
$message->addPart($html_body, 'text/html', 'utf-8');
$message->attach(Swift_Attachment::fromPath('/path/to/testfile'));
于 2009-07-18T12:20:18.030 に答える