我在使用Amazons SES通过SMTP发送电子邮件时遇到了问题。我的代码相对简单,如下所示:
require_once "Mail.php";
require_once 'Mail/mime.php';
$stmp_info= array (
'host' => 'ssl://email-smtp.us-east-1.amazonaws.com',
'port' => 465,
'auth' => true,
'username' => 'xxxxxx',
'password' => 'xxx'
);
$headers = array (
'From' => 'sender@example.com',
'To' => 'test@example.com',
'Subject' => 'Test Message'
);
$mime = new Mail_mime("\n");
$mime->setTXTBody('Hello World');
$mime->setHTMLBody('<p>Hello World</p>');
$body = $mime->get();
$headers = $mime->headers($headers);
$smtp = Mail::factory('smtp', $stmp_info);
$mail = $smtp->send('test@example.com', $headers, $body);
问题是我总是得到这样的错误:
Failed to connect to email-smtp.us-east-1.amazonaws.com:465 [SMTP: Invalid response code received from server (code: -1, response: )]
但这适用于测试连接:
[root@job-server-1 ~]# $ echo quit | nc -v email-smtp.us-east-1.amazonaws.com 25
-bash: $: command not found
Connection to email-smtp.us-east-1.amazonaws.com 25 port [tcp/smtp] succeeded!
220 email-smtp.amazonaws.com ESMTP SimpleEmailService-376766033
然而,如果我对该地址执行ping操作,则无法正常工作。我尝试过tls和ssl的25、465和587端口。奇怪的是,它在我的本地主机上工作,只有当我尝试从我的rackspace实例连接时,才会出现这个错误。有没有人知道是什么导致了这种情况?
发布于 2014-03-31 10:11:45
通过实例验证您的网络设置。如果您使用的是私有网络,请务必检查您的子网和路由策略。
它阻止从你的实例连接ses smtp。
还要填充对Remove Email Sending Limitations的请求,以取消对端口25的一些限制
希望它能有所帮助!!
https://stackoverflow.com/questions/16726018
复制