我有一个应该发送电子邮件的 PHP 脚本。该脚本在我的本地计算机上运行良好,但当我在 Amazon Linux 服务器上运行它时,它不会发送电子邮件。
$to = "[email protected]";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "[email protected]";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
我对 ec2 的 php 邮件也有同样的问题。
解决方案对我有用:
通过命令安装sendmail:
sudo apt-get install sendmail
通过执行以下命令检查服务是否启动
service sendmail status
注意:上述命令的输出应该是 -
'Active: active (running)'
如果服务未运行,请通过以下命令启动服务
service sendmail start
服务启动后,使用以下命令发送测试邮件:
echo "This is test mail body" | mail -s "Test Mail Subject" "[email protected]"
用您的电子邮件 ID 替换 email 并查看您是否收到这封电子邮件,如果是,则您的邮件设置正常,现在您的 php 电子邮件应该可以正常工作。
如果没有,检查错误的文件是/var/spool/mail/。
我在使用 Php 发送电子邮件时遇到了与您相同的问题
mail()
。安装发送邮件为我解决了这个问题。
sudo apt-get install sendmail
Amazon 服务器允许使用本地主机发送邮件功能。请取消 php.ini 中邮件配置的注释。
我已经做到了这一点并且工作正常。
您愿意使用其他邮件框架吗?如果是的话,你可以使用 phpmailer...它对我来说很好用。
这是他们网站上的链接。 http://phpmailer.worxware.com/
显然,在获得支持解锁之前,无法从 EC2 发送 PHP。要解锁它,请访问: EC2 - 全新 PHP 安装 - 邮件无法正常工作
否则我就引用@Charles的回答:
这不会直接解决您的问题(编辑:我的意思是错误消息 您现在已经编辑掉了),但是 Amazon EC2 实例确实有一个 邮件声誉参差不齐。你可能会有交付能力 问题。
值得庆幸的是,亚马逊创建了简单电子邮件服务来配合 EC2,为 EC2 客户提供免费服务。 API 很漂亮 简单,并且有许多优秀的 PHP 邮件传输适配器 库,例如 SwiftMailer(传输)。
所以 - 不,你不能发送,但使用简单电子邮件服务,像SwiftMailer这样的库,或者我会添加像SendGrid
这样的服务同时: 我注册了 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
享受吧!