javascript - nodemailer 发件人为空
问题描述
我正在尝试将 nodemailer 与不需要任何类型验证的应用程序一起使用。该应用程序所在的服务器已被列入白名单,因此不需要用户名或密码。我设置我的邮件配置如下:
let mailConfig = {
pool: true,
maxConnections: maxConnections,
maxMessages: maxMessages,
rateDelta: rateDelta * 1000,
rateLimit: maxMessages * maxConnections,
secure: false,
ignoreTLS: true,
logger:true,
host: config.SMTP_Host,
port: config.SMTP_Port
};
但是,由于电子邮件的发件人不存在,我一直遇到 550 错误。我发现另一个 stackoverflow 问题指出,当您的主机域与用户的域不同(在这种情况下,用户未定义)时,发件人会自动设置为该域。这对于为什么我的发件人被设置为空白是有道理的,即使我实际上已经设置了它。
如果用户域不存在,是否有办法防止 nodemailer 更改发件人以匹配用户域?
还是我完全误解了错误信息?
到目前为止,我已经尝试通过在消息对象中手动设置这些字段,但我不得不承认我不熟悉这种类型的协议。
sender:config.SMTP_Host,
envelope: {
from: `"Sender Name" <${config.SMTP_Host}>`, // used as MAIL FROM: address for SMTP
to: `${email}, "${first_name}" <${email}>` // used as RCPT TO: address for SMTP
}
解决方案
发件人字段必须包含电子邮件地址而不是主机名。
如果我们以 gmail 为例,您在 from 字段中输入的内容是
From: "Sender Name" <smtp.gmail.com>
什么时候应该:
From: "Sender Name" <sender@gmail.com>
发送服务器正在搜索“smtp.gmail.com”作为电子邮件,但没有找到它,因此您收到一条消息,指出该电子邮件地址不存在。
推荐阅读
- html - 为什么 flexbox 的第一个孩子占用的空间比它自己的内容要多?
- nestjs - 使用 typeorm find nest js 找不到实体列
- php - 每个通知作业的 Laravel 8 自定义 smtp 详细信息
- maven - 构建 build.gradle.kts maven 项目
- sybase - “无法打开缓冲区文件”sybase isql 错误
- xml - 尝试使用 XQuery 对两个 XML 文件执行笛卡尔积
- unity3d - 如何在 Sourcetree 中通过身份验证和提交?
- php - 如何在 laravel 中删除基于 admin_id 的博客?
- google-apps-script - 谷歌应用脚本修改。例外:这些行超出范围
- google-apps-script - GMAIL API 谷歌 AppScript