Python 发送邮件
2015-06-21 10:53
495 查看
几种邮件的具体实施代码
1、普通文本邮件
普通文本邮件发送的实现,关键是要将MIMEText中_subtype设置为plain。首先导入smtplib和mimetext。创建smtplib.smtp实例,connect邮件smtp服务器,login后发送。
2、html邮件的发送
与text邮件不同之处就是将将MIMEText中_subtype设置为html
3、带附件的邮件
发送带附件的邮件,首先要创建MIMEMultipart()实例,然后构造附件,如果有多个附件,可依次构造,最后利用smtplib.smtp发送
4、利用MIMEimage发送图片
html中添加<Img src='cid:hello.jpg'>,图片不会出现附件中。
1、普通文本邮件
普通文本邮件发送的实现,关键是要将MIMEText中_subtype设置为plain。首先导入smtplib和mimetext。创建smtplib.smtp实例,connect邮件smtp服务器,login后发送。
#coding: utf-8 ''' 发送txt文本邮件 ''' import smtplib from email.mime.text import MIMEText mailto_list = ['xxxxxx@qq.com'] mail_host = "smtp.126.com" mail_user = "xxxx" mail_pass = "xxxx" mail_postfix = "126.com" def send_mail(to_list, sub, content): me = "hello"+"<"+mail_user+"@"+mail_postfix+">" msg = MIMEText(content, _subtype='plain', _charset='gb2312') msg['Subject'] = sub msg['From'] = me msg['To'] = ";".join(to_list) try: server = smtplib.SMTP() server.connect(mail_host) server.login(mail_user,mail_pass) server.sendmail(me, to_list, msg.as_string()) server.close() return True except Exception, e: print str(e) return False if __name__=='__main__': if send_mail(mailto_list, "hello", "hello world!"): print "发送成功" else: print "发送失败"
2、html邮件的发送
与text邮件不同之处就是将将MIMEText中_subtype设置为html
#coding: utf-8 ''' 发送html文本邮件 ''' import smtplib from email.mime.text import MIMEText mailto_list = ['xxxxxx@qq.com'] mail_host = "smtp.126.com" #设置服务器 mail_user = "xxxx" #设置用户名 mail_pass = "xxxx" #口令 mail_postfix = "126.com" #发件邮箱后缀 def send_mail(to_list, sub, content): #to_list: 收件人; sub: 主题; content: 邮件内容 me = "hello"+"<"+mail_user+"@"+mail_postfix+">" #此处的hello可以任意设置,收到邮件后,按照设置显示 msg = MIMEText(content, _subtype='html', _charset='gb2312') #创建一个实例,这里设置为html格式邮件 msg['Subject'] = sub #设置主题 msg['From'] = me msg['To'] = ";".join(to_list) try: server = smtplib.SMTP() server.connect(mail_host) #连接smtp服务器 server.login(mail_user,mail_pass) #登陆服务器 server.sendmail(me, to_list, msg.as_string()) #发送邮件 server.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'> baidu </a>"): print "发送成功" else: 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发送图片
# -*- coding: cp936 -*- import smtplib import mimetypes from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.image import MIMEImage def AutoSendMail(): msg = MIMEMultipart() msg['From'] = "XXX@XXX.com" msg['To'] = "YYY@YYY.com" msg['Subject'] = "hello world" txt = MIMEText("这是中文的邮件内容哦",'plain','gb2312') msg.attach(txt) file1 = "C:\\hello.jpg" image = MIMEImage(open(file1,'rb').read()) image.add_header('Content-ID','<image1>') msg.attach(image) server = smtplib.SMTP() server.connect('smtp.XXX.com') server.login('XXX','XXXXXX') server.sendmail(msg['From'],msg['To'],msg.as_string()) server.quit() if __name__ == "__main__": AutoSendMail()
html中添加<Img src='cid:hello.jpg'>,图片不会出现附件中。
相关文章推荐
- 使用python的Paramiko模块登陆SSH
- python函数
- Python(2)(基本输入输出语句)
- Python_09-面向对象编程
- Python base64编码解码实例
- Python中type的构造函数参数含义说明
- Python多线程和队列操作实例
- Python文件读取的3种方法及路径转义
- 让Python代码更快运行的5种方法
- Python ValueError: invalid literal for int() with base 10 实用解决方法
- Python实现删除文件但保留指定文件
- Python os模块学习笔记
- Python实现线程池代码分享
- Python安装第三方库的3种方法
- Python的装饰器模式与面向切面编程详解
- Python中有趣在__call__函数
- Python中实现三目运算的方法
- Python Property属性的2种用法
- python3.3:文本文件读取、处理及保存。小练习
- numpy安装问题