2016-03-10 3 views
0

У меня есть скрипт Python 3, который использует MIMEMultipart для отправки электронной почты с файлом .xlsx, сгенерированным приложением. Раньше я использовал идентичный скрипт на Py2 для отправки того же сгенерированного файла, с той лишь разницей, что скрипт Py2 собирал информацию из MySQL для создания сценариев .xlsx и Py3, вместо этого использует PostgreSQL.Python-отправленные MIME-сообщения электронной почты не отображаются в mail.live

msg = MIMEMultipart('alternative') 
msg.attach(MIMEText("""HTML stuff""", 'html')) 

with open(analysis_file, "rb") as fil: 
    msg.attach(MIMEApplication(
        fil.read(), 
        Content_Disposition='attachment; filename="%s"' % os.path.basename(analysis_file), 
        Name=os.path.basename(analysis_file) 
       )) 

msg['Subject'] = "SUBJECT" 
msg['From']="Me <[email protected]>" 
msg['To']= "You <[email protected]>" 

server.sendmail(FROMADDR, ["[email protected]"], msg.as_string()) 

Когда я перешел на версию PY3 сценария, однако, прикрепление перестал появляться на mail.live Microsoft. Символ скрепки, в котором говорится, что сообщение имеет прикрепление, все еще появляется, но я не могу его найти.

--edit:

Если настроить автоматическую пересылку на счет Gmail, то .xlsx вложение показывает нормально там; однако, если я пересылаю его вручную, это не так.

ответ

4

Изменение

msg = MIMEMultipart('alternative') 

в

msg = MIMEMultipart('html') 

зафиксировал его.

+0

есть объяснение для «альтернативного» варианта? (переход на «html» решил мою проблему) –

+0

Что это значит? Я использовал «альтернативу», потому что, по-моему, я читал это где-то в документах, но изменил его на «html». Я понятия не имею, в чем разница. –

+0

Я также исправил эту проблему, перейдя из «альтернативного» в «смешанный», –

0

Сделайте мне услугу и проверьте, работает ли она с yagmail. Для работы с материалами HTML/вложений я считаю, что это действительно может быть полезно: по умолчанию отправляются вещи в HTML, а вложения могут быть сделаны, указывая на путь.

Весь код:

import yagmail 
yag = yagmail.SMTP('[email protected]', 'password') 
yag.send("[email protected]", "SUBJECT", analysis_file) 

Третье поле в send является содержание, которое может быть списком строк или просто строка. Если строка может быть загружена как файл, она просто будет прикреплена.

Для получения дополнительной информации ознакомьтесь с страницей github. Имейте в виду, я разработчик/сопровождающий.