如何配置 CakePHP 3.x 以使用 Amazon SES SMTP 发送电子邮件


How to configure CakePHP 3.x to use Amazon SES SMTP to send out emails?

我已经在 AWS SES 中成功创建了我的 SMTP 凭证。

我已经解除了限制。

我已使用命令行来测试我的凭据是否正常。

他们是。

我正在使用 CakePHP 3.2,但仍然无法发送电子邮件。

我使用的区域是美国俄勒冈州西部。主人是email-smtp.us-west-2.amazonaws.com

如何通过命令行测试凭据是否正常

  1. 打开服务器终端并键入echo -n "YOUR SMTP USERNAME" | base64
  2. 将输出复制粘贴到某处。您将需要它。输出应以 = 结尾
  3. YOUR SMTP PASSWORD重复步骤 1 和 2
  4. 将以下内容复制粘贴到文本文件中,但根据需要替换<whatever>

喜欢这个:

AFTER 220 .... PASTE THE LINE BELOW:
EHLO <example.com>
AFTER 250 Ok PASTE THE LINE BELOW:
AUTH LOGIN
AFTER 334 VXNlcm5hbWU6:
<YOUR SMTP USERNAME encoded as base64 from step 1>
AFTER 334 UGFzc3dvcmQ6:
<YOUR SMTP PASSWORD encoded as base64 from step 3>
AFTER 235 Authentication successful.
MAIL FROM:<yourverifiedemail@example.com>
AFTER 250 Ok
RCPT TO:<yourverifiedemail@example.com>
AFTER 250 Ok
DATA
AFTER 354 End data with <CR><LF>.<CR><LF>    
Subject:Hello from Amazon SES!
This email was sent using the Amazon SES SMTP interface.
.
  1. 在终端中输入openssl s_client -crlf -quiet -connect email-smtp.us-west-2.amazonaws.com:465

  2. 按照文本文件中的说明进行操作。

一旦确定凭据是好的,现在配置你的cakephp 3.x

配置 Cake 3.x

  • 敞开心扉 config/app.php

  • 查找EmailTransport并在默认值下方添加新传输

喜欢这个:

'EmailTransport' => [
    'default' => [
        'className' => 'Mail',
        // The following keys are used in SMTP transports
        'host' => 'localhost',
        'port' => 25,
        'timeout' => 30,
        'username' => 'user',
        'password' => 'secret',
        'client' => null,
        'tls' => null,
    ],
    // START of what you need to add!!
    'AWS_SES' =>[
        'className' => 'Smtp', 
        'host' => 'email-smtp.us-west-2.amazonaws.com', 
        'port' => 587, // this is very important to be 587!! 
        'timeout' => 30,
        'username' => 'YOUR SMTP USERNAME',
        'password' => 'YOUR SMTP PASSWORD',
        'tls' => true, // this is also very important!!
    ]
    // END of what you need to add!!
],
  • 现在在app.php中查找Email并在默认值下方添加新配置文件

喜欢这个:

'Email' => [
    'default' => [
        'transport' => 'default',
        'from' => 'you@localhost',
        //'charset' => 'utf-8',
        //'headerCharset' => 'utf-8',
    ],
// START of what you need to add!
    'production' => [
        'transport' => 'AWS_SES',
        //'log' => true,
    ]
// END of what you need to add!
],
  • 这就是配置的全部内容!
  • 只需在您想要的适当位置致电$email = new Email('production');即可。