[英]Nodemailer is not sending emails in NestJs
我有 nodemailer package 的下一個配置:
//App module @Module({ imports: [ MailerModule.forRoot({ transport: { host: 'localhost', port: 3000, secure: false, }, defaults: { from: '"nest-modules" <modules@nestjs.com>', }, template: { dir: __dirname + '/templates', adapter: new HandlebarsAdapter(), options: { strict: true, }, }, }), ... }) export class AppModule {}
和
//Email service export class EmailService { constructor(private readonly mailerService: MailerService) {} public example(): void { this.mailerService.sendMail({ to: 'email@gmail.com', // list of receivers from: 'test@nestjs.com', // sender address subject: 'Testing Nest MailerModule ✔', // Subject line text: 'welcome', // plaintext body html: '<b>welcome</b>', // HTML body content }).then((r) => { console.log(r, 'email is sent'); }).catch((e) => { console.log(e, 'error sending email'); }); } }
我正在使用我當地的環境。 嘗試上面的代碼,我在 catch 塊中得到一個錯誤: Error: Greeting never received
。 為什么我收到該錯誤以及如何發送 email 沒有任何問題?
MailerModule.forRoot({
transport: {
host: 'localhost',
port: 3000,
secure: false,
},
nodemailer 嘗試在 localhost:3000 上查找 SMTP 郵件傳輸代理(中繼)。 它不太可能在您的機器上的 3000 端口上存在 SMTP 服務器,因此很可能 nodemailer 無法從您的 3000 端口上的任何內容收到確認它是 SMTP 服務器並拋出您提到的錯誤。
代碼將是這樣的:
import {directTransport} from 'nodemailer-direct-transport';
//App module
@Module({
imports: [
MailerModule.forRoot({
transport: directTransport({}),
defaults: {
from: '"nest-modules" <modules@nestjs.com>',
},
template: {
dir: __dirname + '/templates',
adapter: new HandlebarsAdapter(),
options: {
strict: true,
},
},
}),
...
})
export class AppModule {}
我不確定您是否只想使用本地 SMTP 發送 email 或發送 email 任何可用的 ZC2230ZF9171
如果是后者,您可以使用google SMTP 或mailtrap。無需設置SMTP 服務器。 配置將是
MailerModule.forRoot({
transport: {
host: "smtp.gmail.com",
port: "465",
secure: true,
auth: {
user: "your_gmail_email",
pass: "your_gmail_app_password"
}
}
})
// or for mailtrap.io
const nodemailer = require('nodemailer');
let transporter = nodemailer.createTransport({
host: 'smtp.mailtrap.io',
port: 2525,
auth: {
user: "<user>",
pass: "<pass>"
}
})
如果是本地 SMTP 服務器,您可以查看smtp-server以創建 SMTP 服務器或MaiDev將幫助您在本地設置 SMTP 服務器。 MailDev 也可以通過 docker 獲得,這也會更容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.