我有一个问题,我一直在努力约一个星期,无法找到答案。作为这一切的前言,我在网上搜索了各种各样的东西。这个问题有很多答案,但似乎没有人帮助我。使用Gmail SMTP与PHP发送电子邮件
我对PHP有点新鲜,以及我所要求的很多东西(过去几个月一直在使用它)。让我来解决问题的基础:
我在一个学校网络上,在我的宿舍里设置了自己的服务器。我正在创建一个网站,我需要验证用户的电子邮件,但基本的PHP邮件()函数不起作用。我被告知我需要使用SMTP。所以我决定使用Gmail SMTP最简单,最便宜的方式。出于这个原因,我在Gmail上创建了一个名为[email protected]的帐户。这是代码。
echo "starting mail sending";
require_once("pear/share/pear/Mail.php");
echo "1";
$from = "PersonA `<[email protected]`>"; $to = "`<[email protected]`>"; $subject = "Activate your account"; $body = "Hey";
$host = "ssl://smtp.gmail.com"; $port = "465"; //also tried 587 $username = "[email protected]"; $password = "password";
echo "2";
$headers = array ('From' => $from, 'To' => $to, 'Subject' => $subject);
echo "3";
$mailer_params['host'] = $host; $mailer_params['port'] = $port; $mailer_params['auth'] = true; $mailer_params['username'] = $username; $mailer_params['password'] = $password;
$smtp = Mail::factory('smtp', $mailer_params);
echo "4";
error_reporting(E_ALL);
echo "5";
if (PEAR::isError($smtp)) { die("Error : " . $smtp->getMessage()); }
echo "6";
$mail = $smtp->send($to, $headers, $body) or die("Something bad happened");
echo "7";
if (PEAR::isError($mail)) {echo($mail->getMessage();} else {echo(Message successfully sent!);}
echo "mail sent hopefully.";
所以基本上代码只是停止在该行:
$mail = $smtp->send($to, %headers, $);
我曾尝试印刷错误,但我不知道现在该怎么办。任何提示和帮助表示赞赏。谢谢!!
是的,这是愚蠢的我。反正,我在哪里得到sasl.php文件?只有您链接的页面上包含smtp.php。或者它已经在我的服务器上了?我启用了SASL,并使用Ubuntu教程为我的后缀服务器启用SMTP和SASL授权。谢谢! – ingshtrom 2011-04-25 01:57:13
SASL包的链接位于该页面的某处。以下是直接链接:http://www.phpclasses.org/package/1888-PHP-Single-API-for-standard-authentication-mechanisms。html – Jorj 2011-05-12 11:51:31