2015-11-18 3 views
0

я могу отправлять сообщения электронной почты OK, используя функцию smtplib, но мое имя файл всегда содержит путь к файлу:python MIME: как изменить имя вложения?

attachment.add_header("Content-disposition", "attachment", filename=fileToSend) 
msg.attach(attachment) 

в этом случае fileToSend = «/home/pi/email/RPSL-0002_2015_11_17__00_00_00.csv»

и файл я получаю это homepiemailRPSL-0002_2015_11_17__00_00_00.csv

я попробовал подставляя fileToSend [11:], и переменная равна, но путь к файлу всегда приходит через в электронной почте файл (без косые черты).

Как я могу указать имя файла приложения?

+0

smtplib cencerned with message transport, not content. Я соответствующим образом обновил ваш вопрос. – tripleee

+1

@tripleee: спасибо. (я думаю, вы имели в виду python «MIME», хотя не «MilME» ... – xianbei

ответ

2

Ваше использование email.message.Message.add _header в основном верное, за исключением того, что вы не можете передать имя каталога - если бы вы могли контролировать структуру каталогов на сайте получателя, это было бы проблемой безопасности (а также огромной проблемой удобства использования во многих сценарии), поэтому он просто не поддерживается.

Если значение в переменном fileToSend является задаваемым пользователем строкой, которая может содержать путь, использовать что-то вроде filename=os.path.basename(fileToSend) (см documentation).