目前有那么一个需求,也就是我个人的blog需要用到Exchange Online的SMTP发信服务。创建好了账号以后无论是使用foxmail、outlook 2010还是其它客户端,均提示密码错误、登录失败等情况。

通过官方查询,貌似已经默认禁止了这个服务或者停用了这个验证方式,但是公布的内个网址找不到了。

这两天也是闲的吧,查了查,第一个查到的是https://answers.microsoft.com/en-us/msoffice/forum/all/configuration-for-imap-pop-and-smtp-with-oauth-in/3db47d43-25ac-4e0b-b957-22585e6caf15 但是没什么卵用,依然会提示失败,貌似配置完了以后使用的是SMTP OAuth验证的方式。

最后无意当中,搜到了一个老哥发布的文章,这个老哥也是 有这个困惑。最终通过它的命令解决了这个问题。 点我去原文链接

 

主要的操作方法如下:

1、使用支持Powershell的电脑,安装插件并且远程登录到 Exchange Online Powershell服务。

如果没有安装模块,需要先安装模块,以下命令需要在powershell中运行。

Install-Module -Name ExchangeOnlineManagement               (所有用户) Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser          (当前用户)

 

2、远程登录到 Exchange Online Powershell

从本地powershell中输入以下命令

Connect-ExchangeOnline -UserPrincipalName xxx@xxxxx.partner.onmschina.cn -ExchangeEnvironmentName O365China

要将xxx@xxxxx.partner.onmschina.cn 替换为个人账户,比如 admin@tencentcn.partner.onmischina.cn 这种,回车后会有个弹窗,输入密码,正确即可登录。

需要提前开通一个邮箱(分配一个office365 的exchange online 账号权限),比如邮箱账号是 postmaster@249249.xyz

Set-CASMailbox -Identity <邮箱账户> -SmtpClientAuthenticationDisabled $false

最后,通过客户端登录即可!可用于本地打印机发信、邮箱SMTP发信等不需要POP3及IMAP服务的一些设备。

登录的时候协议记得选择TSL或者SSL,端口尽可能的设置成587,SMTP服务器地址设置为:smtp.partner.outlook.cn

比如当前我博客使用的postmaster#249294.xyz 就是使用的Exchange Online的SMTP发信服务。而且Outlook 的Web端是可以看到发信记录的。

 

另外还有个办法,但是觉得这个不太靠谱。就是设置个SMTP中继,适合有公网IP的设备进行发信。

直接按照 选项(2) 中的说明操作即可,然后发信的时候把SMTP认证关掉,类似于匿名形式的登录。一定要限制IP!!!!否则风险极大!即便限制了IP发信,对我来说这种东西都是风险极大的存在。https://learn.microsoft.com/zh-cn/exchange/mail-flow-best-practices/how-to-set-up-a-multifunction-device-or-application-to-send-email-using-microsoft-365-or-office-365#option-1-recommended-authenticate-your-device-or-application-directly-with-a-microsoft-365-or-office-365-mailbox-and-send-mail-using-smtp-auth-client-submission

这个方式我测试过,确实可用,但是发信延迟得不到保障。

如果一定需要使用到POP或者IMAP,建议从这个 Set-CASMailbox -Identity <邮箱账户> -SmtpClientAuthenticationDisabled $false 命令下手去查询。