【问题标题】:Can't send php mail from AWS linux machine无法从 AWS linux 机器发送 php 邮件
【发布时间】:2017-11-10 06:37:53
【问题描述】:

我在我的 AWS linux 机器上用 php 编写了以下代码,但是它无法发送电子邮件

    $to = "test@abc.com.au"; // E-mail address of reciever
    $subject = "Test Subject"; // Subject of email
    $body = "Hi All, <br><br> This is the test email <br><br>Thank You!";
    $header = 'From: test@abc.com.au';

    if(mail($to, $subject, $body, $header)) {
            echo "Email sent successfully!";
    } else {
            echo 'Email send Failed';
    }

像上面这样的电子邮件发送总是失败。以下是我对 php.ini 的设置

[mail function]
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = /usr/sbin/sendmail -t -i
SMTP = "my smtp server address"
smtp_port = 25

有趣的是,如果我使用以下命令发送电子邮件,它会成功接收

echo "hello" |sendmail -s -v "test" test@abc.com.au 

有人可以帮忙和建议,什么可能导致邮件功能失败?

提前致谢。

【问题讨论】:

  • 怎么不起作用?你得到什么错误?
  • 什么也没有得到......只是控制台中的“电子邮件发送失败”......
  • 系统日志中是否有任何内容(可能是/var/log)?
  • 谢谢@stdunbar。是的,终于找到错误了。。错误信息是:sendmail[5232]: vA33eK7e002718: to=, ctladdr= (501/501), delay=4+23:48:01 , xdelay=00:00:00, mailer=esmtp, pri=11220275, relay=240, dsn=4.0.0, stat=Deferred: 名称服务器: 240: 主机名查找失败
  • 好的。更新了 /etc/sysconfig/network 文件并在主机名中添加了我的代理邮件服务器地址。然后重新启动服务.. 现在,我可以发送电子邮件,但 php 服务器没有使用代理邮件服务器发送电子邮件。相反,它直接从机器发送电子邮件

标签: php amazon-web-services email


【解决方案1】:

通过在 /etc/mail/sendmail.cf 文件中添加“智能”中继主机来修复它。

以下是我采取的步骤

sudo vi /etc/mail/sendmail.cf       

搜索 DS 并更新如下文件

#"Smart" relay host (may be null) 
DSsmtp.myserver.local

【讨论】:

    猜你喜欢
    • 2018-02-24
    • 2014-02-01
    • 2018-04-13
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2022-09-29
    • 2016-01-03
    • 2014-07-29
    相关资源
    最近更新 更多