使用Pear Mail发送纯文本和HTML电子邮件(如何设置“内容类型”并正确使用边界)

时间:2016-08-03 15:02:56

标签: php email pear

我正在尝试开发一个发送可以在我网站的各个部分使用的电子邮件的功能。我希望电子邮件经过SMTP身份验证,所以我正在使用Pear。

我的函数的参数设置为确定电子邮件应该是纯文本,html还是作为两者发送(多部分/替代)....

    if($set_content_type == 'text'){
        $content_type = 'text/plain';
    } elseif($set_content_type == 'html'){
        $content_type = 'text/html';
    } elseif($set_content_type == 'html_and_text'){
        $boundary = uniqid();
        $content_type = 'multipart/alternative; boundary=' . $boundary;
    }

然后我使用Mail_mime发送电子邮件......

    $mime = new Mail_mime();
    $mime->setHTMLBody($html);
    $mime->setTXTBody($text);
    $body = $mime->get();

    $host = "myhost";
    $port = "25"; // 8025, 587 and 25 can also be used.

    $username = "myusername";
    $password = "mypassword";

    $headers = array (
        'From' => $from,
        'To' => $to,
        'Subject' => $subject,
        'Content-Type:' => $content_type);

    $headers = $mime->headers($headers);
    $smtp = Mail::factory('smtp',
    array ('host' => $host,
        'port' => $port,
        'auth' => true,
        'username' => $username,
        'password' => $password));

    $mail = $smtp->send($to, $headers, $body);  

我的问题/问题:在此代码中,我可以将消息的各个部分设置为遵循multipart / alternative mime类型并正确使用边界,就像这个答案(Different Content Types in email)中所示的那样?

1 个答案:

答案 0 :(得分:1)

您必须在$ mime对象上设置ContentType

$mime = new Mail_mime();
$mime->setHTMLBody($html);
$mime->setTXTBody($text);
$mime->setContentType($content_type);
$body = $mime->get();

现在我建议您使用另一个邮件,而不是来自梨的邮件。 Pear有点像旧的数据包管理器,有些应用程序停止像PHPUnit和Symfony那样支持它。

最好使用另一个可以通过composer安装的。您可以查看Swiftmailer