【问题标题】:how to send html mails using PEAR mail如何使用 PEAR 邮件发送 html 邮件
【发布时间】:2010-11-24 14:36:34
【问题描述】:

我正在使用 PEAR 邮件系统发送经过身份验证的邮件。我需要发送带有链接的 HTML 邮件。在我开始使用 PEAR 邮件之前它工作正常。现在我无法发送 HTML 邮件。

邮件正文如下所示:

$body = <<<EOD

Hiya $username

You might be interested in the current 'haves' and 'wants' on example.com

Latest Haves
<a href="http://www.exmaple.com/product/have/64/Titan+Fast+Track+SunGlass">Titan Fast Track SunGlass</a>

EOD;

一个标签在邮件中出现。知道如何解决这个问题吗?请帮助..

【问题讨论】:

标签: php email pear


【解决方案1】:

如果你遵循这个例子,它没有理由不工作:

<?php
include('Mail.php');
include('Mail/mime.php');

// Constructing the email
$sender = "Leigh <leigh@no_spam.net>";// Your name and email address
$recipient = "Leigh <leigh@no_spam.net>"; // The Recipients name and email address
$subject = "Test Email";// Subject for the email
$text = 'This is a text message.';// Text version of the email
$html = '<html><body><p>HTML message</p></body></html>';// HTML version of the email
$crlf = "\r\n";
$headers = array('From' => $sender, 'Return-Path' => $sender, 'Subject' => $subject);

// Creating the Mime message
$mime = new Mail_mime($crlf);

// Setting the body of the email
$mime->setTXTBody($text);
$mime->setHTMLBody($html);

$body = $mime->get();
$headers = $mime->headers($headers);

// Sending the email
$mail =& Mail::factory('mail');
$mail->send($recipient, $headers, $body);
?>

注意:为了使上述示例正常工作,除了 Pear Mail 一个之外,还需要 Pear Mail Mime 包。你可以在这里https://pear.php.net/package/Mail_Mime/download 获取包裹。

【讨论】:

  • SMTP 服务器配置怎么样?,你有那个链接吗?
  • 嗨,我读到了pear.php.net/manual/en/package.mail.mail.send.php$headers 中有To。我想知道send() 方法和$headers 变量中的收件人电子邮件$recipient 有什么区别?有必要把To放在$headers里面吗?
  • @karim79 - 你能帮我处理一下stackoverflow.com/questions/39785613/…吗?
  • 你如何处理这个错误?如果电子邮件没有发送,或者 SMTP 服务器出现故障,会发生什么情况?此代码不考虑这两种情况。 (我提出这个是因为我正在寻找一个具有错误处理的示例。)
  • @John 我希望你能帮我解决这个问题stackoverflow.com/questions/58309553/… 谢谢
【解决方案2】:

请注意,由 karim79 发布的示例有一个 header 参数,可能会让您感到非常痛苦: “返回路径” - 当我像示例一样包含此参数时,它阻止我添加发件人名称,只有发件人电子邮件地址有效。

特别是(当我添加调试参数以查看发生了什么时)在 from 名称周围添加了额外的尖括号,因此它试图将其发送到 smtp 服务器:

发件人:> 或
发件人:> 当我尝试使用引号时。
这会导致 smtp 连接因地址无效错误而退出。

此外,当使用 mime_mail 类时,您需要在标头中指定“To:”参数,否则当您收到它时,它似乎被发送到未公开的地址。因此,将 Return-Path 参数替换为 To 参数即可。

【讨论】:

    【解决方案3】:

    您的标题是什么样的?这是我的:

    $headers = array(
        'To' => $recipients,
        'From' => $adminEmail,
        'Subject' => $subject,
        'MIME-Version' => 1,
        'Content-type' => 'text/html;charset=iso-8859-1'
    );
    

    【讨论】:

    猜你喜欢
    • 2011-04-10
    • 2015-04-09
    • 2011-11-13
    • 2018-01-10
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多