这里用到了Python的两个包来发送邮件: smtplib 和 email 。
Python 的 email 模块里包含了许多实用的邮件格式设置函数,可以用来创建邮件“包裹”。使用的 MIMEText 对象,为底层的 MIME(Multipurpose Internet MailExtensions,多用途互联网邮件扩展类型)协议传输创建了一封空邮件,最后通过高层的SMTP 协议发送出去。 MIMEText 对象 msg 包括收发邮箱地址、邮件正文和主题,Python 通过它就可以创建一封格式正确的邮件。smtplib 模块用来设置服务器连接的相关信息。
要想通过QQ邮箱来发送邮件,需要开启163邮箱的设置-账户里SMTP服务,接下来会通过发送短信验证来获得授权码,有了授权码后就可以在代码里添加了。
以下代码都是在python3.6环境下运行:
#coding=utf-8 import smtplib from email.mime.text import MIMEText from_mail = "xxxx@163.com" # 发件人 to_mail = "xxxx@qq.com" # 收件人 mail_passwd = "xxxx" # 163邮件的授权码而不是登录密码 content = "this is the first python email" subject = "mail test" msg = MIMEText(content) msg['Subject'] = subject msg['From'] = from_mail msg['To'] = to_mail try: s = smtplib.SMTP() s.connect('smtp.163.com') # 连接到smtp服务器 s.login(from_mail,mail_passwd) # 登录163邮箱 s.sendmail(from_mail,to_mail,msg.as_string()) # 使用smtp服务器向外发送邮件 print("OK") except Exception as e: print(e) finally: s.close()
#coding=utf-8 import smtplib, sys from email.mime.text import MIMEText content = "this is the first python email" subject = "mail test" msg = MIMEText(content) msg['Subject'] = subject msg['From'] = sys.argv[1] # 使用脚本外带的参数输入发件人,收件人以及授权码 msg['To'] = sys.argv[3] try: s = smtplib.SMTP() s.connect('smtp.163.com') s.login(sys.argv[1],sys.argv[2]) s.sendmail(sys.argv[1],sys.argv[3],msg.as_string()) print("OK") except Exception as e: print(e) finally: s.close()