【问题标题】:EC2 SES from php mail来自 php 邮件的 EC2 SES
【发布时间】:2014-01-22 12:13:01
【问题描述】:

向 SES 发送电子邮件

当我从命令提示符执行以下命令时,它可以工作并成功发送电子邮件

sudo /usr/sbin/sendmail -f test@gmail.com test@gmail.com

我遵循了这些指示 http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sendmail.html

当我从一个简单的 php 应用程序中尝试相同的操作时,我得到的结果是“服务不可用”

Jan  4 20:58:58 ip-10-252-22-51 sendmail[32217]: s04Kww8t032217: from=www-data, size=130, class=0, nrcpts=1, msgid=<201401042058.s04Kww8t032217@ip-10-252-22-51.us-west-2.compute.internal>, relay=www-data@localhost
Jan  4 20:58:58 ip-10-252-22-51 sm-mta[32218]: s04Kww3h032218: from=<www-data@ip-10-252-22-51.us-west-2.compute.internal>, size=475, class=0, nrcpts=1, msgid=<201401042058.s04Kww8t032217@ip-10-252-22-51.us-west-2.compute.internal>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Jan  4 20:58:58 ip-10-252-22-51 sendmail[32217]: s04Kww8t032217: to=test@gmail.com, ctladdr=www-data (33/33), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30130, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (s04Kww3h032218 Message accepted for delivery)
Jan  4 20:58:59 ip-10-252-22-51 sm-mta[32220]: STARTTLS=client, relay=email-smtp.us-east-1.amazonaws.com, version=TLSv1/SSLv3, verify=FAIL, cipher=AES256-SHA, bits=256/256
Jan  4 20:59:00 ip-10-252-22-51 sm-mta[32220]: s04Kww3h032218: to=<sinkinsona@gmail.com>, ctladdr=<www-data@ip-10-252-22-51.us-west-2.compute.internal> (33/33), delay=00:00:02, xdelay=00:00:02, mailer=relay, pri=120475, relay=email-smtp.us-east-1.amazonaws.com [23.21.252.142], dsn=5.0.0, stat=Service unavailable
Jan  4 20:59:00 ip-10-252-22-51 sm-mta[32220]: s04Kww3h032218: s04Kx03h032220: DSN: Service unavailable
Jan  4 20:59:00 ip-10-252-22-51 sm-mta[32220]: s04Kx03h032220: to=<www-data@ip-10-252-22-51.us-west-2.compute.internal>, delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30000, dsn=2.0.0, stat=Sent

在我的 php.ini 中 sendmail 指向

/usr/sbin/sendmail –t –i

我已将 apache 用户添加到邮件中。

sudo adduser www-data mail

这是我的测试 php 文件的内容

$to = "test@gmail.com";
$subject = "test mail";
$message = "hello - this is a test";
$headers ="From: test@gmail.com";
mail($to,$subject,$message,$headers);
echo "Mail Sent";

任何关于为什么我不能从 php 邮件功能发送电子邮件的帮助将不胜感激。

【问题讨论】:

  • 这是我忘记在 $to = "test@gmail.com" 上方输入的脚本的内容; $subject = "测试邮件"; $message = "你好 - 这是一个测试"; $headers ="来自:test@gmail.com";邮件($to,$subject,$message,$headers);回显“已发送邮件”; ?>

标签: php amazon-ec2 sendmail


【解决方案1】:

我自己也遇到了这个(或类似的)。我发现在 sendmail 命令行(在 php.ini 中)指定发件人电子邮件地址为我解决了这个问题:

/usr/sbin/sendmail –t –i -f from_email_address

所以似乎没有正确添加到请求中。

【讨论】:

    【解决方案2】:

    指定发件人信封/返回路径添加“-f”参数。最好,尤其是使用 SES,让“发件人:”标头与发件人的标头匹配:

    $to = "test@gmail.com";
    $subject = "test mail";
    $message = "hello - this is a test";
    $headers ="From: test@gmail.com";
    $params = "-ftest@gmail.com"
    mail($to,$subject,$message,$headers,$params);
    echo "Mail Sent";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-21
      • 2011-07-14
      • 1970-01-01
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 2015-11-11
      • 2017-06-21
      相关资源
      最近更新 更多