0

以下のコードは、GMAIL、YAHOO、HOTMAIL に送信する場合はメッセージのフォーマットを保持しますが、Outlook または Mozilla Thunderbird からアクセスして空のメッセージを表示する場合は逆になります。

N2blr を試してみましたが、正しい結果が得られました。

何か案が?

$fp = fopen($attachment_temp, "rb");
$file = fread($fp, $attachment_size);

$file = chunk_split(base64_encode($file));
$num = md5(time());

//Normal headers

$headers  = "From: ".$namefrom."<".$mailhost.">\r\n";
$headers .="Reply-To: ".$emailfrom."\r\n";
$headers  .= "MIME-Version: 1.0\r\n";
$headers  .= "Content-Type: multipart/mixed; ";
$headers  .= "boundary=".$num."\r\n";
$headers  .= "--$num\r\n";

// This two steps to help avoid spam

$headers .= "Message-ID: <".gettimeofday()."   TheSystem@".$_SERVER['SERVER_NAME'].">\r\n";
$headers .= "X-Mailer: PHP v".phpversion()."\r\n";

// With message

$headers .= "Content-Type: text/html; charset=iso-8859-1\r\n";
$headers .= "Content-Transfer-Encoding: 8bit\r\n";
$headers .= "".$message."\n";
$headers .= "--".$num."\n";

// Attachment headers


$headers  .= "Content-Type:".$attachment_type." ";
$headers  .= "name=\"".$attachment_name."\"r\n";
$headers  .= "Content-Transfer-Encoding: base64\r\n";
$headers  .= "Content-Disposition: attachment; ";
$headers  .= "filename=\"".$attachment_name."\"\r\n\n";
$headers  .= "".$file."\r\n";
$headers  .= "--".$num."--";
4

1 に答える 1

0

ここにエラーがあるようです:

$headers .= "Content-Type: text/html; charset=iso-8859-1\r\n"; $headers .= "Content-Transfer-Encoding: 8bit\r\n"; $headers .= "".$message."\n"; $headers .= "--".$num."\n";

3行目は読むべきです

$headers .= "\r\n".$message."\n";

一部のサーバーがこの種のエラーから回復できる場合でも. また、より完全な国際化サポートのために、ISO-8859-1 から UTF-8 に移行することもできます。

于 2013-10-12T09:32:22.777 に答える