我正在尝试将Strapi v3.0.0-alpha.19服务器配置为能够发送电子邮件,特别是用于重置忘记的密码。很难找到足够的文档来完成此操作,但是我在questions like this one的答案中读到的是我需要安装提供程序包,例如strapi-provider-email-nodemailer
,然后设置SMTP服务器(具有透明性的指令)。但是,当我将包安装在project-folder / strapi中,然后重新加载http://localhost:1337/admin/plugins/email/configurations/development时,提供程序的下拉列表仍只包含默认提供程序Sendmail。
我尝试在Docker容器中重建Strapi API,但这没有任何区别。
我希望刷新页面后或者至少在重建API之后,Nodemailer会出现在下拉列表中,但这没有发生。为了将Nodemailer指定为我的电子邮件提供商,我需要采取什么步骤?
答案 0 :(得分:1)
在较新的Strapi版本中,您也必须在电子邮件插件设置中手动更改电子邮件提供者,因为电子邮件提供者的下拉列表不再可用(https://github.com/strapi/strapi/pull/6195)。经过数小时的研究,我只是用Amazon-ses做到了,它奏效了。不知道这是否是正确的方法,但这肯定是我在很长一段时间后设法找到的唯一方法。
转到api/node_modules/strapi-plugin-email/config/settings.js
,然后将提供程序更改为所需的提供程序。
您可能应该这样更改自己的内容:
module.exports = {
provider: 'nodemailer',
providerOptions: {},
settings: {
defaultFrom: 'Strapi <no-reply@strapi.io>',
},
};
答案 1 :(得分:0)
考虑到您同时添加了strapi-email-nodemailer
和strapi-provider-email-nodemailer
,下一步应该是添加配置。
要添加配置,请在plugin.js
中添加以下代码。如果您没有plugin.js
,请在根config
文件夹中创建一个。
module.exports = ({ env }) => ({
email: {
provider: "nodemailer",
providerOptions: {
nodemailer_default_from: "default_from_email@example.com",
nodemailer_default_replyto: "default_replyto_email@example.com",
host: "smtp.gmail.com, // Add your smtp host over here
port: "995", // Add port number
password: "<below-email-password>,
username: "<email-address>",
authMethod: "SMTP", // Auth method
}
},
});
您可以将上述配置保存到环境文件中,然后从那里使用它。
要以编程方式发送电子邮件,请在控制器中添加以下代码:
await strapi.plugins['email'].services.email.send({
to: 'mail@example.com', // email recipient
from: 'sender@example.com', // email sender
subject: 'Email subject line',
text: 'Email body should come here'
});