2013-04-15 44 views
0

发送带有附件显示的电子邮件这是代码正在使用发送与连接到一个doc文件的电子邮件, 正在接收电子邮件,但在电子邮件中的内容以编码的文本格式编码格式PHP

显示
<?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" 

因此,任何人可以帮我一个完美的代码 感谢ü提前

+0

给出有关使用的charset = UTF-8呢? –

+0

@Deepanshu没有它工作 –

+0

以及“Content-Transfer-Encoding:base64 \ r \ n \ r \ n”; ? 实际上我不知道7位是干什么的,只是试一试 –

回答

0

找出通过手真调试的问题,而不是猜测自己的理由:

  1. 转储你生成信息内容到一个文本文件中。
  2. 将您在电子邮件客户端收到的任何有效邮件内容转储到文件中(邮件源代码)。
  3. 比较两个文件,并从差异中获得答案。

确实有效。

0

PHP不支持默认UTF-8编码,则需要通过相关编码功能在以下到您的标题

Replace your code 

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

to 

"Content-Type:text/html;charset=utf-8" 
+0

“Content-Type:text/html; charset = utf-8”dnt工作 –

+0

编码的正常问题将与utf -8字符有关....但是,我尝试使用您的代码,并能够接收邮件正确的附件....我呼应$消息内容,并可以在浏览器上看到base64编码信息 – sandy

+0

如果您的消息正文与“$ _POST ['message']”有关,那么它工作得很好。 – sandy