python基于SMTP协议发送邮件
程序员文章站
2022-10-15 13:30:20
本文实例为大家分享了python基于smtp协议发送邮件的具体代码,供大家参考,具体内容如下
#!/usr/bin/env python
# -*- codin...
本文实例为大家分享了python基于smtp协议发送邮件的具体代码,供大家参考,具体内容如下
#!/usr/bin/env python # -*- coding: utf-8 -*- """ @time : 2018/5/31 @author : liuxuewen @site : @file : sendemail.py @software: pycharm @description: 使用smtp协议发送邮件,支持同时发送给多个地址,支持同时发送文本信息、超文本信息和多附件 """ import smtplib from email.mime.text import mimetext from email.mime.multipart import mimemultipart from email.header import header import os class properties(): # 设置服务器, "smtp.xx.com" mail_host = "smtp.qq.com" # 用户名 mail_user = "@qq.com" # 口令 mail_pass = "" # smtp服务器端口,每个服务商提供的邮件服务端口可能不一致,465是腾讯的端口 mail_port = 465 # 发送邮件的地址 sender = "@vip.qq.com" # 接收邮件,可设置为你的qq邮箱或者其他邮箱,list类型,可同时填写多个地址并以,分割 receivers = "@qq.com","@qq.com" # 邮件发送的内容 messagetext = "测试使用\n" # 邮件发送的超文本内容 messagehtml = """ <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>test</title> </head> <body> <img src="http://a.hiphotos.baidu.com/image/pic/item/730e0cf3d7ca7bcb6a172486b2096b63f624a82f.jpg" alt="test" width="200px" height="200px"> </body> </html> """ # 发送邮件方的别名展示(类似昵称),为空则显示发件方地址 messagefromheader = "" # 接收邮件方的展示信息 messagetoheader = "test python" # 邮件主题 messagesubject = "ceshiceshi123" # 需要发送的附件的详细地址,支持多附件发送,附件之间以,分割 filepaths = '1.txt','2.txt','3.txt' def sendmail(): # 下面所有参数均可通过配置文件配置获取 """ :param mail_host: 设置服务器,"smtp.xx.com" :param mail_user: 用户名 :param mail_pass: 口令 :param sender: 发送邮件的地址 :param receivers: 接收邮件,可设置为你的qq邮箱或者其他邮箱 :param messagetext: 邮件发送的文本内容 :param messagehtml: 邮件发送的超文本内容 :param messagefromheader: 发送邮件方的别名展示(类似昵称) :param messagetoheader: 接收邮件方的展示信息 :param messagesubject: 邮件主题 :param filepath: 附件详细地址 :return: """ # 需要获取的参数列 mail_host = properties.mail_host mail_user = properties.mail_user mail_pass = properties.mail_pass mail_port = properties.mail_port sender = properties.sender receivers = properties.receivers messagetext = properties.messagetext messagehtml = properties.messagehtml messagefromheader = properties.messagefromheader # 如果发件人昵称未填写则直接使用发件人地址作为名称 if messagefromheader == "": messagefromheader = sender messagetoheader = properties.messagetoheader messagesubject = properties.messagesubject filepaths = properties.filepaths # 邮件类型为"multipart/alternative"的邮件包括纯文本正文(text / plain)和超文本正文(text / html)。 # 邮件类型为"multipart/related"的邮件正文中包括图片,声音等内嵌资源。 # 邮件类型为"multipart/mixed"的邮件包含附件。向上兼容,如果一个邮件有纯文本正文,超文本正文,内嵌资源,附件,则选择mixed类型。 message = mimemultipart('mixed') # 邮件显示信息内容 # 发送邮件方的头部展示信息 message['from'] = header(messagefromheader, 'utf-8') # 接收邮件方的展示信息 message['to'] = header(messagetoheader, 'utf-8') # 邮件主题 message['subject'] = header(messagesubject, 'utf-8') try: # 发送邮件附件,支持多附件发送 for filepath in filepaths: messagefile = open(filepath, 'rb').read() message_file = mimetext(messagefile, 'base64', 'utf-8') message["content-type"] = 'application/octet-stream' # 目前发送附件不能使用message_file["content-disposition"] = 'attachment; filename="aaa.txt"'方式发送信息 message_file.add_header('content-disposition', 'attachment', filename=os.path.basename(filepath)) # 附件内容 message.attach(message_file) except exception as e: print "附件发送失败:" + str(e) # 一共三个参数,第一个为发送文本信息,第二个发送类型,第三个发送信息的编码。如果想要发送html类型的信息,仅需要修改第二个参数'plain'为'html'即可 # 文本信息,使用‘plain'属性不能正常显示 message_text = mimetext(messagetext, 'html', 'utf-8') message.attach(message_text) # 超文本信息 message_html = mimetext(messagehtml, 'html', 'utf-8') message.attach(message_html) try: # 因为现在很多服务商做了安全验证,所有在发送邮件的时候需要把原来的smtplib.smtp()改成现在的smtplib.smtp_ssl()方式 smtpobj = smtplib.smtp_ssl() # 链接邮件服务器 smtpobj.connect(mail_host, mail_port) # 登录邮件系统 smtpobj.login(mail_user, mail_pass) # 发送邮件信息 smtpobj.sendmail(sender,receivers,message.as_string()) print "邮件发送成功" except exception as e: print("邮件发送失败,错误信息:" + str(e)) if __name__ == '__main__': sendmail()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
Python使用smtplib模块发送电子邮件的流程详解
-
python实现QQ邮箱/163邮箱的邮件发送
-
python自动发送测试报告邮件功能的实现
-
使用Python发送各种形式的邮件的方法汇总
-
python编程排除163邮箱发送邮件报错(AttributeError: ‘tuple‘ object has no attribute ‘encode‘)
-
用smtplib和email封装python发送邮件模块类分享
-
使用Python发送邮件附件以定时备份MySQL的教程
-
python基于SMTP协议发送邮件
-
python爬取基于m3u8协议的ts文件并合并
-
python发送邮件示例(支持中文邮件标题)