python自带的smtplib模块对邮件发送提供了支持,所以首先要import smtplib。
# coding:utf-8
import smtplib
from email.mime.text import MIMEText
# 收件人列表
mailto_list=["XXXXX@qq.com;XXXXXX@qq.com"]
# 设置服务器
mail_host="smtp.qq.com"
# 用户名
mail_user="yourmail"
# 密码
mail_pass="password"
# 发件箱后缀
mail_postfix="qq.com"
# to_list:收件人;sub:主题;content:邮件内容
def send_mail(to_list,sub,content):
# 这里的hello可以任意设置,收到信后,将按照设置显示
me="hello"+"<"+mail_user+"@"+mail_postfix+">"
# msg = MIMEText(content,subtype='html',charset='gb2312') # 创建一个实例,这里设置为html格式邮件
msg = MIMEText(content,_subtype='plain') # 设置为文本格式邮件
msg['Subject'] = sub # 设置主题
msg['From'] = me
msg['To'] = ";".join(to_list) # 将收件人列表以“;”隔开
try:
s = smtplib.SMTP()
s.connect(mail_host) # 连接smtp服务器
s.login(mail_user,mail_pass) # 登陆服务器
s.sendmail(me, to_list, msg.as_string()) # 发送邮件
s.close()
return True
except Exception, e:
print str(e)
return False
for i in range(2): #发送2封,不过会被拦截的。。。
if send_mail(mailto_list,"hello","今天星期五了哦!"): #邮件主题和邮件内容
print "done!"
else:
print "failed!"
使用这种方法发送邮件很有可能会被视为垃圾邮件,需要对发送邮件账户开启stmp。
执行后会报“535 error Authentication failed”
另外,测试过163邮箱对QQ邮箱发送回屏蔽掉,QQ对163发送正常,QQ邮件对QQ邮箱发送也正常。一般公司会使用企业邮箱进行通知,具体看公司运维怎么做。
发送电子邮件内容有很多形式,本次是用文本形式发送的。还有网页形式,发送图片形式等。
那么针对安全机制,比如常见的公司邮箱大多都是用SSL加密,类似的可以参考一下:
补充:
s= smtplib.SMTP(mailserver)
# 设置为调试模式,就是在会话过程中会有输出信息
s.set_debuglevel(1)
# ehlo命令,docmd方法包括了获取对方服务器返回信息,如果支持安全邮件,返回值里会有starttls提示
s.docmd("EHLO server")
s.starttls() # <------ 这行就是新加的支持安全邮件的代码