700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python发送excel文件_如何在Python中使用Excel文件(xlsx)附件发送电子邮件

python发送excel文件_如何在Python中使用Excel文件(xlsx)附件发送电子邮件

时间:2021-08-28 12:57:57

相关推荐

python发送excel文件_如何在Python中使用Excel文件(xlsx)附件发送电子邮件

我需要发送一封带有Excel附件的电子邮件

我的代码如下,可以发送电子邮件

但是当我收到邮件时,附件文件不是Excel文件~~

看来我附加的格式不对~~~

我添加了不同的电子邮件地址来接收此电子邮件

但他们都收到了未知格式的文件#!/usr/bin/python

# -*- coding: UTF-8 -*-

import os

import datetime

import sys

import smtplib

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

from email.header import Header

from email.mime.base import MIMEBase

from email import encoders

mail_host = "mysever" # 设置服务器

mail_user = "me" # 用户名

mail_pass = "me123" # 口令

EMAILHOME = u'F:\Workfiles\weekreport\\forupdate'

sender = 'me@'

receivers = ['aaaaaa@'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

def getReceiverlist(filename):

lif = open(filename)

li = lif.readlines()

lif.close()

for x in range(len(li)):

li[x] = li[x].strip(os.linesep)

while '' in li:

li.remove('')

return li

def aisendmail():

ret = True

try:

message = MIMEMultipart()

message['From'] = Header("myname", 'utf-8')

message['To'] = Header("youname", 'utf-8')

message.attach(MIMEText('weekreport', 'plain', 'utf-8')) # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码

subject = 'myname-weekreport'

message['Subject'] = Header(subject, 'utf-8')

att1 = MIMEBase('application', "octet-stream")

att1.set_payload(open(u"F:\Workfiles\weekreport\\forupdate\myname_weekreport_0821.xlsx",'rb').read())

encoders.encode_base64(att1)

att1.add_header('Content-Disposition', 'attachment; filename="myname-weekreport"')

message.attach(att1)

if os.path.exists(EMAILHOME + r'\receivers.txt'):

receiverslist = getReceiverlist(EMAILHOME + r'\receivers.txt')

print("receicerlist include:", receiverslist)

if len(receiverslist) == 0:

print"no receiver!!!"

receiverslist = receivers

else:

receiverslist = receivers

server = smtplib.SMTP()

server.connect(mail_host, 25) # 发件人邮箱中的SMTP服务器,端口是25

server.login(mail_user, mail_pass) # 括号中对应的是发件人邮箱账号、邮箱密码

server.sendmail(sender, receiverslist, message.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件

server.quit() # 关闭连接

except smtplib.SMTPException: # 如果try中的语句没有执行,则会执行下面的ret=False

ret = False

return ret

result = aisendmail()

if result:

print "邮件发送成功"

else:

print "Error: 无法发送邮件"

我按照以下不同的方式添加excel附件:但都失败了(这意味着它无法接收excel格式的文件)

方法1:

^{pr2}$

结果:

收到未知格式文件

方法2:with open(u"F:\Workfiles\周报\\forupdate\xxx_周报_0821.xlsx", "rb") as fil:

part = MIMEApplication(

fil.read(),

Name=basename(u"F:\Workfiles\周报\\forupdate\xxx_周报_0821.xlsx")

)

part['Content-Disposition'] = 'attachment; filename="%s"' % basename(u"F:\Workfiles\周报\\forupdate\xxx_周报_0821.xlsx")

message.attach(part)

结果:

收到一个bin格式的文件

方法三:att1 = MIMEApplication(open('foo.xlsx','rb').read())

att1.add_header('Content-Disposition', 'attachment', filename="foo.xlsx")

msg.attach(att1)

结果:

接收未知格式文件

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。