这里用到了Python的两个包来发送邮件: smtplib 和 email 。
Python 的 email 模块里包含了许多实用的邮件格式设置函数,可以用来创建邮件“包裹”。使用的 MIMEText 对象,为底层的 MIME(Multipurpose Internet MailExtensions,多用途互联网邮件扩展类型)协议传输创建了一封空邮件,最后通过高层的SMTP 协议发送出去。 MIMEText 对象 msg 包括收发邮箱地址、邮件正文和主题,Python 通过它就可以创建一封格式正确的邮件。smtplib 模块用来设置服务器连接的相关信息。要想通过QQ邮箱来发送邮件,需要开启163邮箱的设置-账户里SMTP服务,接下来会通过发送短信验证来获得授权码,有了授权码后就可以在代码里添加了。
以下代码都是在python3.6环境下运行:
#coding=utf-8import smtplibfrom email.mime.text import MIMETextfrom_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'] = subjectmsg['From'] = from_mailmsg['To'] = to_mailtry: 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-8import smtplib, sysfrom email.mime.text import MIMETextcontent = "this is the first python email"subject = "mail test"msg = MIMEText(content)msg['Subject'] = subjectmsg['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()