本文实例为大家分享了python基于SMTP协议发送邮件的具体代码,供大家参考,具体内容如下
#?usr/bin/env python # - * -编码:utf - 8 - * ”“” @Time: 2018/5/31 @Author: LiuXueWen @Site: @File: sendEmail.py @Software: PyCharm @Description:使用SMTP协议发送邮件,支持同时发送给多个地址,支持同时发送文本信息,超文本信息和多附件 ”“” 进口smtplib 从email.mime。文本导入MIMEText 从email.mime。多部分进口MIMEMultipart 从电子邮件。头导入头 进口操作系统 类属性(): #设置服务器,“smtp.xx.com” mail_host=" smtp.qq.com " #用户名 mail_user=癅qq.com” #口令 mail_pass=" " # smtp服务器端口,每个服务商提供的邮件服务端口可能不一致,465是腾讯的端口 mail_port=465 #发送邮件的地址 发送方=癅vip.qq.com” #接收邮件,可设置为你的QQ邮箱或者其他邮箱,列表类型,可同时填写多个地址并以,分割 接收器=癅qq.com”、“@qq.com” #邮件发送的内容 messageText="测试使用\ n” #邮件发送的超文本内容 messageHTML=" " & lt; !DOCTYPE html> & lt; html lang=癳n”比; & lt; head> & lt;元charset=皍tf - 8”比; & lt; title> test & lt;/head> & lt; body> & lt; img src=" https://cache.yisu.com/upload/information/20200622/113/34694.gif " alt=安馐浴笨矶?" 200 px高度=?00 px”比; & lt;/body> & lt;/html> ”“” #发送邮件方的别名展示(类似昵称),为空则显示发件方地址 messageFromHeader=" " #接收邮件方的展示信息 messageToHeader=" 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发送方:发送邮件的地址 :param接收器:接收邮件,可设置为你的QQ邮箱或者其他邮箱 :param messageText:邮件发送的文本内容 :param messageHTML:邮件发送的超文本内容 :param messageFromHeader:发送邮件方的别名展示(类似昵称) :param messageToHeader:接收邮件方的展示信息 :param messageSubject:邮件主题 :param filePath:附件详细地址 返回: ”“” #需要获取的参数列 mail_host=properties.mail_host mail_user=properties.mail_user mail_pass=properties.mail_pass mail_port=properties.mail_port 发送方=properties.sender 接收器=properties.receivers messageText=properties.messageText messageHTML=properties.messageHTML messageFromHeader=properties.messageFromHeader #如果发件人昵称未填写则直接使用发件人地址作为名称 如果messageFromHeader==啊? messageFromHeader=发送方 messageToHeader=properties.messageToHeader messageSubject=properties.messageSubject filePaths=properties.filePaths #邮件类型为“多部分/替代”的邮件包括纯文本正文(文本/普通)和超文本正文(text/html)。 #邮件类型为“多部分/相关”的邮件正文中包括图片,声音等内嵌资源。 #邮件类型为“多部分/混合”的邮件包含附件。向上兼容,如果一个邮件有纯文本正文,超文本正文,内嵌资源,附件,则选择混合类型。 消息=MIMEMultipart(混合) #邮件显示信息内容 #发送邮件方的头部展示信息 消息['从']=头(messageFromHeader,“utf - 8”) #接收邮件方的展示信息 消息[',']=头(messageToHeader,“utf - 8”) #邮件主题 消息(“主题”)=头(messageSubject,“utf - 8”) 试一试: #发送邮件附件,支持多附件发送 在filePath filePaths: messageFile=开放(filePath rb) .read () message_file=MIMEText (messageFile base64,“utf - 8”) 消息(“内容类型”)='应用程序/八进制的 #目前发送附件不能使用message_file(“附加”)='附件;文件名=" aaa.txt "的方式发送信息 message_file。add_header(“附加”,“附件”,文件名=os.path.basename (filePath)) #附件内容 message.attach (message_file) 除了例外e: 打印”附件发送失败:“+ str (e) 第#一共三个参数,一个为发送文本信息,第二个发送类型,第三个发送信息的编码。如果想要发送html类型的信息,仅需要修改第二个参数“纯”为“html”即可 #文本信息,使用“平原”属性不能正常显示 message_text=MIMEText (messageText、“html”、“utf - 8”) message.attach (message_text) #超文本信息 message_html=MIMEText (messageHTML、“html”、“utf - 8”) message.attach (message_html) 试一试: #因为现在很多服务商做了安全验证,所有在发送邮件的时候需要把原来的smtplib.SMTP()改成现在的smtplib.SMTP_SSL()方式 smtpObj=smtplib.SMTP_SSL () #链接邮件服务器 smtpObj。连接(mail_host mail_port) #登录邮件系统 smtpObj。登录(mail_user mail_pass) #发送邮件信息 smtpObj.sendmail(发送方、接收方、message.as_string ()) 打印”邮件发送成功” 除了例外e: 打印(“邮件发送失败,错误信息:“+ str (e)) if __name__==癬_main__”: sendMail ()python基于SMTP协议发送邮件