python 发送带附件邮件 脚本

from email.header import Header
from email.mime.text import MIMEText
import smtplib
from email.utils import parseaddr, formataddr
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart

-- coding: UTF-8 --

def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((
Header(name, 'utf-8').encode(),
addr))

from_addr = "xxx"
password ="xxx"
to_addr =["xx"]
smtp_server = "mail.xxx.com"

msg = MIMEMultipart()
msg.attach(MIMEText('send with file...', 'plain', 'utf-8'))
msg['From'] =_format_addr(from_addr)
msg['To'] = _format_addr(to_addr)
msg['Subject'] = Header(u'来自SMTP的问候……', 'utf-8')

msg.attach(MIMEText('send with file...', 'plain', 'utf-8'))

添加附件就是加上一个MIMEBase,从本地读取一个图片:

with open('jietu.png', 'rb') as f:
# 设置附件的MIME和文件名,这里是png类型:
mime = MIMEBase('image', 'png', filename='jietu.png')
# 加上必要的头信息:
mime.add_header('Content-Disposition', 'attachment', filename='jietu.png')
mime.add_header('Content-ID', '<0>')
mime.add_header('X-Attachment-Id', '0')
# 把附件的内容读进来:
mime.set_payload(f.read())
# 用Base64编码:
encoders.encode_base64(mime)
# 添加到MIMEMultipart:
msg.attach(mime)

server = smtplib.SMTP(smtp_server, 25)
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, to_addr, msg.as_string())
server.quit()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Linux多线程同步机制 - 信号量信号量函数定义如下:include int semctl(int sem_i...
    molscar阅读 972评论 0赞 0
  • 网络 理论模型,分为七层物理层数据链路层传输层会话层表示层应用层 实际应用,分为四层链路层网络层传输层应用层 IP...
    FlyingLittlePG阅读 1,041评论 0赞 0
  • python使用SMTP发送电子邮件 SMTP是发送邮件的协议,Pytho...
    小娟_bb93阅读 954评论 0赞 1
  • 一、相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍: 1...
    LizPL阅读 1,481评论 0赞 3
  • *大量亂七八糟的東西,請慎入阿慎入 眼前出現的,是一個如車站般的舞台,舞台上只有一人的身影,佇立於那舞台的遠端,而...
    四型態變化暗暗阅读 298评论 0赞 2

友情链接更多精彩内容