что вызвало изменение файла вложений при отправке электронной почты Python
Я пишу программу автоматической отправки электронной почты, используя python 2.7. В электронном письме есть файл Excel. Мне нужно получить имя файла в качестве заголовка.
Я использую два метода метод 1:
part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(att_files_path))
когда я получил электронное письмо, прикрепленный файл – это неправильный формат, который он изменил на файл bin, и он больше не является файлом excel.
- Создание гиперссылки между листами, где все они находятся в одной книге
- Как преобразовать заданный порядковый номер (из Excel) в дату
- Как я могу напечатать корейские символы с листа excel с помощью python?
- Не понимаю, что означает эта ошибка: TypeError: объект 'int' не может быть вызван
- Открытие неизвестного имени файла Excel с использованием Python
метод 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: 无法发送邮件"
- Tkinter: Вставить ячейки Excel в разные виджеты входа
- Поиск нескольких типов файлов Excel в каталоге
- Как заставить Python изменять xlsx-файлы при открытии приложения Excel?
- Получить последнюю строку с данными из таблицы Excel
- python - как найти те же слова в двух разных Excel-книгах
- AttributeError, сыворотка, возвращающая из ipython в Excel с помощью pandas
- xlwings: требуется объект
- Вызов макроса с параметрами: API-интерфейс Python win32com