что вызвало изменение файла вложений при отправке электронной почты Python

Я пишу программу автоматической отправки электронной почты, используя python 2.7. В электронном письме есть файл Excel. Мне нужно получить имя файла в качестве заголовка.

Я использую два метода метод 1:

part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(att_files_path)) 

когда я получил электронное письмо, прикрепленный файл – это неправильный формат, который он изменил на файл bin, и он больше не является файлом excel.

метод 2:

 part.add_header('Content-Disposition', 'attachment; filename="aaa.xlsx"') 

нормально получить файл excel, но имя файла не может быть таким же, как имя реального файла, это может быть только что-то, что я добавляю в filename = ""

пожалуйста, дайте мне руку!

 #!/usr/bin/python # -*- coding: UTF-8 -*- import os import send_mail import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email.utils import formatdate from email import encoders mail_host = 'mail.xxxx.com' # 邮箱服务器mail_port = 25 # 邮箱服务器端口mail_user = 'suxl' # 登录邮箱服务器 用户名mail_pass = 'passsword' # 登录邮箱服务器 密码# 附件所在目录 路径RxEMAILHOME = u'F:\Workfiles\周报\\receivers.txt' ATTACHMENT_PATH = u'F:\Workfiles\周报\\forupdate\myname周报_20170821.xlsx' receiverlist = [] sender = '[email protected]' receivers = ['[email protected]'] # 接收邮件,可设置为你的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 send_mail(send_from, send_to, subject, text, att_files_path, server, port, username='', password=''): ret = True try: msg = MIMEMultipart() msg['From'] = send_from msg['To'] = str(send_to) msg['Date'] = formatdate(localtime=True) msg['Subject'] = subject msg.attach(MIMEText(text)) part = MIMEBase('application', "octet-stream") part.set_payload(open(att_files_path, "rb").read()) encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(att_files_path)) #part.add_header('Content-Disposition', 'attachment; filename="str"') msg.attach(part) server = smtplib.SMTP(server, port) server.login(username, password) server.sendmail(send_from, send_to, msg.as_string()) server.quit() except smtplib.SMTPException: # 如果 try 中的语句没有执行,则会执行下面的 ret=False ret = False return ret if os.path.exists(u'F:\Workfiles\周报\\receivers.txt'): receiverlist = getreceiverlist(u'F:\Workfiles\周报\\receivers.txt') if len(receiverlist) == 0: print("no recevicer!!") receiverlist = receivers else: print"receiverlist include : ", receiverlist else: print("no recevicer!!") receiverlist = receivers result = send_mail(sender, receiverlist, 'week-report', 'FYI', ATTACHMENT_PATH, mail_host, mail_port, mail_user, mail_pass) if result: print "邮件发送成功" else: print "Error: 无法发送邮件" 

Interesting Posts

VBA «Ошибка Compille: еще без if»

Howto count в Excel на основе начала строки

возвращает уникальные значения в таблице с двумя столбцами, используя формулы excel

Нажатие кнопки Get Route из Планировщика маршрутов AA VBA

Использование команд VBA для работы с диалоговым окном Solver

Эквалайзер Excel VBA через таблицу и суммарные значения

Преобразование ячейки excel, содержащей true / false, как флажок из VBA

R при оценке аргумента. Аргументы подразумевают различное количество строк

Иностранные символы, нарушенные в Excel, есть способ импортировать файл из Notepad ++ с рабочими символами?

C #: как скопировать диапазон ячеек Excel и данные диаграммы в слайды точки питания

Python сохраняет результаты .xls, выдавая ошибку

Как создать XLS-код VBA без использования Excel

Виртуальная прокрутка сетки Telerik Kendo и экспорт Excel

VBA (Excel 2007) – Как можно | переопределить поведение ярлыков по умолчанию с помощью Onkey

Как я могу найти конкретную ячейку в другом листе, зависящем от значения ячейки?

Давайте будем гением компьютера.