简单的PHP邮件功能无法在Amazon服务器EC2上运行

时间:2013-10-24 06:59:29

标签: php amazon-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.";
?> 

此代码中存在的问题是什么。它无法在Amazon Linux服务器上运行

由于

6 个答案:

答案 0 :(得分:13)

我在使用Php&#39; UPDATE products INNER JOIN (SELECT products_id, SUM(attributes_stock) as qty FROM products_attribute GROUP BY products_id) T ON T.products_id = products.products_id SET products.products_quantity = T.qty WHERE products_model = '000011195001' 发送电子邮件时遇到了与您相同的问题。安装发送邮件为我解决了。

mail()

答案 1 :(得分:8)

对于php邮件,我遇到了与ec2相同的问题。

解决方案对我有用:

  1. 按命令安装sendmail:

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

    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"
    
  5. 用您的电子邮件ID替换电子邮件,看看您是否收到此电子邮件,如果是,那么您的邮件设置正常,现在您的php电子邮件应该正常工作。

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

答案 2 :(得分:1)

亚马逊服务器允许使用localhost发送邮件功能。请取消注释php.ini中的邮件配置。

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

显然从EC2发送PHP是不可能的,直到它被支持解锁。解锁它访问: EC2 - Fresh PHP install - Mail not working

否则,我会引用@Charles回答:

  

这不会直接解决您的问题(编辑:我的意思是错误消息   你现在已经编辑过),但亚马逊EC2实例确实有   参差不齐的邮件声誉。你可能会有可传递性   的问题。

     

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

所以 - 不是你不能发送,而是使用Simple Email Service,像SwiftMailer这样的库,或者我会添加像SendGrid这样的服务

*来源:Another SO question on php mail & EC2

同时: 我注册了简单电子邮件服务,这是SendGrid正在做的事情。这很简单。首先,您请求smtp用户和密码。然后,您要么确认要测试的电子邮件,要么请求生产访问[我不需要,所以我没有经历过程]。还有一点需要注意 - 在主机前使用ssl://,否则会出现SMTP error: 530 5.7.0 Must issue a STARTTLS command first.错误。发生这种情况时,我正在使用CakePHP和EC2。

答案 5 :(得分:-1)

请按照以下说明(针对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

享受!