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

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


  1. 我删除了 sendmail。
  2. 我安装了sendmail:

    sudo apt-get install sendmail

  3. 我检查它的工作:

    ps -aux | grep 发送邮件

  4. 我更改了 php.ini:

    sendmail_path = /usr/sbin/sendmail

  5. 我跑:

    sudo sendmailconfig

为所有类别选择是。

  1. 重启服务:

    服务 sendmail 重启

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

    127.0.0.1 localhost.localdomain 本地主机名

  3. 我尝试测试发送:

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

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


我还需要做些什么吗?

【问题讨论】:

标签: php ubuntu amazon-web-services amazon-ec2 ubuntu-14.04


【解决方案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 上获得出站电子邮件所需的全部魔力。

祝你好运。

【讨论】:

    猜你喜欢
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多