microsoft 365 企业邮箱,在nodejs中用sendmail发邮件,怎么配置?
在Node.js中使用sendmail
发送邮件,通常指的是使用某些库或模块来模拟sendmail命令行工具的行为。由于你提到了Microsoft 365企业邮箱,这意味着你可能需要使用SMTP(简单邮件传输协议)通过Microsoft的服务器发送电子邮件。
下面将介绍如何在Node.js中配置和使用一个流行的邮件发送库—nodemailer
—来通过Microsoft 365企业邮箱发送邮件。nodemailer
是一个简单易用的Node.js邮件发送模块。
首先,确保你已经安装了nodemailer
模块。如果没有,可以通过以下命令进行安装:
npm install nodemailer
然后,你可以按照以下方式配置nodemailer
以使用Microsoft 365的SMTP服务:
const nodemailer = require('nodemailer');
// 创建SMTP客户端配置
let transporter = nodemailer.createTransport({
host: "smtp.office365.com", // Microsoft 365 SMTP服务器的主机名
port: 587, // 端口号,对于TLS通常是587
secure: false, // 如果端口是465,则需要设置为true,对于其他端口如587则设为false
auth: {
user: "[email protected]", // 你的Microsoft 365邮箱地址
pass: "your-password" // 你的邮箱密码或者是应用程序专用密码
},
tls: {
ciphers: 'SSLv3' // 强制使用特定的加密方法
}
});
// 设置邮件内容
let mailOptions = {
from: '"Sender Name" <[email protected]>', // 寄件人地址
to: "[email protected]", // 收件人列表,逗号分隔
subject: "Hello ✔", // 主题行
text: "Hello world?", // 纯文本正文
html: "<b>Hello world?</b>" // HTML正文
};
// 发送邮件
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log('Message sent: %s', info.messageId);
});
请记得把上述代码中的[email protected]
和your-password
替换成你的实际Microsoft 365企业邮箱账号和密码。如果启用了两步验证,可能需要生成并使用一个应用程序专用密码而不是常规密码。
此外,请注意Microsoft可能会要求您通过OAuth 2.0来进行身份验证,尤其是如果您在一个自动化的系统中或有大量邮件发送需求时。这种情况下,配置会稍微复杂一点,您需要注册一个应用程序,在Azure AD中获得必要的凭据,并使用库(例如nodemailer-oauth2
)来支持OAuth 2.0认证。
以上是使用nodemailer
和SMTP发送邮件的基础配置。如果你想用纯sendmail
命令,那通常是在Linux环境中直接调用系统的sendmail
程序,但它不涉及Microsoft 365的SMTP服务器。
"Invalid login: 535 5.7.139 Authentication unsuccessful, SmtpClientAuthentication is disabled for the Tenant. Visit https://aka.ms/smtp_auth_disabled for more information. [BYAPR06CA0008.namprd06.prod.outlook.com 2024-04-23T03:13:36.232Z 08DC62C65676F8F0]"
错误信息 "Invalid login: 535 5.7.139 Authentication unsuccessful, SmtpClientAuthentication is disabled for the Tenant" 指出SMTP客户端身份验证在您的租户(Tenant)上已被禁用。这可能是因为您的组织策略或安全设置。
要解决此问题,您需要拥有管理员权限来开启Microsoft 365管理中心的SMTP身份验证。以下是开启SMTP客户端身份验证的步骤:
另外一种情况是整个租户的SMTP身份验证被禁用。您可能还需检查专门针对SMTP客户端身份验证的租户级别策略。这通常是在 PowerShell 中使用 Exchange Online PowerShell 模块设置的。
以下是一个示例 PowerShell 命令来进行检查和更新设置:
# 首先登录到您的Exchange Online PowerShell
Connect-ExchangeOnline -UserPrincipalName <你的管理员账号> -ShowProgress $true
# 查看当前SMTP身份验证状态
Get-TransportConfig | Format-List SmtpClientAuthenticationDisabled
# 如果是禁用状态,则使用以下命令启用SMTP身份验证
Set-TransportConfig -SmtpClientAuthenticationDisabled $false
# 最后,断开与Exchange Online的连接
Disconnect-ExchangeOnline -Confirm:$false
请注意,在执行这些操作之前,确保您有足够的权限,并且已经评估了使SMTP身份验证可用所涉及的安全风险。有时候,基于安全原因,组织可能会故意禁用SMTP身份验证。
如果您在尝试修复此问题时遇到困难,建议联系您的 IT 管理员或者 Microsoft 支持寻求帮助。