标签:
几种邮件的具体实施代码
1、普通文本邮件
普通文本邮件发送的实现,关键是要将MIMEText中_subtype设置为plain。首先导入smtplib和mimetext。创建smtplib.smtp实例,connect邮件smtp服务器,login后发送。
1 #coding: utf-8 2 ‘‘‘ 3 发送txt文本邮件 4 ‘‘‘ 5 import smtplib 6 from email.mime.text import MIMEText 7 8 mailto_list = [‘xxxxxx@qq.com‘] 9 mail_host = "smtp.126.com" 10 mail_user = "xxxx" 11 mail_pass = "xxxx" 12 mail_postfix = "126.com" 13 14 def send_mail(to_list, sub, content): 15 me = "hello"+"<"+mail_user+"@"+mail_postfix+">" 16 msg = MIMEText(content, _subtype=‘plain‘, _charset=‘gb2312‘) 17 msg[‘Subject‘] = sub 18 msg[‘From‘] = me 19 msg[‘To‘] = ";".join(to_list) 20 try: 21 server = smtplib.SMTP() 22 server.connect(mail_host) 23 server.login(mail_user,mail_pass) 24 server.sendmail(me, to_list, msg.as_string()) 25 server.close() 26 return True 27 except Exception, e: 28 print str(e) 29 return False 30 31 if __name__==‘__main__‘: 32 if send_mail(mailto_list, "hello", "hello world!"): 33 print "发送成功" 34 else: 35 print "发送失败"
2、html邮件的发送
与text邮件不同之处就是将将MIMEText中_subtype设置为html
1 #coding: utf-8 2 ‘‘‘ 3 发送html文本邮件 4 ‘‘‘ 5 import smtplib 6 from email.mime.text import MIMEText 7 8 mailto_list = [‘xxxxxx@qq.com‘] 9 mail_host = "smtp.126.com" #设置服务器 10 mail_user = "xxxx" #设置用户名 11 mail_pass = "xxxx" #口令 12 mail_postfix = "126.com" #发件邮箱后缀 13 14 def send_mail(to_list, sub, content): #to_list: 收件人; sub: 主题; content: 邮件内容 15 me = "hello"+"<"+mail_user+"@"+mail_postfix+">" #此处的hello可以任意设置,收到邮件后,按照设置显示 16 msg = MIMEText(content, _subtype=‘html‘, _charset=‘gb2312‘) #创建一个实例,这里设置为html格式邮件 17 msg[‘Subject‘] = sub #设置主题 18 msg[‘From‘] = me 19 msg[‘To‘] = ";".join(to_list) 20 try: 21 server = smtplib.SMTP() 22 server.connect(mail_host) #连接smtp服务器 23 server.login(mail_user,mail_pass) #登陆服务器 24 server.sendmail(me, to_list, msg.as_string()) #发送邮件 25 server.close() 26 return True 27 except Exception, e: 28 print str(e) 29 return False 30 31 if __name__==‘__main__‘: 32 if send_mail(mailto_list, "hello", "<a href=‘http://www.baidu.com‘> baidu </a>"): 33 print "发送成功" 34 else: 35 print "发送失败"
3、带附件的邮件
发送带附件的邮件,首先要创建MIMEMultipart()实例,然后构造附件,如果有多个附件,可依次构造,最后利用smtplib.smtp发送
# -*- coding: cp936 -*- ‘‘‘ 发送带附件邮件 ‘‘‘ from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import smtplib #创建一个带附件的实例 msg = MIMEMultipart() #构造附件1 att1 = MIMEText(open(‘d:\\123.rar‘, ‘rb‘).read(), ‘base64‘, ‘gb2312‘) att1["Content-Type"] = ‘application/octet-stream‘ att1["Content-Disposition"] = ‘attachment; filename="123.doc"‘#这里的filename可以任意写,写什么名字,邮件中显示什么名字 msg.attach(att1) #构造附件2 att2 = MIMEText(open(‘d:\\123.txt‘, ‘rb‘).read(), ‘base64‘, ‘gb2312‘) att2["Content-Type"] = ‘application/octet-stream‘ att2["Content-Disposition"] = ‘attachment; filename="123.txt"‘ msg.attach(att2) #加邮件头 msg[‘to‘] = ‘YYY@YYY.com‘ msg[‘from‘] = ‘XXX@XXX.com‘ msg[‘subject‘] = ‘hello world‘ #发送邮件 try: server = smtplib.SMTP() server.connect(‘smtp.XXX.com‘) server.login(‘XXX‘,‘XXXXX‘)#XXX为用户名,XXXXX为密码 server.sendmail(msg[‘from‘], msg[‘to‘],msg.as_string()) server.quit() print ‘发送成功‘ except Exception, e: print str(e)
4、利用MIMEimage发送图片
1 # -*- coding: cp936 -*- 2 import smtplib 3 import mimetypes 4 from email.mime.text import MIMEText 5 from email.mime.multipart import MIMEMultipart 6 from email.mime.image import MIMEImage 7 8 def AutoSendMail(): 9 msg = MIMEMultipart() 10 msg[‘From‘] = "XXX@XXX.com" 11 msg[‘To‘] = "YYY@YYY.com" 12 msg[‘Subject‘] = "hello world" 13 14 15 txt = MIMEText("这是中文的邮件内容哦",‘plain‘,‘gb2312‘) 16 msg.attach(txt) 17 18 19 file1 = "C:\\hello.jpg" 20 image = MIMEImage(open(file1,‘rb‘).read()) 21 image.add_header(‘Content-ID‘,‘<image1>‘) 22 msg.attach(image) 23 24 25 server = smtplib.SMTP() 26 server.connect(‘smtp.XXX.com‘) 27 server.login(‘XXX‘,‘XXXXXX‘) 28 server.sendmail(msg[‘From‘],msg[‘To‘],msg.as_string()) 29 server.quit() 30 31 if __name__ == "__main__": 32 AutoSendMail()
html中添加<Img src=‘cid:hello.jpg‘>,图片不会出现附件中。
标签:
原文地址:http://www.cnblogs.com/nju2014/p/4591711.html