使用 Gmail SMTP 通过 PHP 发送电子邮件
我有一个问题,我已经研究了大约一周但找不到答案。作为这一切的序言,我在互联网上搜索了各种各样的东西。这个问题有很多答案,但似乎没有一个对我有帮助。
我对 PHP 和很多我想要的东西有点陌生(过去几个月一直在使用它)。让我来谈谈问题的根源:
我在学校网络上,在宿舍里设置了自己的服务器。我正在创建一个网站,需要验证用户的电子邮件,但基本的 PHP mail() 函数不起作用。我被告知我需要使用 SMTP。所以我决定最简单、最便宜的方法是使用 Gmail SMTP。为此,我在 Gmail 上创建了一个名为[电子邮件受保护]的帐户。这是代码。
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, $);
我尝试过打印错误,但我不知道现在该怎么办。任何提示和帮助将不胜感激。谢谢!!
I have a problem I have been working on for about a week and can't find an answer. As a preface to this all, I have searched the internet for all sorts of things. There are a lot of answers for this problem, but none seem to be helping me.
I am somewhat new to PHP and a lot of the stuff I am asking for (been using it over the past few months). Let me get to the base of the problem:
I am on a school network with my own server set up in my dorm room. I am creating a website where I need to verify a user's email, but the basic PHP mail() function does not work. I have been told that I will need to use SMTP. So I decided the easiest and cheapest way was with Gmail SMTP. I created an account on Gmail called [email protected] for this reason. Here is the code.
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.";
So basically the code just stops at the line:
$mail = $smtp->send($to, %headers, $);
I have tried printing errors, but I just have no idea what to do now. Any tips and help is appreciated. Thanks!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用此类: http:// /www.phpclasses.org/package/14-PHP-Sends-e-mail-messages-via-SMTP-protocol.html
我使用的示例代码:
Use this class: http://www.phpclasses.org/package/14-PHP-Sends-e-mail-messages-via-SMTP-protocol.html
The sample code I use:
如果您使用 Linux,我建议您在本地计算机上设置 postfix,他们要求通过外部 SMTP 服务(在您的情况下为 Gmail)转发电子邮件。
http://bookmarks.honewatson.com/2008/04/ 20/postfix-gmail-smtp-relay/
原因是,如果联系 Gmail 出现延迟,您的 PHP 脚本可能会超时。因此,您可以使用 Postfix 在本地服务器上对电子邮件进行排队,让 PHP 脚本执行停止,并信任 Postfix 通过 Gmail 发送电子邮件。
如果您使用的是 Windows,我相信您可以找到等效的 SMTP 中继应用程序(应该作为粗略的猜测来构建)。
If you are you using Linux I recommend setting up postfix on your local machine and they asking that to relay the email forwards via an external SMTP service, in your case Gmail.
http://bookmarks.honewatson.com/2008/04/20/postfix-gmail-smtp-relay/
The reason is that your PHP script can timeout incase there's a delay contact Gmail. So you would use Postfix to queue the email on the local server, let the PHP script execution die and trust Postfix to send the email via Gmail.
If you are using Windows, I am sure you can find an equivalent SMTP relay application (should be built as a rough guess).
许多公共网络会阻止 SMTP 端口上与远程计算机的连接,以阻止网络内的垃圾邮件发送者。
您有两种选择:
Many public networks block connections on the SMTP port to remote machines to stop spammers inside their network.
You have two choices:
我总是使用这个使用 gmail 作为 SMTP 服务器发送邮件。
配置非常简单
I always use this to send mails using gmail as SMTP server.
Very Simple to configure