python发送邮件
1、python发送普通文本邮件
import smtplib from email.mime.text import MIMEText mailto_list=["YYY@YYY.com"] #设置收件人 mail_host="XXX.XXX.com" #设置服务器
mail_port=xxx #设置服务器端口号 mail_user="XXX" #用户名 mail_pass="XXXX" #口令
def send_mail(to_list,sub,content): #to_list:收件人;sub:主题;content:邮件内容 me="XXX.XXX.com"#设置发件人 msg = MIMEText(content,_subtype='html',_charset='UTF-8') #创建一个实例,这里设置为html格式邮件 msg['Subject'] = sub #设置主题 msg['From'] = me msg['To'] = ";".join(to_list) try: s = smtplib.SMTP() s.connect(mail_host,mail_port) #连接smtp服务器,mail_port默认为25 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 if __name__ == '__main__': if send_mail(mailto_list,"hello","python发送出来的邮件"): print "发送成功" else: print "发送失败"
2、python发送html格式邮件
import smtplib from email.mime.text import MIMEText mailto_list=["YYY@YYY.com"] #设置收件人 mail_host="XXX.XXX.com" #设置服务器 mail_port=xxx #设置服务器端口号 mail_user="XXX" #用户名 mail_pass="XXXX" #口令 def send_mail(to_list,sub,content): #to_list:收件人;sub:主题;content:邮件内容 me="XXX.XXX.com" #设置发件人 msg = MIMEText(content,_subtype='html',_charset='gb2312') #创建一个实例,这里设置为html格式邮件 msg['Subject'] = sub #设置主题 msg['From'] = me msg['To'] = ";".join(to_list) try: s = smtplib.SMTP() s.connect(mail_host,mail_port) #连接smtp服务器,端口号默认为25 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 if __name__ == '__main__': if send_mail(mailto_list,"hello","<a href='http://www.baidu.com'>百度一下</a>"): print "发送成功" else: print "发送失败"
3、发送带正文和附件的邮件
#coding=utf-8 from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import smtplib #创建一个带附件的实例 msg = MIMEMultipart() #构造邮件正文内容,注意构造邮件正文只能有一个 #注意正文部分一定要放在第一位置,如果放在后面构造附件代码的后面attach,那么就会变成附件内容处理 contentText= MIMEText("这是带有附件的邮件,详情见附件") #貌似可省略subtype和charset设置也能正常显示,最好加上咯 msg.attach(contentText) #构造邮件正文内容,可读取文件内容作为正文 #contentText1 = MIMEText(open('D:\\test\\login.html', 'rb').read(), _subtype='html',_charset='utf-8') #msg.attach(contentText1 ) #构造附件1 att1 = MIMEText(open('D:\\test\\login.html', 'rb').read(), 'base64', 'utf-8') att1["Content-Type"] = 'application/octet-stream' att1["Content-Disposition"] = 'attachment; filename="login.html"'#这里的filename可以任意写,实际上是在邮件中这个附件显示的文件名 msg.attach(att1) #构造附件2 att2 = MIMEText(open('D:\\BugReport.txt', 'rb').read(), 'base64', 'gb2312') att2["Content-Type"] = 'application/octet-stream' att2["Content-Disposition"] = 'attachment; filename="BugReport.txt"' #这里的filename可以任意写,实际上是在邮件中这个附件显示的文件名 msg.attach(att2) #加邮件头 msg['to'] = 'XXX@rd.com' msg['from'] = 'XXX@rd.com' msg['subject'] = 'hello world' #发送邮件 try: server = smtplib.SMTP() server.connect('exchange-3.rd.com',25)#默认端口号也是25 server.login('XXX','XXXXX')#XXX为用户名,XXXXX为密码 server.sendmail(msg['from'], msg['to'],msg.as_string()) server.quit() print '发送成功' except Exception, e: print str(e)