前言

本篇总结了QQ邮箱和163邮箱发送邮件,邮件包含html中文和附件,可以发给多个收件人。

了解发邮件的思路,发送邮件需要的一些设置,发送一封简单的邮件,发送一封包含附件的邮件,在写代码过程中我们需要注意哪些问题等等。

163邮箱

1.先导入smtplib库用来发送邮件,导入MIMEText库用来做纯文本的邮件模板。

2.先准备几个跟发邮件相关的参数,每个邮箱的发件服务器都不一样,以163为例,百度搜到发件服务器为:smtp.163.com




java发送邮件 邮件内容居中 java邮件发送html_java发送邮件 邮件内容居中


3.接下来就是写邮件的主题和正文内容,正文这里用html格式的

4.最后调用发件服务


java发送邮件 邮件内容居中 java邮件发送html_发送邮件_02


5.参考代码:


java发送邮件 邮件内容居中 java邮件发送html_发邮件_03


java发送邮件 邮件内容居中 java邮件发送html_发送邮件_04


java发送邮件 邮件内容居中 java邮件发送html_发送邮件_05



QQ邮件

1.QQ邮箱是需要SSL认证的,这种邮箱跟上面的就有点不一样了


java发送邮件 邮件内容居中 java邮件发送html_发邮件_06


2.找到QQ邮箱授权码,打开QQ邮箱-设置-账号-POP3开启服务-开启

(如果已经开启了,不知道授权码,就点温馨提示里面的‘生成授权码’)


java发送邮件 邮件内容居中 java邮件发送html_python_07


3.发验证短信获取授权码,照着提示发个短信,如何点我已发送,就会收到授权码了


java发送邮件 邮件内容居中 java邮件发送html_发送邮件_08


4.收到授权码后复制,保存下来,这个就可以当QQ邮箱的密码了


java发送邮件 邮件内容居中 java邮件发送html_发邮件_09


5.QQ邮箱发送邮件代码,跟163有点不一样,如下图红色框框:


java发送邮件 邮件内容居中 java邮件发送html_发送邮件_10


6.参考代码:


java发送邮件 邮件内容居中 java邮件发送html_python_11



兼容163和QQ邮箱

如果想兼容上面两种方式发送邮件,只需把第三块内容稍微改下,如下所示:


java发送邮件 邮件内容居中 java邮件发送html_python_12


发送带附件

1.上面的MIMEText只能发送正文,无法带附件,发送带附件的需要导入另外一个模块MIMEMultipart。

2.先读取要发送文件的内容,file_path是路径的参数名。

3.下图红色框file_name参数是发送的附件重新命名。


java发送邮件 邮件内容居中 java邮件发送html_java发送邮件 邮件内容居中_13


4.参考代码:


java发送邮件 邮件内容居中 java邮件发送html_java发送邮件 邮件内容居中_14



发给多个收件人

上面都是发给一个收件人,那么如何一次发给多个收件人呢?只需改两个小地方:

  • 把receiver参数改成list对象,单个多个都是可以收到的
  • msg["to"]这个参数不能用list了,得先把receiver参数转化成字符串,如下图所示


java发送邮件 邮件内容居中 java邮件发送html_python_15


4.参考代码:


java发送邮件 邮件内容居中 java邮件发送html_python_16



邮件收不到的几种原因

通过上面的代码,想必大家已经对发邮件有了基本的认识。

从整体上我们要把握整个过程的思路:

  • 登录
  • 写邮件
  • 发送

如果出现邮件收不到的情况,可以考虑以下几种情况:

  • from(发件人)或to(收件人)为空——会被认为是垃圾邮件。
  • Subject和正文内容不要用hello、hehe、test等单词。
  • 可能在垃圾信箱。
  • 如果前面可以收到,后来收不到,则需改下subject内容,最好把subject内容设置为动态,因为如果每一次都是同个subject,系统会拒收。
  • 部分像qq邮箱是ssl加密了的,需要用授权码去登录,否则无法发送。
  • 要是按照上面的步骤来报错了,说明代码抄错了,多检查几次。

(以上代码在python2和python3上都测试通过了!)


如果还有疑问的地方,欢迎评论留言给我们~