【问题标题】:Simple PHP Mail function not working on Amazon server EC2 [closed]简单的 PHP 邮件功能在亚马逊服务器 EC2 上不起作用 [关闭]
【发布时间】:2018-10-10 16:44:22
【问题描述】:

请看这段代码

<?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 服务器

谢谢

【问题讨论】:

标签: php amazon-ec2


【解决方案1】:

我在 ec2 for php 邮件中遇到了同样的问题。

解决方案对我有用:

  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"
    

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

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

【讨论】:

  • 当前未安装程序“邮件”。您可以通过键入来安装它:
  • @SaravananNandhan 你可以通过这个解决方案。你需要安装邮件
  • 无法通过它。
【解决方案2】:

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

sudo apt-get install sendmail

【讨论】:

    【解决方案3】:

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

    我已经完成了这项工作并且工作正常。

    【讨论】:

    • 那会是什么设置?
    • 当我使用亚马逊发送邮件时,它在本地主机中不起作用,请提供本地主机的亚马逊邮件示例
    【解决方案4】:

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

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

    【讨论】:

    • 它在服务器上不工作
    【解决方案5】:

    显然,在支持解锁之前,无法从 EC2 发送 PHP。要解锁它,请访问: EC2 - Fresh PHP install - Mail not working

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

    这不会直接解决您的问题(编辑:我的意思是错误消息 您现在已经编辑了),但 Amazon 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。

    【讨论】:

      【解决方案6】:

      只需按照以下说明操作(针对 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
      

      享受吧!

      【讨论】:

        猜你喜欢
        • 2014-05-28
        • 2010-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-22
        • 2012-12-08
        • 2023-04-06
        • 1970-01-01
        相关资源
        最近更新 更多