1

我正在尝试在我的 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 效果很好。

4

1 回答 1

0

试试这个例子,

<?php
 require_once "Mail.php";

 $from = "Sandra Sender <sender@example.com>";
 $to = "Ramona Recipient <recipient@example.com>";
 $subject = "Hi!";
 $body = "Hi,\n\nHow are you?";

 $host = "mail.example.com";
 $username = "smtp_username";
 $password = "smtp_password";

 $headers = array ('From' => $from,
   'To' => $to,
   'Subject' => $subject);
 $smtp = Mail::factory('smtp',
   array ('host' => $host,
     'auth' => true,
     'username' => $username,
     'password' => $password));

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

 if (PEAR::isError($mail)) {
   echo("<p>" . $mail->getMessage() . "</p>");
  } else {
   echo("<p>Message successfully sent!</p>");
  }
 ?>

还有这个,

<?php
 require_once "Mail.php";

 $from = "Sandra Sender <sender@example.com>";
 $to = "Ramona Recipient <recipient@example.com>";
 $subject = "Hi!";
 $body = "Hi,\n\nHow are you?";

 $host = "ssl://mail.example.com";
 $port = "465";
 $username = "smtp_username";
 $password = "smtp_password";

 $headers = array ('From' => $from,
   'To' => $to,
   'Subject' => $subject);
 $smtp = Mail::factory('smtp',
   array ('host' => $host,
     'port' => $port,
     'auth' => true,
     'username' => $username,
     'password' => $password));

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

 if (PEAR::isError($mail)) {
   echo("<p>" . $mail->getMessage() . "</p>");
  } else {
   echo("<p>Message successfully sent!</p>");
  }
 ?>
于 2013-07-22T05:07:47.317 回答