我尝试使用 nodemailer 和 nestjs 从服务器发送电子邮件。
这里是模块配置
import { Module } from "@nestjs/common";
import { MailService } from "./services/mail/mail.service";
import { MailController } from "./controllers/mail/mail.controller";
import { MailerModule } from "@nestjs-modules/mailer";
@Module({
controllers: [MailController],
providers: [MailService],
imports: [
MailerModule.forRoot({
transport: {
host: process.env.EMAIL_HOST,
port: process.env.EMAIL_PORT,
secure: true,
auth: {
user: process.env.EMAIL_ID,
pass: process.env.EMAIL_PASS
}
}
})
]
})
export class MailModule {
}
和方法
@import { MailerService } from "@nestjs-modules/mailer";
constructor(private mailer: MailerService) {
}
async sendConfirmationLetter(to: string): Promise<void> {
try {
await this.mailer.sendMail({
to: 'to',
from: 'from',
subject: 'subject',
text: 'some text'
});
} catch (e) {
console.log(e);
}
}
但我有一个例外
Error: connect ECONNREFUSED 127.0.0.1:465
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1139:16) {
errno: -4078,
code: 'ESOCKET',
syscall: 'connect',
address: '127.0.0.1',
port: 465,
command: 'CONN'
}
我做错了什么?所有信息均取自文档 https://nest-modules.github.io/mailer/docs/mailer.html
请帮忙!
如果有些信息不够,我可以提供
答案 0 :(得分:0)
MailerModule.forRoot({
transport: {
host: process.env.EMAIL_HOST, // change to your email smtp server like www.example.com
port: process.env.EMAIL_PORT, // change to configured tls port for smtp server
secure: true,
auth: {
user: process.env.EMAIL_ID,
pass: process.env.EMAIL_PASS
}
}
})
你正在使用你的主机和端口作为 smtp 服务器,如果你在同一个实例上设置了 smtp,它显示没问题,但我认为它是相同的端口,主机也应该是域。
如果你打算使用 gmail smtp 那么设置应该是
MailerModule.forRoot({
transport: {
host: "smtp.gmail.com",
port: "465",
secure: true,
auth: {
user: "your_gmail_email",
pass: "your_gmail_app_password"
}
}
})