PHP 函数 mail() 在 AWS EC2 服务器上不起作用

Posted

技术标签:

【中文标题】PHP 函数 mail() 在 AWS EC2 服务器上不起作用【英文标题】:PHP function mail() doesn't work on AWS EC2 server 【发布时间】:2016-05-14 08:47:46 【问题描述】:

最近我安装了一个基于 Ubuntu 14.04 的 AWS EC2 虚拟服务器。但我有下一个问题:PHP 函数 mail() 不起作用


    我删除了 sendmail。

    我安装了sendmail:

    sudo apt-get install sendmail

    我检查它的工作:

    ps -aux | grep 发送邮件

    我更改了 php.ini:

    sendmail_path = /usr/sbin/sendmail

    我跑:

    sudo sendmailconfig

为所有类别选择

    重启服务:

    服务 sendmail 重启

    将我的 主机名 添加到 /etc/hosts:

    127.0.0.1 localhost.localdomain 本地主机名

    我尝试测试发送:

    echo -e "To: myemail@example.com\nSubject: Test\nTest\n" |发送邮件 -bm -t -v

存储在 /var/mail/ubuntu 中的所有电子邮件。


我还需要做些什么吗?

【问题讨论】:

leonardaustin.com/blog/technical/sendmail-on-ubuntu lukepeters.me/blog/… 【参考方案1】:

邮件功能在 aws、azure 等基于云的服务器中不起作用。我已经遇到过这个问题并使用 php mailer 库解决了,所以我建议你使用它。

【讨论】:

isSMTP(); // 设置邮件程序使用 SMTP $mail->Host = 'host Name'; // 指定主备 SMTP 服务器 $mail->SMTPAuth = true;身份验证 $mail-> 用户名 = '用户名'; // SMTP 用户名 $mail->Password = 'Password'; // SMTP 密码 $mail->SMTPSecure = 'tls'; $mail->Port = '端口号'; 邮件功能确实可以在包括 AWS 和 Azure 在内的云服务中工作。这完全取决于您安装的图像。例如,Amazon Linux 已默认安装和配置完整的 MTA。是的,它确实适用于 PHP。我已经安装了几十个运行 vanilla WP 安装的基线 AWS EC2 实例。不需要黑魔法,电子邮件就可以工作。 @BohdanVorona 接受为已接受的答案,以便对其他用户有用。【参考方案2】:

Ubuntu 16.04 LTS 是截至 2016 年 9 月 Amazon EC2 的“默认”Ubuntu 映像,需要为 PHP 安装和配置 Postfix MTA 才能发送邮件。

sudo apt-get update
sudo apt install mailutils

选择“互联网站点”并输入正确的主机名。

然后使用您最喜欢的编辑器,vim 或 nano 或其他任何东西,并修复 main.cf 文件以仅处理来自本地网络接口(环回)的流量,并将域设置为您正确的主机域名。

sudo systemctl restart postfix

详情请见:https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-on-ubuntu-16-04

这就是在我的运行 WordPress 应用程序的 Ubuntu 16.04 上获得出站电子邮件所需的全部魔力。

祝你好运。

【讨论】:

以上是关于PHP 函数 mail() 在 AWS EC2 服务器上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

sh [在AWS EC2 Linux服务器上从PHP 5.X.X升级到PHP 7] #linux #aws

AWS Cloudfront 到 EC2 的混合 PHP 和静态内容

停止并启动在 EC2 和 mysql RDS 上运行 php 的 AWS Elastic Beanstalk

AWS Elastic Beanstalk:在运行 PHP 的 EC2 实例上终止 HTTPS

AWS Elastic Beanstalk - 如何在同一个 ec2 实例中运行 php 和 nodejs

使用 PHP 和 Amazon AWS EC2 的会话