使用strapi版本4,尝试用这个来发送邮件,但对我不起作用。
https://strapi.io/blog/how-to-create-and-use-sms-and-email-services-in-strapi-1
您能否向我解释一下如何覆盖 Strapi cms 中的创建方法。
您可以使用 Nodemailer 或 Sendgrid,我将在本例中使用 Nodemailer,但我个人更喜欢 SendGrid。
通过 ssh 连接到您的 Strapi 服务器
安装nodemailer:npm i @strapi/provider-email-nodemailer
选择 config 文件夹/plugins.js - 如果没有,您可以将其创建为新文件
复制此:
module.exports = ({ env }) => ({
// ...
email: {
config: {
provider: 'nodemailer',
providerOptions: {
host: env('SMTP_HOST', 'smtp.example.com'),
port: env('SMTP_PORT', 587),
auth: {
user: env('SMTP_USERNAME'),
pass: env('SMTP_PASSWORD'),
},
},
settings: {
defaultFrom: '[email protected]',
defaultReplyTo: '[email protected]',
},
},
},
});
在你的项目中有一个 .env 文件,打开它并复制:
EMAIL_PROVIDER=nodemailer EMAIL_SMTP_HOST=sandbox.smtp.mailtrap.io EMAIL_SMTP_PORT=2525 EMAIL_SMTP_USER=your_mailtrap_user EMAIL_SMTP_PASS=您的邮件陷阱密码 [电子邮件受保护] [电子邮件受保护]
注意,我在这里使用 mailtrap 进行测试,您可以 在这里注册
返回您的 Strapi 项目 src/api/选择您的集合类型,用于存储从前端/内容类型发送的数据
在内容类型中创建一个名为 lifecycles.js 的新文件并复制以下内容:
module.exports = {
async afterCreate(event) {
const { result } = event;
try {
await strapi.plugins['email'].services.email.send({
to: '[email protected]',
from: `[email protected]`,
subject: `This is a test mail`,
html: `Hello world ${result.name}` //<- (you'll need a name field in strapi collection type to display this data)
});
} catch (err) {
console.log(err);
}
},
};
现在每次有新帖子从您的前端发送到 Strapi 时,您都会收到一封发送到您的 mailtrap 帐户的电子邮件,稍后您可以使用真正的 SMTP 服务器而不是 mailtrap。 您也可以在 Strapi 管理面板设置/电子邮件插件 - 配置
中进行测试希望有帮助!
致所有使用 Strapi V5 看到这篇文章的人
有一个关于如何在不使用凭据的情况下设置 Gmail 帐户的精彩指南:https://medium.com/@nickroach_50526/sending-emails-with-node-js-using-smtp-gmail-and-oauth2-316fe9c790a1