侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

python基于SMTP协议发送邮件

Python  /  管理员 发布于 7年前   176

本文实例为大家分享了python基于SMTP协议发送邮件的具体代码,供大家参考,具体内容如下

#!/usr/bin/env python# -*- coding: utf-8 -*-""" @Time : 2018/5/31 @Author : LiuXueWen @Site :  @File : sendEmail.py @Software: PyCharm @Description: 使用SMTP协议发送邮件,支持同时发送给多个地址,支持同时发送文本信息、超文本信息和多附件"""import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.header import Headerimport osclass 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微信操控itchat的方法
    下一条:
    python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客