Skip to main content

邮箱配置

配置邮箱来发送邮件,可以是自己在程序中自行发送,也可以是后台给终端用户发送的重置密码邮件。 网上很多教程都在教怎么配置本地发送邮件,但是实际并不可取,有以下几个原因:

  1. 很多邮箱都设置了防垃圾,自己配置的邮箱服务多半会被当做垃圾邮件处理。
  2. 服务不稳定,因为承载了太多的功能
  3. 服务器需要配置 sendmail 支持

所以这里配置的是用已有的邮箱账号,通过 stmp 协议发送邮件。

安装插件

npm i strapi-provider-email-smtp

添加配置

编辑config/plugins.js文件,如果没有就手动创建,添加 email 配置如下:

module.exports = ({ env }) => {
return {
// ...
email: {
config: {
provider: env('EMAIL_PROVIDER'),
providerOptions: {
host: env('EMAIL_SMTP_HOST'),
port: env('EMAIL_SMTP_PORT'),
secure: true,
username: env('EMAIL_SMTP_USER'),
password: env('EMAIL_SMTP_PASS'),
rejectUnauthorized: true,
requireTLS: true,
connectionTimeout: 1,
},
settings: {
defaultFrom: env('EMAIL_ADDRESS_FROM'),
defaultReplyTo: env('EMAIL_ADDRESS_REPLY'),
},
},
},
// ...
};
};

这里所有配置项都从本地的 env 配置文件读取,用 env 的好处是当我们部署上线时可以通过 env 文件的指定来配置不同的环境。比如 local-dev 环境期望使用的是 sqllite 方便测试就行了,生产则使用 mysql 的配置。这个在env中有详细介绍。

打开.env文件,填写自己的邮箱配置:

// email
EMAIL_PROVIDER=strapi-provider-email-smtp
EMAIL_SMTP_HOST=你的邮箱服务器
EMAIL_SMTP_PORT=465 // 一般是465
EMAIL_SMTP_USER=你的邮箱用户名
EMAIL_SMTP_PASS=你的邮箱密码
EMAIL_ADDRESS_FROM=发送邮箱的发件人地址
EMAIL_ADDRESS_REPLY=回复邮件的发件人地址

验证配置有效

打开后台Settings/EMAIL PLUGIN/CONFIGURATION,已经可以看到 provider 是strapi-provider-email-smtp, DefaultSender 和 DefaultReply 都变成了自定义的邮箱地址。

点击下方的Test email delivery,就可以测试给别人发送邮件了。

Test email delivery

阿里云邮箱问题排查
  1. Invalid login: 526 Authentication failure[0]

检查用户名,默认是全称,比如no-reply@xx.com的用户名是no-reply@xx.com而不是 no-reply

  1. error:1408F10B:SSL routines:ssl3_get_record:wrong

使用加密端口 465