简单的PHP邮件功能在亚马逊服务器EC2上不起作用


Simple PHP Mail function not working on Amazon server EC2

请看这个代码

<?php
$to = "someone@example.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "someonelse@example.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?> 

这段代码有什么问题。它无法在亚马逊 Linux 服务器上工作

谢谢

我在使用 Php 的 mail() 发送电子邮件时遇到了与您相同的问题。安装发送邮件为我解决了这个问题。

sudo apt-get install sendmail

我在 ec2 上遇到了同样的问题。

解决方案对我有用:

  1. 通过命令安装 Sendmail:

     sudo apt-get install sendmail
    
  2. 通过执行 follwing 命令检查服务是否启动

    service sendmail status
    

    注意:上述命令的输出应该是 - 'Active: active (running)'

  3. 如果服务未运行,请通过以下命令启动服务

    service sendmail start
    
  4. 服务启动后,使用以下命令发送测试邮件:

    echo "This is test mail body" | mail -s "Test Mail Subject" "recipient@email.com"
    
将电子邮件替换为您的电子邮件

ID,看看您是否收到此电子邮件,如果是,那么您的邮件设置很好,现在您的php电子邮件应该可以正常工作。

如果没有,要检查错误的文件是/var/spool/mail/。

Amazon 服务器允许使用 localhost 的 sendmail 功能。请在 php.ini 中取消注释邮件配置。

我已经这样做并且工作正常。

你愿意使用其他邮件框架吗?如果是,你可以使用phpmailer...它对我来说效果很好。

这是他们网站上的链接。 http://phpmailer.worxware.com/

显然,

在支持解锁之前,无法从 EC2 发送 PHP。要解锁它,请访问:EC2 - 全新 PHP 安装 - 邮件不起作用

否则,我只会引用@Charles答案:

这不会直接解决您的问题(编辑:我的意思是错误消息 您现在已经编辑掉了),但 Amazon EC2 实例有一个 参差不齐的邮件声誉。您可能会有可交付性 问题。

值得庆幸的是,亚马逊创建了简单的电子邮件服务来配合 EC2,为 EC2 客户提供免费服务。API 很漂亮 简单,并且有许多优秀的PHP邮件的传输适配器 库,如SwiftMailer(传输)。

所以 - 不,你不能发送,但使用简单的电子邮件服务,像SwiftMailer这样的库,或者我会添加像SendGrid这样的服务

*资料来源:关于php邮件和EC2的另一个SO问题

同时:我注册了Simple Email Service,这在某种程度上是SendGrid正在做的事情。这很简单。首先,您请求 smtp 用户和密码。然后,您可以确认用于测试的电子邮件,或请求生产访问权限[我不需要它,所以我没有完成流程]。有一个警告 - 在主机前面使用ssl://,否则它会给你SMTP error: 530 5.7.0 Must issue a STARTTLS command first.错误。发生这种情况时,我正在使用CakePHP和EC2。

只需按照以下说明进行操作(针对 ubuntu 10x EC2 进行测试)

sudo apt-get install php-pear   // Install php-pear if not installed 
sudo pear install mail  
sudo pear install Net_SMTP
sudo pear install Auth_SASL
sudo pear install mail_mime
sudo apt-get install postfix
sudo service apache2 restart

享受!