背景,开源工作流引擎AntFlow,gitcode地址通知系统需要配置一个邮箱地址才能供用户展示发送邮件通知功能.最初在开发阶段我使用的是个人163邮箱,本来没什么问题.然而当注册一个新的网易邮箱并在配置里替换掉原来个人邮箱后,竟然出现535 Error: authentication failed 异常,经过网上搜索资料发现需要设置授权码(然而我的老邮件是不用设置的,直接用用户名密码就可以通过java程序发送邮件了).当然除了这个地方,还有些其它的小坑,有些坑是隐藏的,在特定场景下才会出现.因此记录下来,除了方便自己日后查询,也方便其它朋友避坑.
关于网易邮箱注册
这一块没有太多要说的,这篇文章主要是面向程序员的,估计程序没没有太多人连基本的邮箱注册指引都不会看.需要注意的一点是现在现在注册网易邮箱一定要输入手机号验证,输入完以后点下一步时会出现一个二维码,这个二维码不一定是要用网易邮箱手机客户端扫码,使用微信扫码即可,扫码完成以后手机会跳转到发短信界面,并且会把短信内容填写好.这时候直接发送就可以了.
需要注意的是发送完短信后对方并不会给你一个回执,这时候点击下一步继续即可.
设置POP3/SMTP
注册完成以后,通过网易邮箱客户端web界面收发短信是没有问题的.如果想要在java中使用你注册的163邮箱来发送邮件,则需要设置,由于网易邮箱web界面不断的在调整更新,因此按钮的位置布局可能会和本文展示的不一样,但是总体上大同小异.
进入到邮箱以后点击设置按钮,会出现一个下拉框,这时候选择POP3/SMPT/IMAP如下图示
这时候出现下面设置界面
把这两项服务都开启.开启时需要短信验证,和上面说的注册步骤里是一样.
这时候弹出的框可能是下载网易邮箱客户端,点击关闭即可,关闭了以后就会出现上面的发送短信扫码框.使用微信扫码后会跳到短信发送页,内容已经填写好了,这时候只需要点发送即可.发送完以后对方不会给你回执,你在页面点击我已发送,然后继续
新增授权码
笔者就失败在了这一步,使用新注册的用户名和邮箱无法通过java程序发送邮件,提示535 Error: authentication failed
继续往下拉,点击新增授权码,这时候仍然会让发短信,和上面操作差不多.成功以后会弹出一个新增授权码成功的界面.这时候将授权码复制出来.因为后面不会再显示了
在java程序中使用的时候,使用这个授权码作为密码就可以正常发送邮件了
java邮箱客户端工具非常多,网上示例也非常多,这里不再详细介绍了.
避免title过长
发送邮件时如果title过长可能导致失败,程序上线后又不可能实时去看发送的每一封邮件.设置title的时候可以设置超过一定长度.比如100个字符以后就截断.具体是多长,是各家客户端自己限制的还是协议限制的,笔者并没有详细了解.我设置的是130个字符,是没有问题的.