最近在搞一个邮件RestfulAPI的邮件系统, 通过接口可直接发送邮件, 后端使用的是outlook,在测试过程发现会提示 Unrecognized authentication type错误, 折腾一下终于解决了, 记录一下.
刚开始的时候使用的是PlainAuth类型的认证方式, 因为之前的一个账号一直使用,没出过问题, 到这里就提示以下错误
1 | 504 5.7.4 Unrecognized authentication type [xxx.prod.partner.outlook.cn] |
这个意思很明确, 不能识别的认证方式,PlainAuth这里简单说一下,PlainAuth的是大部分的邮件系统都支持的认证, 但由于是明文传输, 安全性不太好, 因此很多公司默认都关闭了.
可以通过telnet命令来查看一下邮件服务器支持的验证方式:
1 | telnet yourmailserver 25 |
可以看到在这里是不支持PlainAuth
这种认证方式的, 因此可以使用STARTTLS
这种支持的方式
好在大部分情况下都支持我们使用自定义的认证.
1 | type loginAuth struct { |
将auth 从PlainAuth切换至自定义的auth即可.
目前该小工具已经开源, github在这里, 感兴趣的可以查看README.md
参考文章:
- https://being23.github.io/2015/09/17/%E4%BD%BF%E7%94%A8golang%E5%8F%91%E9%80%81%E9%82%AE%E4%BB%B6/](https://being23.github.io/2015/09/17/使用golang发送邮件/
- https://github.com/zhoushuke/sendxmail
- http://blog.fatedier.com/2015/08/20/use-smtp-to-sendmail-in-go-and-some-problems-with-smtp/
- https://blog.51cto.com/linxucn/837365