在 PHP 中,如何发送带有附件的 HTML 电子邮件?

Posted

技术标签:

【中文标题】在 PHP 中,如何发送带有附件的 HTML 电子邮件?【英文标题】:In PHP, how can I send an HTML email with an attachment? 【发布时间】:2011-10-05 08:16:49 【问题描述】:

我有一个发送给自己并允许人们附加文件的表格。但我似乎不允许在消息中使用 html。我想我需要两种不同的 Content-Type:

        $to     = "my@email.com"; // Webmaster
        $subj   = "Great Subject";
        $message = strip_tags($_POST['message']);
        $attachment = chunk_split(base64_encode(file_get_contents($_FILES['attachment']['tmp_name'])));
        $filename = $_FILES['attachment']['name'];
        $boundary =md5(date('r', time())); 
        $headers = "From: $fname $lname <$email>\r\nReply-To: $fname $lname <$email>";
        $headers .= "\r\nMIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"_1_$boundary\"";
        $message .= "Here is your <strong>File</strong>.".\r\n" ;
        $message .= "This is a multi-part message in MIME format.

--_1_$boundary
Content-Type: multipart/alternative; boundary=\"_2_$boundary\"

--_2_$boundary
Content-Type: text/plain; charset=\"iso-8859-1\"
Content-Transfer-Encoding: 7bit

$message

--_2_$boundary--
--_1_$boundary
Content-Type: application/octet-stream; name=\"$filename\" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment 

$attachment
--_1_$boundary--";

        mail($to, $subj, $message, $headers);

【问题讨论】:

看到这个 - webcheatsheet.com/php/send_email_text_html_attachment.php 【参考方案1】:

使用诸如PHPMailer 之类的类,因为这样会更简单。

【讨论】:

@Simpsons 乍一看似乎是这样,但是您花在测试和调试自己的代码上的时间会更多。我是根据经验说的。 @Simpsons:如果这个类对于这么小的任务来说似乎有很多工作,那么你的代码似乎太可怕了,无法在这么短的时间内修复。我会分享我的美容课,但是您甚至都懒得阅读和理解您的代码,也无法尝试很好地格式化它,以免伤害我们的眼睛。 @Simpsons,您不能在学习使用简单的 PHPMailer 类的同时涵盖所有问题和问题……就这样做吧!

以上是关于在 PHP 中,如何发送带有附件的 HTML 电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章

PHP 发送带有 PDF 附件的电子邮件

如何使用带有附件的 PEAR Mail 包使用 PHP 发送电子邮件

如何从 PHP 表单发送带有附件的电子邮件?

在php中发送带有多个附件的电子邮件

PHP发送带有文件附件的电子邮件 - 电子邮件根本不发送

使用 S/MIME (PHP) 发送带有附件的电子邮件