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

Kim*_*cks 1 php email smtp amazon-web-services cakephp-3.0

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

我已经解除了限制。

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

他们是。

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

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

Kim*_*cks 5

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

  1. 打开您的服务器终端并输入 echo -n "YOUR SMTP USERNAME" | base64
  2. 将输出复制粘贴到某处。你会需要它。输出应以=
  3. 重复步骤 1 和 2 YOUR SMTP PASSWORD
  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.
.
Run Code Online (Sandbox Code Playgroud)
  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!!
],
Run Code Online (Sandbox Code Playgroud)
  • 现在寻找Emailapp.php,并添加默认以下新的配置文件

像这样:

'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!
],
Run Code Online (Sandbox Code Playgroud)
  • 这就是配置!
  • 只需$email = new Email('production');在您想要的适当地点打电话。