PEAR邮件,“无法设置发件人”

时间:2010-07-10 01:36:28

标签: email gmail pear

我有一个PHP邮件脚本,成功地向所有内容发送电子邮件但是GMail地址,所以现在我正在尝试用PEAR的Mail和Mail_Mime包创建一个可以发送给GMail的包。我得到的印象是,只有通过GMail的SMTP服务器连接才能发送消息。在尝试一个简单的测试脚本时,我收到以下错误:

  

无法将发件人设置为   [username@gmail.com]

地址没有问题,this site表示如果没有关于地址的错误格式化,那么这就是服务器连接问题。但是,在这种情况下,如何解决连接问题呢?或者还有别的我做错了吗?或者是否有另一种更简单的方法可以让PHP脚本成功发送邮件给GMail?

我的代码如下(显然电子邮件地址和密码已更改)

$from = "username@gmail.com";
$to = "username@gmail.com";
$subject = "Test";
$crlf = "\n";
$text = 'Text message';
$html = '<html><body>HTML message</body></html>';
$headers = array (
    'From' => $from,
    'Return-Path' => $from,
    'Subject' => $subject
);

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

$smtp = Mail::factory(
    'smtp',
    array (
        'host' => 'ssl://smtp.gmail.com',
        'port' => 465,
        'auth' => true,
        'username' => "username@gmail.com",
        'password' => "password",
        'debug' => true
    )
);

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

if (PEAR::isError($mail)) {
    echo("<p>" . $mail->getMessage() . "</p>");
    echo 'FAILURE';
} else {
    echo 'SUCCESS';
}

1 个答案:

答案 0 :(得分:1)

我无法想象为什么一个简单的username@gmail.com地址不起作用,所以它可能是另一个伪装成错误的错误。确保您没有意外地抑制错误消息(在调用send之前调用error_reporting(E_ALL))。

但要记住的一件事是,您不需要使用GMail的SMTP服务器向GMail地址发送邮件。您可以使用托管提供的一个效果。