PHPMail发送附件但它们是空的

Jon*_*rft 6 php

基本上,我试图通过PHPMail发送PDF.电子邮件已发送,我完全接收到了Outlook.问题是附件被破坏而且没有打开.我甚至尝试发送HTML并且也是空的.

我尝试在论坛中进行研究,尝试了几个"工作代码",其他人也使用了这段代码...我不知道为什么不能为我工作.我使用最新版本的PHPMail 5.2.2

$mail = new PHPMailer();
        $staffEmail = "staffemail";
        $mail->From = $staffEmail;
        $mail->FromName = "name";
        $mail->AddAddress('my@email.com');
        $mail->AddReplyTo($staffEmail, "name");

        $mail->AddAttachment('test.pdf');
        $mail->Subject = "PDF file attachment";

        $mail->Body = "message!";
        $mail->Send();
Run Code Online (Sandbox Code Playgroud)

I'm*_*ker 7

这个自定义PHP函数将向(开始)PHP开发人员展示如何构建带附件功能的电子邮件脚本.请注意,邮件功能内部没有可用的验证功能.

<?php
function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
    $file = $path.$filename;
    $file_size = filesize($file);
    $handle = fopen($file, "r");
    $content = fread($handle, $file_size);
    fclose($handle);
    $content = chunk_split(base64_encode($content));
    $uid = md5(uniqid(time()));
    $name = basename($file);
    $header = "From: ".$from_name." <".$from_mail.">\r\n";
    $header .= "Reply-To: ".$replyto."\r\n";
    $header .= "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
    $header .= "This is a multi-part message in MIME format.\r\n";
    $header .= "--".$uid."\r\n";
    $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
    $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $header .= $message."\r\n\r\n";
    $header .= "--".$uid."\r\n";
    $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here
    $header .= "Content-Transfer-Encoding: base64\r\n";
    $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
    $header .= $content."\r\n\r\n";
    $header .= "--".$uid."--";
    if (mail($mailto, $subject, "", $header)) {
        echo "mail send ... OK"; // or use booleans here
    } else {
        echo "mail send ... ERROR!";
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

接下来,我们将展示如何使用此函数发送带有一个附加zip文件的电子邮件的示例:

<?php    $my_file = "somefile.zip";
    $my_path = $_SERVER['DOCUMENT_ROOT']."/your_path_here/";
    $my_name = "Olaf Lederer";
    $my_mail = "my@mail.com";
    $my_replyto = "my_reply_to@mail.net";
    $my_subject = "This is a mail with attachment.";
    $my_message = "Hallo,\r\ndo you like this script? I hope it will help.\r\n\r\ngr. Olaf";
    mail_attachment($my_file, $my_path, "recipient@mail.org", $my_mail, $my_name, $my_replyto, $my_subject, $my_message);
?>
Run Code Online (Sandbox Code Playgroud)

您是否在寻找发送多个附件的脚本?试试我们的邮件附件类脚本.

如果您想通过SMTP和Gmail发送网站邮件,请查看我们的PHPMailer教程.


the*_*azz 2

我建议您将文件上传到服务器,然后将其附加到电子邮件中。例如,您可以使用以下步骤:

  1. 上传文件
  2. 将其附加到电子邮件中
  3. 发送电子邮件
  4. 从服务器删除该临时文件

尝试这个,因为我认为这就是你的问题的原因。

以防万一: http: //php.net/manual/en/features.file-upload.php

祝你好运