python,如何发送带附件的邮件

 我来答
就烦条0o
推荐于2016-11-23 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部

可以通过以下代码实现:

import smtplib
from email.mime.text import MIMEText  
import email.mime.multipart
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email import Encoders
  
def send_mail():  
    mailto_list = ['xxxx','xxx']#收件人
    mail_host = "xxxxx"  # 设置服务器
    mail_user = "xxxx"  # 用户名
    mail_pass = "xxxxxx"  # 口令 
    mail_postfix = "xxxx.xxx"  # 发件箱的后缀
    me = "hello" + "<" + mail_user + "@" + mail_postfix + ">"  # 这里的hello可以任意设置,收到信后,将按照设置显示
    content = 'This is test mail!'#邮件正文
    msg = MIMEMultipart()
    body = MIMEText(content, _subtype='html', _charset='gb2312')  # 创建一个实例,这里设置为html格式邮件
    msg.attach(body)
    msg['Subject'] = "Subject Test"  # 设置主题
    msg['From'] = me  
    msg['To'] = ";".join(mailto_list)  
    #附件内容,若有多个附件,就添加多个part, 如part1,part2,part3
    part = MIMEBase('application', 'octet-stream')
    # 读入文件内容并格式化,此处文件为当前目录下,也可指定目录 例如:open(r'/tmp/123.txt','rb')
    part.set_payload(open('test.txt','rb').read())
    Encoders.encode_base64(part)
    ## 设置附件头
    part.add_header('Content-Disposition', 'attachment; filename="test.txt"')
    msg.attach(part)
      
    try:  
        s = smtplib.SMTP()  
        s.connect(mail_host)  # 连接smtp服务器
        s.login(mail_user, mail_pass)  # 登陆服务器
        s.sendmail(me, mailto_list, msg.as_string())  # 发送邮件
        s.close()  
        print 'send mail sucess'
        return True  
    except Exception, e:  
        print str(e)  
        return False
neosicifore
推荐于2016-04-16 · TA获得超过2258个赞
知道小有建树答主
回答量:446
采纳率:66%
帮助的人:499万
展开全部
import smtplib
from email.mime.text import MIMEText  
import email.mime.multipart
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email import Encoders
 
def send_mail():  
    mailto_list = ['xxxx','xxx']#收件人
    mail_host = "xxxxx"  # 设置服务器
    mail_user = "xxxx"  # 用户名
    mail_pass = "xxxxxx"  # 口令 
    mail_postfix = "xxxx.xxx"  # 发件箱的后缀
    me = "hello" + "<" + mail_user + "@" + mail_postfix + ">"  # 这里的hello可以任意设置,收到信后,将按照设置显示
    content = 'This is test mail!'#邮件正文
    msg = MIMEMultipart()
    body = MIMEText(content, _subtype='html', _charset='gb2312')  # 创建一个实例,这里设置为html格式邮件
    msg.attach(body)
    msg['Subject'] = "Subject Test"  # 设置主题
    msg['From'] = me  
    msg['To'] = ";".join(mailto_list)  
    #附件内容,若有多个附件,就添加多个part, 如part1,part2,part3
    part = MIMEBase('application', 'octet-stream')
    # 读入文件内容并格式化,此处文件为当前目录下,也可指定目录 例如:open(r'/tmp/123.txt','rb')
    part.set_payload(open('test.txt','rb').read())
    Encoders.encode_base64(part)
    ## 设置附件头
    part.add_header('Content-Disposition', 'attachment; filename="test.txt"')
    msg.attach(part)
     
    try:  
        s = smtplib.SMTP()  
        s.connect(mail_host)  # 连接smtp服务器
        s.login(mail_user, mail_pass)  # 登陆服务器
        s.sendmail(me, mailto_list, msg.as_string())  # 发送邮件
        s.close()  
        print 'send mail sucess'
        return True  
    except Exception, e:  
        print str(e)  
        return False
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式