详解Python发送邮件实例

python发送邮件需要smtplib和email两个模块。也正是由于我们在实际工作中可以导入这些模块,才使得处理工作中的任务变得更加的简单。今天,就来好好学习一下使用python发送邮件吧。

SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。

1.邮件正文是文本的格式

# -*- coding: UTF-8 -*-from email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextimport smtplibimport sysimport csvimport xlrdfrom pyExcelerator import *import osimport xlwtfrom xlutils.copy import copyimport pyExceleratorimport datetimeimport timereload(sys)sys.setdefaultencoding("utf-8")mailto_list = [""] # 邮件接收方的邮件地址mail_host = "smtp.exmail.qq.com"  # 邮件传送协议服务器mail_user = "" # 邮件发送方的邮箱账号mail_pass = "" # 邮件发送方的邮箱密码def send_mail(to_list, sub, content):  me = "天才白痴梦"+""  msg = MIMEText(content, _subtype='plain', _charset='utf-8')  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 Falseif __name__ == '__main__':  sub = "天才白痴梦"  content = '...'  if send_mail(mailto_list, sub, content):    print "发送成功"  else:    print "发送失败"

登录后复制

2.邮件正文是表格的格式:由于是表格,所以我们选择HTML来实现表格的功能,邮件上面显示的就是HTML实现的内容了。

# -*- coding: UTF-8 -*-from email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextimport smtplibimport sysimport csvimport xlrdfrom pyExcelerator import *import osimport xlwtfrom xlutils.copy import copyimport pyExceleratorimport datetimeimport timereload(sys)sys.setdefaultencoding("utf-8")mailto_list = [""] # 邮件接收方的邮件地址mail_host = "smtp.exmail.qq.com"  # 邮件传送协议服务器mail_user = "" # 邮件发送方的邮箱账号mail_pass = "" # 邮件发送方的邮箱密码def send_mail(to_list, sub, content):  me = "天才白痴梦"+""  # 和上面的代码不同的就是,这里我们选择的是html 的格式  msg = MIMEText(content, _subtype='html', _charset='utf-8')  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 Falseif __name__ == '__main__':  sub = "天才白痴梦"  html = ''  if send_mail(mailto_list, sub, html):    print "发送成功"  else:    print "发送失败"

登录后复制

3.邮件正文是图片的格式:要把图片嵌入到邮件正文中,我们只需按照发送附件的方式,先把邮件作为附件添加进去,然后,在HTML中通过引用src=”cid:0″就可以把附件作为图片嵌入了。如果有多个图片,给它们依次编号,然后引用不同的cid:x即可。

def send_mail(to_list, sub, content):  me = "天才白痴梦"+""  msg = MIMEMultipart()  msg['Subject'] = sub  # 邮件主题  msg['From'] = me  msg['To'] = ";".join(to_list)  txt = MIMEText("天才白痴梦", _subtype='plain', _charset='utf8')  msg.attach(txt)  # :黑体 :斜体  msgText = MIMEText('Some HTML text and an image.@@##@@good!', 'html', 'utf-8')  msg.attach(msgText)  file1 = "F:\1.jpg"  image = MIMEImage(open(file1, 'rb').read())  image.add_header('Content-ID', '')  msg.attach(image)  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 Falseif __name__ == '__main__':  sub = "天才白痴梦"  html = ''  if send_mail(mailto_list, sub, html):    print "发送成功"  else:    print "发送失败"

登录后复制

4.发送邮件附件:邮件附件是图片

def send_mail(to_list, sub, content):  me = "天才白痴梦"+""  msg = MIMEMultipart()  msg['Subject'] = sub  # 邮件主题  msg['From'] = me  msg['To'] = ";".join(to_list)  txt = MIMEText("天才白痴梦", _subtype='plain', _charset='utf8')  msg.attach(txt)  # # :黑体 :斜体  # msgText = MIMEText('Some HTML text and an image.@@##@@good!', 'html', 'utf-8')  # msg.attach(msgText)  #  # file1 = "F:\1.jpg"  # image = MIMEImage(open(file1, 'rb').read())  # image.add_header('Content-ID', '')  # msg.attach(image)  att = MIMEText(open('F:\1.jpg', 'rb').read(), 'base64', 'utf-8')  att["Content-Type"] = 'application/octet-stream'  att["Content-Disposition"] = 'attachment; filename="1.jpg"'  msg.attach(att)  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

登录后复制

5.发送群邮件:同时发送给多人
mailto_list = [“”]  # 邮件接收方的邮件地址
上面这一行代码是邮件接收方的邮件地址,如果我们需要给多人发送邮件的话,就只需要把对方的邮件帐号绑在这一个列表里就ok了。

加密SMTP

使用标准的25端口连接SMTP服务器时,使用的是明文传输,发送邮件的整个过程可能会被窃听。要更安全地发送邮件,可以加密SMTP会话,实际上就是先创建SSL安全连接,然后再使用SMTP协议发送邮件。

立即学习“Python免费学习笔记(深入)”;

方法:只需要在创建SMTP对象后,立刻调用starttls()方法,就创建了安全连接。

smtp_server = 'smtp.qq.com'smtp_port = 25  # 默认端口号为25server = smtplib.SMTP(smtp_server, smtp_port)server.starttls()# 剩下的代码和前面的一模一样:server.set_debuglevel(1)   # 打印出和SMTP服务器交互的所有信息

登录后复制

以上就是关于Python发送邮件详细解析,希望对大家的学习有所帮助。

详解Python发送邮件实例详解Python发送邮件实例

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2535310.html

(0)
上一篇 2025年3月5日 22:29:15
下一篇 2025年3月5日 22:29:22

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论