当前位置: 首页 > news >正文

python发送邮件

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header

mail_host = "smtp.163.com"  # 设置服务器
mail_user = "17731456887@163.com"  # 用户名
mail_pass = "python123"  # 口令

sender = '17731456887@163.com'
receivers = ['1758152342@qq.com','17731456887@163.com']

# 创建一个带附件的实例
message = MIMEMultipart()
message['From'] = '17731456887@163.com'
message['To'] = '1758152342@qq.com'
subject = 'Python SMTP 邮件'
message['Subject'] = Header(subject, 'utf-8')

# 邮件正文内容
message.attach(MIMEText('这是菜鸟教程Python 邮件发送……', 'plain', 'utf-8'))

# 构造附件1,传送当前目录下的 test.txt 文件
att1 = MIMEText(open(r'safe.doc', 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att1["Content-Disposition"] = 'attachment; filename="{0}"'.format('safe.doc')
message.attach(att1)

# # 构造附件2,传送当前目录下的 runoob.txt 文件
# att2 = MIMEText(open('runoob.txt', 'rb').read(), 'base64', 'utf-8')
# att2["Content-Type"] = 'application/octet-stream'
# att2["Content-Disposition"] = 'attachment; filename="runoob.txt"'
# message.attach(att2)

try:
    smtpObj = smtplib.SMTP()
    smtpObj.connect(mail_host, 25)    # 25 为 SMTP 端口号
    smtpObj.login(mail_user,mail_pass)
    smtpObj.sendmail(sender, receivers, message.as_string())
    print "邮件发送成功"
except smtplib.SMTPException:
    print "Error: 无法发送邮件"

 

转载于:https://www.cnblogs.com/aaronthon/p/10440016.html

相关文章:

  • VMware下ubuntu与Windows实现文件共享的方法(zhuan)
  • 接口测试与Postman
  • antiX 17.4 发布,轻量级 Linux 发行版
  • ansible一键部署脚本
  • Android后台任务(HandlerThread、AsyncTask、IntentService)
  • 为什么开发人员必须要了解数据库锁?
  • 前嗅ForeSpider脚本教程:基本语句
  • Redis保证事务一致性,以及常用的数据结构
  • LNMP基础知识及简单搭建(用于个人学习与回顾)
  • Gnu/Linux 链接XServer方法
  • vue中添加favicon.ico
  • 面试篇三
  • SAP开源Java SCA工具,提供静态代码安全性测试功能
  • 最快1天搭建短视频APP!阿里云短视频解决方案上线
  • CSS3 属性
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【node学习】协程
  • angular学习第一篇-----环境搭建
  • CSS相对定位
  • Java编程基础24——递归练习
  • Redis中的lru算法实现
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • SpiderData 2019年2月23日 DApp数据排行榜
  • 从零搭建Koa2 Server
  • 第2章 网络文档
  • 马上搞懂 GeoJSON
  • 那些年我们用过的显示性能指标
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 智能合约Solidity教程-事件和日志(一)
  • Mac 上flink的安装与启动
  • ​插件化DPI在商用WIFI中的价值
  • # Panda3d 碰撞检测系统介绍
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $.ajax()参数及用法
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (ZT)一个美国文科博士的YardLife
  • (附源码)ssm高校实验室 毕业设计 800008
  • (南京观海微电子)——I3C协议介绍
  • (十一)c52学习之旅-动态数码管
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .aanva
  • .cfg\.dat\.mak(持续补充)
  • .mysql secret在哪_MySQL如何使用索引
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .net经典笔试题
  • .NET连接MongoDB数据库实例教程
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [04] Android逐帧动画(一)
  • [ARC066F]Contest with Drinks Hard