【问题标题】:PHP Pear Mail HTML VersionPHP 梨邮件 HTML 版
【发布时间】:2015-11-20 18:09:12
【问题描述】:

我只能发送带有文本的电子邮件,但没有一个脚本可以发送 HTML。我已关闭身份验证,谷歌应用正在根据服务器 IP 进行身份验证

$message = 'Blah blah blah';


require_once "Mail.php";
$from = "mycompany <service@mycompany.com>";
$to = $fName.$lName." <".$email.">";
$subject = "Hello from mycompany!";
$body =

'Dear '.$fName.',

Thank you for your interest in mycompany. We have received your inquiry and will contact you within 24 hours.

Thanks,

Timothy Elliott - Owner/CEO mycompany';

                      $host = "tls://smtp-relay.gmail.com";
                      $port = "465";
                      $username = "";
                      $password = "";
                      $headers = array (
                        'From' => $from,
                        'To' => $to,
                        'Subject' => $subject);
                      $smtp = Mail::factory('smtp',
                        array ('host' => $host,
                          'port' => $port,
                          'auth' => false,
                          'username' => $username,
                          'password' => $password));
                      $mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
 echo("There was an error, please try again.");
}

此代码运行良好,但我无法将其作为 HTML 消息发送。

【问题讨论】:

  • 使用 Pear Mail 发送 HTML 邮件并不容易。你可以考虑使用swiftmailer.orgframework.zend.com/manual/current/en/modules/…
  • 哦,很高兴知道!虽然我在共享服务器上,但无法安装任何脚本 :( Dang fatcow!! :(
  • 无需安装。您可以将 Zend Mail 和 Swift Mailer 与您自己的 PHP 脚本并行上传。它们不需要在服务器端进行任何特殊设置。
  • PHPMailer 怎么样?
  • 是的。 PHP 邮件程序只是您需要包含的两个类文件。它支持 html 和内联图像。

标签: php html email pear


【解决方案1】:

使用 PEAR Mail 很容易做到 - 您只需要使用 PEAR Mail_Mime 对外发电子邮件的 HTML 部分进行编码。

Here's an example of how.

为此扩展您的代码,它应该类似于:

<?php
require_once "Mail.php";
require_once "Mail/mime.php";

$from = "mycompany <service@mycompany.com>";
$to = $fName.$lName." <".$email.">";
$subject = "Hello from mycompany!";
$html = <<< HTML
<b>Dear $fName</b>,
<p>
Thank you for your interest in mycompany. We have received your inquiry and will contact you within 24 hours.
</p>
Thanks,<br/>

<i>Timothy Elliott - Owner/CEO mycompany</i>
HTML;

$host = "tls://smtp-relay.gmail.com";
$port = "465";
$username = "";
$password = "";
$headers = [
    'From' => $from,
    'To' => $to,
    'Subject' => $subject
];

$crlf = "\n";
$mime = new Mail_mime(['eol' => $crlf]);
$mime->setHTMLBody($html);
$body = $mime->get();
$headers = $mime->headers($headers);


$smtp = Mail::factory('smtp',
    [
    'host' => $host,
    'port' => $port,
    'auth' => false,
    'username' => $username,
    'password' => $password
    ]
);
$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
    echo("There was an error, please try again.");
}

【讨论】:

  • html 部分中的某些内容给了我 PHP 错误...我在脚本末尾意外结束
  • 如果您使用 heredoc 表示法来设置 HTML,您需要确保结束标记 "HTML;"位于行首,前面没有空格/制表符。
猜你喜欢
  • 2013-10-18
  • 2011-10-21
  • 2013-10-05
  • 2011-10-03
  • 2011-06-04
  • 2019-04-28
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多