【问题标题】:How to send email Symfony 2 + AWS SES + Swiftmailer?如何发送电子邮件 Symfony 2 + AWS SES + Swiftmailer?
【发布时间】:2016-08-08 18:46:28
【问题描述】:

我已将一个应用程序移至亚马逊,使用 symfony2 构建并使用 swiftmailer 发送电子邮件,我无法从该应用程序发送电子邮件。

所以搜索发送电子邮件的解决方案。如果有任何发送电子邮件 SES 或为 symfony2 配置 SMTP 的解决方案,请告诉我。

【问题讨论】:

    标签: symfony amazon-web-services amazon-ses


    【解决方案1】:

    我让我处理以下细节:

    transport: "%mailer_transport%"
    host:      "%mailer_host%"
    username:  "%mailer_user%"
    password:  "%mailer_password%"
    auth_mode:  login
    encryption: tls
    port:  587
    logging:  "%kernel.debug%"
    

    最后,确保发送 FROM 电子邮件地址得到验证。

    【讨论】:

    • 请注意,如果您指定端口 465,此配置将不起作用! (因为它使用不同的身份验证机制)。 587似乎工作得很好! .... 刚刚花了 2 个小时才弄清楚...
    【解决方案2】:

    我从未使用过 AWS SES,但您可以使用 mailjet 发送电子邮件。你只需要配置 Swiftmailer Transport 来使用他们的 SMTP 就可以了。

    他们还通过提供多种技术确保您的电子邮件能够正常发送(即:不在垃圾邮件中)。您必须设置其中的一些。

    他们没有为 Swiftmailer 提供示例,但这里为 Zend 提供了一个很好的示例(您会看到它是多么容易):

    $config = array(
      'ssl'      => 'ssl',
      'port'     => 465,
      'auth'     => 'login',
      'username' => 'your_Mailjet_API_Key',
      'password' => 'your_Mailjet_Secret_Key');
    
    $transport = new Zend_Mail_Transport_Smtp('in-v3.mailjet.com', $config);
    
    $mail = new Zend_Mail();
    
    $mail->setFrom('your_sender@address.com', 'You');
    $mail->addTo('recipient@example.com', 'Anybody');
    $mail->setSubject('My first email by Mailjet');
    $mail->setBodyText('Hello from Mailjet & Zend Framework !');
    
    $mail->send($transport);
    

    【讨论】:

    • 感谢您提及 Mailjet。自 2014 年以来,Mailjet 发布了其平台的新主要版本。 V1 仍在工作,但最好从 V3 开始。 SMTP 地址现在在-v3.mailjet.com
    【解决方案3】:

    Amazon SES 拥有来自官方 AWS Php SDK 的优秀 Php API:

    http://docs.aws.amazon.com/aws-sdk-php/guide/latest/service-ses.html

    如您所见,SES 不是用作 SMTP 网关(像 Mailjet 那样),而是用作 HTTP API(通过 Guzzle,一个用于 HTTP 查询的 Php 库)。是否依赖亚马逊服务(如 S3/SeS/SNS 等)始终是一个重要的决定……也许您不想依赖任何亚马逊技术?

    【讨论】:

      【解决方案4】:

      您可以尝试使用 AWS SES Monitor Bundle 来管理通过 SwiftMailer 与 Symfony 的电子邮件发送。

      问题在于,当您开始使用 AWS SES 时,您处于沙箱中并且要上线,您需要向 Amazon 提交问题,要求将您从发送箱中移除。

      要求您可以管理退回邮件和投诉。 要获得有关这些的通知,您需要连接到 Simple Notification Service(另一种选择是通过电子邮件获得通知)。

      要自动化所有这些工作,您可以使用 AWS SES Monitor Bundle 为您完成所有这些工作。 它还为 SwiftMailer 注册了一个插件,该插件可以拦截消息并避免将消息发送到您不应发送电子邮件的地址。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-16
        • 1970-01-01
        • 2019-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-03
        相关资源
        最近更新 更多