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