我正在尝试在我的 hostgator 服务器上使用 Pear 邮件。首先,我使用 cpanel 安装了邮件包,并且已经安装了 net_smpt,但是当我需要 Mail.php 类时,它坚持认为 Net 文件夹位于 Mail 文件夹中——它们之前都处于同一级别。所以我把 Net 移到 Mail 里面,它就不再抱怨了——但也许我把一切都搞砸了(也许不是:让我知道)。
这是我的测试脚本,大部分是从教程中复制的:
<?php
echo 'Test Pear<br>';
require_once("/home3/myaccountname/php/Mail.php");
$from = "info@mydomain.com";
$to = "myrealemail@gmail.com";
$subject = "Test pear";
$body = "Lorem ipsum dolor sit amet, consectetur adipiscing elit...";
$params['host'] = 'gator3015.hostgator.com';
$params['port'] = '465';
$params['username'] = 'info@mydomain.com';
$params['password'] = 'mypassword';
$params['debug'] = 'true';
$headers = array('From' => $from, 'To' => $to, 'Subject' => $subject);
$smtp = Mail::factory('smtp', $params);
echo 'good so far';
$mail = $smtp->send($to, $headers, $body);
echo 'Still there';
if ( PEAR::isError($mail) ) {
echo("<p>Error sending mail:<br/>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message sent.</p>");
}
?>
SMTP 参数已使用 codeigniter 电子邮件类进行了测试,它们成功发送电子邮件(但由于 cronjobs 和 codeigniter 拒绝为我工作,我正在尝试使用 Pear Mail 代替)。它需要 SSL,但显然它在默认情况下与 Pear Mail 一起使用。
我已确保为我的测试显示 PHP 错误消息。发生的情况是,我看到除了“仍然存在”之外的所有回声,所以当我打电话时出现问题$smtp->send()
。但是,尽管将 debug 设置为 true,但不会显示错误消息。if(PEAR::isError($mail))
似乎也没有任何效果。并且没有发送电子邮件。
所以我有点不知所措,不知道出了什么问题。任何想法?
更新:主机由于某种原因不支持 SMTP,这就解释了为什么我有这个奇怪的问题。使用 Mandrill 效果很好。