python脚本发送邮件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | #!/usr/bin/python #_*_ coding:utf-8 _*_ from email.MIMEText import MIMEText from email.MIMEMultipart import MIMEMultipart from email.MIMEBase import MIMEBase from email import Utils, Encoders from email.header import Header import mimetypes import sys import smtplib def SendMail(fromAddress, toAddress, usepassword,subject=None, content=None, attfile=None, \ subtype= 'plain' , charset= 'utf-8' ): username = fromAddress #创建一个带附件的实例 msg = MIMEMultipart() msg[ 'From' ] = fromAddress msg[ 'To' ] = toAddress if subject: #标题 msg[ 'Subject' ] = subject msg[ 'Date' ] = Utils.formatdate( localtime =1) if content: #添加邮件内容 txt = MIMEText(content, subtype, charset) msg.attach(txt) if attfile: #构造附件 #注意:传入的参数attfile为unicode,否则带中文的目录或名称的文件读不出来 # basename 为文件名称,由于传入的参数attfile为unicode编码,此处的basename也为unicode编码 basename = os.path.basename(attfile) print basename #注意:指定att的编码方式为gb2312 att = MIMEText(open(attfile, 'rb' ).read(), 'base64' , 'gb2312' ) att[ "Content-Type" ] = 'application/octet-stream' #注意:此处basename要转换为gb2312编码,否则中文会有乱码。 # 特别,此处的basename为unicode编码,所以可以用basename.encode('gb2312') # 如果basename为utf-8编码,要用basename.decode('utf-8').encode('gb2312') att[ "Content-Disposition" ] = 'attachment; filename=%s' % basename.encode( 'gb2312' ) msg.attach(att) try : #smtp = smtplib smtp = smtplib.SMTP() #连接服务器 smtp.connect( 'smtp.163.com' , '25' ) #登录 smtp.login(username, usepassword) #发送邮件 smtp.sendmail(fromAddress, toAddress, msg.as_string()) #退出 smtp.quit() print( '邮件发送成功email has send out !' ) #调用 if __name__ == "__main__" : #注意:附件的路径字符串应为unicode编码 # 发送者账号 接收者账号 密码 标题 内容 附件 SendMail( 'xxxxxxx' , 'xxxxxxxx' , 'xxxxxxx' , '编译结果' , '编译log文件已发送,请查看!' ,u '编译结果.h' ) 要实现发邮件的功能,必须通过网站登陆设置开启SMTP服务和授权码,比如以下是163邮箱的设置过程。 |
在脚本此处设置邮箱的相关内容:(注意:邮箱密码必须是你启用的授权码)
详情请访问以下网址:
http://www.runoob.com/python/python-email.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)