我正在尝试在hostgator服务器上使用Pear邮件。首先我使用cpanel安装了邮件包,并且已经安装了net_smpt,但是当我需要Mail.php类时,它坚持要求Net文件夹在Mail文件夹中 - 它们之前都处于同一级别。所以我在邮件中移动了Net并且它停止了抱怨 - 但也许我只是搞砸了一切(也许不是:让我知道)。
这是我的测试脚本,主要是从教程中复制的:
<?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工作正常。
答案 0 :(得分: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>");
}
?>