请看这个代码
<?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 上遇到了同样的问题。
解决方案对我有用:
-
通过命令安装 Sendmail:
sudo apt-get install sendmail
-
通过执行 follwing 命令检查服务是否启动
service sendmail status
注意:上述命令的输出应该是 -
'Active: active (running)'
-
如果服务未运行,请通过以下命令启动服务
service sendmail start
-
服务启动后,使用以下命令发送测试邮件:
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
享受!