amazon-ec2 - 又是 : sending mail (through php) from an EC2 instance

标签 amazon-ec2 postfix-mta php amazon-ses

<分区>

我看到很多关于使用 php 的邮件功能从 amazon EC2 实例发送邮件的问题的讨论。这些建议都没有对我有用。

这是我的设置:

  • 我有 ubuntu EC2 实例。
  • 我按照 Amazon SES 上的步骤使用为我创建的凭据安装了 postfix。我尝试了隧道和直接方法。
  • 我使用 swiftmail 传输根据 this 发送我的邮件.发送邮件的传输函数返回 0 delivered。
  • 我单独使用了 php 邮件,它返回 true。但是,即使是垃圾邮件,也不会发送任何邮件。

顺便说一下,我没有使用 SES 的生产服务。限制对我来说很好,我只是希望它能工作。

我怀疑我没有得到正确的身份验证,但我不明白为什么。我尝试远程登录 ...amazonaws.com 25 并已连接。但是当我在 telnet 中尝试命令 Mail From: ... 时,它说需要身份验证。

我已经想到了替代方案:sendgrid。对我来说太贵了。

有什么想法吗?

最佳答案

下面是我如何使用 Sendgrid 通过 PHP 从 EC2 实例发送邮件:

  1. 注册一个 Sendgrid 帐户。您将收到用于发送电子邮件的用户名和密码。此外,Sendgrid 将手动验证您的帐户(可能是为了防止垃圾邮件)。
  2. 在 ubuntu 中安装 PHP curl 库:sudo apt-get install php5-curl
  3. 使用此 PHP 代码发送电子邮件:

    $url = 'http://sendgrid.com/';
    $user = 'sendgrid_user';
    $pass = 'sendgrid_password'; 
    
    $params = array(
        'api_user'  => $user,
        'api_key'   => $pass,
        'to'        => $dest_addr,
        'subject'   => $subject,
        'html'      => $body,
        //'text'      => 'testing body',
        'from'      => $from_addr,
      );
    
    $request =  $url.'api/mail.send.json';
    
    $session = curl_init($request);
    // Tell curl to use HTTP POST
    curl_setopt ($session, CURLOPT_POST, true);
    // Tell curl that this is the body of the POST
    curl_setopt ($session, CURLOPT_POSTFIELDS, $params);
    // Tell curl not to return headers, but do return the response
    curl_setopt($session, CURLOPT_HEADER, false);
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
    
    // obtain response
    $response = curl_exec($session);
    
    //If the result is {"message":"success"}, then the mail is sent.  
    curl_close($session);
    

关于amazon-ec2 - 又是 : sending mail (through php) from an EC2 instance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12709239/

相关文章:

php - 如何编写 htaccess 文件,更改 URL

php - 有没有一种方法可以让我的用户在没有确认邮件的情况下订阅列表?

php - 如何在sqlite中获取sqrt

java - 将操作数<T>转换为整数

tomcat - 多部分异常 - Spring Boot 中的 maxPostSize 错误

amazon-web-services - AWS EC2 用户数据加密

swift - 使 api 在 Swift Perfect 中高可用

java - 如何在Expression类中使用math.pow()进行计算?

apache - Google 将看似完美的电子邮件标记为垃圾邮件

amazon-web-services - 如何将Kubernetes与现有的AWS ALB集成?