0

これは、doc ファイルが添付された電子メールを送信するために使用しているコードです。電子メールを受信して​​いますが、電子メールのコンテンツがエンコードされたテキスト形式で表示されています。

<?php

$to = $_POST['to'];
$from = $_POST['from'];
$subject = $_POST['subject'];
$message = $_POST['message'];


$fileatt = $_FILES['upload_file']['tmp_name'];
$fileatt_type = $_FILES['upload_file']['type'];//application/msword
$fileatt_name = $_FILES['upload_file']['name'];

$headers = "From: $from";

if (is_uploaded_file($fileatt)) {

$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);


$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";


$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";


$data = chunk_split(base64_encode($data));


$message .= "--{$mime_boundary}\n" .
"Content-Type: {$fileatt_type};\n" .
" name=\"{$fileatt_name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" .
"--{$mime_boundary}--\n";
}

mail($to, $subject, $message, $headers);
?>

受信メールはこんな感じ

message:This is a multi-part message in MIME format. --==Multipart_Boundary_x788f8ac40875c8c7a6540be6654be9c8x Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit --==Multipart_Boundary_x788f8ac40875c8c7a6540be6654be9c8x Content-Type: application/msword; name="File_name.doc" Content-Disposition: attachment; filename="File_name.doc" Content-Transfer-Encoding: base64 s pcEAW4AJBAAA+BK/AAAAAAAAEAAAAAAACAAAMhMAAA4AYmpiaqz6rPoAAAAAAAAAAAAAAAAAAAAA AAAJBBYAuEAAAM6QAQDOkAEAFwsAAAAAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAA AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAALcAAAAAAEgHAAAAAAAASAcAAIsU AAAAAAAAixQAAAAAAACLFAAAAAAAAIsUAAAAAAAAixQAADQAAAAAAAAAAAAAAP////8AAAAAvxQA AAAAAAC/FAAAAAAAAL8UAABoAAAAJxUAAEwAAABzFQAAbAAAAL8UAAAAAAAAj0UAAMYCAADfFQAA FgAAAPUVAAAQAAAABRYAAAAAAAAFFgAAAAAAAAUWAAAAAAAAJBcAACYAAABKFwAADAAAAFYXAAAI AAAADkUAAAIAAAAQRQAAAAAAABBFAAAAAAAAEEUAAAAAAAAQRQAAAAAAABBFAAAAAAAAEEUAACQA AABVSAAAogIAAPdKAAA8AAAANEUAABUAAAAAAAAAAAAAAAAAAAAAAAAAixQAAAAAAABeFwAAAAAA AAAAAAAAAAAAAAAAAAAAAAAkFwAAAAAAACQXAAAAAAAAXhcAAAAAAABeFwAAAAAAADRFAAAAAAAA AAAAAAAAAACLFAAAAAAAAIsUAAAAAAAABRYAAAAAAAAAAAAAAAAAAAUWAAAfAQAASUUAABYAAADc GgAAAAAAANwaAAAAAAAA3BoAAAAAAABeFwAADAEAAIsUAAAAAAAABRYAAAAAAACLFAAAAAAAAAUW AAAAAAAADkUAAAAAAAAAAAAAAAAAANwaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAXhcAAAAAAAAORQAAAAAAAAAAAAAAAAAA3BoAAAAAAADcGgAA pgEAAJY+AAAwAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkIAAAAAAAAFFgAAAAAAAP////8AAAAA0NGIQpry zAEAAAAAAAAAAL8UAAAAAAAAahgAACIAAADGPwAAJAAAAAAAAAAAAAAA+kQAABQAAABfRQAAMAAA AI9FAAAAAAAA6j8AAEACAAAzSwAAAAAAAIwYAABQAgAAM0sAAEgAAAAqQgAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAADNLAAAAAAAAAAAAAAAAAACLFAAAAAAAACpCAADQAgAAXhcAAAAAAABeFwAAAAAAANwa AAAAAAAAXhcAAAAAAABeFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXhcA AAAAAABeFwAAAAAAAF4XAAAAAAAANEUAAAAAAAA0RQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAA== --==Multipart_Boundary_x788f8ac40875c8c7a6540be6654be9c8x--

headers:From:  MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==Multipart_Boundary_x788f8ac40875c8c7a6540be6654be9c8x"

誰でも完璧なコードで私を助けることができます事前に感謝します

4

2 に答える 2

0

推測するのではなく、目前の問題を実際にデバッグして、自分で理由を見つけてください。

  1. 生成したメッセージ コンテンツをテキスト ファイルにダンプします。
  2. 電子メール クライアントで受信した有効なメッセージ コンテンツをファイル (メッセージの SOURCE コード) にダンプします。
  3. 両方のファイルを比較して、違いから答えを導き出してください。

それは本当にうまくいきます。

于 2013-04-15T05:24:54.163 に答える
0

PHP はデフォルトの utf-8 エンコーディングをサポートしていません。以下に示す関連するエンコーディング関数をヘッダーに渡す必要があります。

Replace your code 

Content-Type: text/plain; charset=\"iso-8859-1\"\n

to

"Content-Type:text/html;charset=utf-8"
于 2013-04-15T05:32:16.407 に答える