无法使用 office365 设置发送 SMTP 邮件
Posted
技术标签:
【中文标题】无法使用 office365 设置发送 SMTP 邮件【英文标题】:Unable to send SMTP mails using office365 settings 【发布时间】:2019-07-14 00:43:26 【问题描述】:我正在使用 SMTP 邮件通过 Laravel 发送邮件。除了 office365 邮件设置之外,一切都运行良好。
我使用的设置如下:
SMTP HOST = smtp.office365.com
SMTP PORT = 587
SMTP ENCRYPTION = tls
SMTP USER = username(email)
SMTP PASS = password
我得到的错误是:
554 5.2.0 STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied; 由于消息的永久异常,无法处理消息 无法提交消息
我已经在谷歌上搜索了很多这个错误,每个人都说像这个链接这样的混乱 Solution to this error 但是我个人在执行完所有提到的步骤后并没有发现任何混乱。
我无法登录此电子邮件,因为它是我们的客户电子邮件 ID,我没有登录权限。
我还创建了一个 Outlook 电子邮件 ID 并测试了此电子邮件设置。 它就像魅力一样。 我不知道客户电子邮件 ID 有什么问题。
任何建议都会很棒。
【问题讨论】:
您链接的解决方案是针对另一个错误“MapiExceptionNotFound”,您的错误请看这里:social.technet.microsoft.com/Forums/en-US/… 您的链接也暗示了相同的内容。但我无法找到前面提到的混乱 您需要使用 Sender 标头,而不是 From 标头。当您设置发送邮件的电子邮件地址时,请确保您的客户正在影响哪个标头。 【参考方案1】:此错误意味着您在 SMTP 连接中指定其凭据的用户无法代表From
和/或Sender
MIME 标头或FROM
SMTP 命令中指定的用户提交邮件。
【讨论】:
我被这个错误困扰了整整 4 天。先生,我会在我生命中的每一天都想着你!!【参考方案2】:Outlook 不提供使用不同于您的用户名登录的地址发送。
您需要两个电子邮件地址相同。
您可以在管理面板中添加一个或多个发件人,之后您可以轻松地从不同地址发送。
【讨论】:
您用于发送代码的发件人电子邮件以及您实际发送的电子邮件。 这解决了我的问题。我使用的是 Wordpress 插件 Easy WP SMTP,我需要确保“发件人电子邮件地址”和“SMTP 用户名”相同。 是的,我为这个问题浪费了 7 天。最后,这解决了我的问题。希望你没有浪费这么多时间。 这太疯狂了。我想返回一个错误消息太容易了,比如“发件人地址与信封发件人不匹配”。或“用户名和电子邮件地址不匹配”。 SMTP 是一个开放标准。 Microsoft 不应通过 SMTP 返回特定于实现的消息,这些消息属于服务器日志。理想情况下,我们不知道我们发送的环境是什么。在我们开始寻找解决方案之前,我们不应该花费数小时搜索 SMTP 错误的含义。 您的回答有效,但不幸的是,您链接的页面显示“Microsoft 将从 2021 年 5 月 10 日起取消将新帐户连接到 Outlook.com 的功能。”似乎他们已经删除了它,我们现在无法添加其他发送地址。【参考方案3】:尝试了 4 天后,邮件开始使用端口:25 触发,所以不要尝试使用 587 或 465。尝试使用其他端口号。
主机:“smtp.office***.*”, 端口:25, 安全连接:假, 要求TLS:真, tls: 密码:'SSLv3' , 授权: 用户:*, 经过: ***
【讨论】:
【参考方案4】:我遇到了类似的问题,我现在解决了, 您很可能会遇到此问题,因为您在 auth 选项中的“用户”电子邮件和在邮件选项中的“发件人”电子邮件不同
使用户和电子邮件相同,它将为您工作
const transporter = nodemailer.createTransport(
service: 'outlook',
port: 587,
auth:
user: 'abcde@outlook.com',
pass: '******'
,
tls:
rejectUnauthorized: false
);
// setup email data with unicode symbols
let mailOptions =
from: "abcde@outlook.com", // sender address
to: 'xyz@gmail.com', // list of receivers
subject: 'Node Contact Request', // Subject line
text: 'Hello world?', // plain text body
html: output // html body
;
// send mail with defined transport object
transporter.sendMail(mailOptions, (error, info) =>
console.log(info);
if (error)
return console.log(error);
console.log('Message sent: %s', info.messageId);
console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));
);
如果您的电子邮件未通过验证,您可能会收到更多错误
【讨论】:
【参考方案5】:我使用 Hotmail 并遇到了这个问题,但通过将 MAIL_FROM_ADDRESS
编辑为与 MAIL_USERNAME
相同来解决它
下面是我设置的 env 文件。
MAIL_MAILER=smtp
MAIL_HOST=smtp-mail.outlook.com
MAIL_PORT=587
MAIL_USERNAME=myemail@hotmail.com (this must be the same as MAIL_FROM_ADDRESS!)
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=myemail@hotmail.com (this must be the same as MAIL_USERNAME!)
完成上述操作后一切正常。
【讨论】:
【参考方案6】:您也可以使用此邮件驱动程序: https://github.com/motze92/office365-mail
您可以在此处指定租户有权使用的任何发件人电子邮件地址。已发送的电子邮件也将进入收件人已发送项目文件夹。
【讨论】:
【参考方案7】:对于这个问题,请检查 jenkins 系统管理员电子邮件,它与 smtp 用户电子邮件相同
【讨论】:
【参考方案8】:对我有用的是将DEFAULT_FROM_EMAIL
设置为EMAIL_HOST_USER
。
使用 Office 365 SMTP 和 Django 3.0.10。
【讨论】:
以上是关于无法使用 office365 设置发送 SMTP 邮件的主要内容,如果未能解决你的问题,请参考以下文章
fsockopen 超时,无法连接到 Office 365 SMTP