使用 PHP mail() 函数附加文件并从下载邮件中读取该文件时出现问题

发布于 2024-09-18 04:40:10 字数 1836 浏览 1 评论 0原文

我正在使用 PHP 邮件功能通过 Attachemnet 发送邮件。我成功地将文档附加到邮件中,并在邮件中收到了它。我的问题是当我尝试阅读文档时出现错误。如果我下载了文档并打开文档我看不到附件中的文本。这是编码...

$fileatt = '../'.$_POST['path']; // Path to the file
  $fileatt_type = "application/octet-sdiveam"; // File Type
  $fileatt_name = $_POST['attachfile']; 
  $email_from = '[email protected]'; // Who the email is from
  $email_subject = $_POST['Subject']; // The Subject of the email
  $email_txt = $_POST['Subject']; // Message that the email has in it

  $email_to = $_POST['To']; // Who the email is to

   $headers = "From: ".$email_from;

  $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}\"";

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

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

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


  $ok = @mail($email_to, $email_subject, $email_message, $headers);

这是正确的方法吗?为什么我无法阅读该文档?我不知道。请帮助我。谢谢提前。

已解决:

问题是拼写错误。
Content-divansfer-Encoding: 应为Content-Transfer-Encoding:

I am sending a mail with the attachemnet using the PHP mail function.I suceessfully attached the document to mail and I got it in the mail.My problem is when I try to read the document I got an error.If I downloaded the document and open the document I cant the see the text in the attached document.Here is the coding...

$fileatt = '../'.$_POST['path']; // Path to the file
  $fileatt_type = "application/octet-sdiveam"; // File Type
  $fileatt_name = $_POST['attachfile']; 
  $email_from = '[email protected]'; // Who the email is from
  $email_subject = $_POST['Subject']; // The Subject of the email
  $email_txt = $_POST['Subject']; // Message that the email has in it

  $email_to = $_POST['To']; // Who the email is to

   $headers = "From: ".$email_from;

  $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}\"";

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

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

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


  $ok = @mail($email_to, $email_subject, $email_message, $headers);

Is it the correct way?Why i can't read the document?I dont know.Please help me on this.Thanks in advance.

SOLVED:

Problem is spelling mistake.
Content-divansfer-Encoding: Should be Content-Transfer-Encoding:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

战皆罪 2024-09-25 04:40:10

我建议使用 pear 的 mail 和 mail_mime 库来使这个过程变得更加容易和干净。

I would have recommended using pear's mail and mail_mime libraries to make this process significantly easier and cleaner.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文