【问题标题】:PHP SMTP Not working with Amazon SESPHP SMTP 不适用于 Amazon SES
【发布时间】:2014-03-31 18:11:45
【问题描述】:

我在使用 Amazon 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。奇怪的是它可以在我的本地主机上运行,​​并且仅当我尝试从我的机​​架空间实例连接时才会出现此错误。有没有人知道是什么原因造成的?

【问题讨论】:

  • 您是否验证了发送地址,并请求了生产访问权限? SES 是严格的,以阻止垃圾邮件发送者
  • 是的,所有这些都已完成。这段代码在我的本地运行时工作正常,但如果我把它放在 Rackspace 实例上,它就不起作用。这让我摸不着头脑。

标签: php amazon-web-services smtp rackspace


【解决方案1】:

使用您的实例验证您的网络设置。如果您使用 VPC,请检查您的子网和路由策略。

阻止从您的实例连接 ses smtp。

同时填写 Request to Remove Email Sending Limitations 以消除对端口 25 的一些限制

希望对你有帮助!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-23
    • 2012-06-26
    • 2014-05-05
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多