Мы пытаемся отправить электронные письма с вложениями, но по некоторым причинам вложения не отображаются для людей, использующих Outlook.Вложения не отображаются в Outlook при отправке через python
Если они отправляют электронное письмо кому-либо, использующее gmail, оно отлично отображается в gmail.
Если пользователь gmail отправляет письмо пользователю Outlook, он отображается в Outlook (вероятно, потому, что gmail перестраивает сообщение).
Это код, который мы используем, чтобы отправить по электронной почте:
def send_email(headers={}, attachments=[], body={}):
ADDRESS_HEADERS = set(['from', 'to', 'cc', 'bcc', 'reply-to'])
msg = MIMEMultipart('alternative')
msg.preamble = "You need a MIME-aware email client to read this email.\n"
def add_headers():
def encode_address(v):
(name, address) = parseaddr(v)
name = str(Header(unicode(name), 'utf-8'))
address = address.encode('ascii')
return formataddr((name, address))
for key, value in headers.iteritems():
if not isinstance(value, list):
value = [value]
if key.lower() in ADDRESS_HEADERS:
value = map(encode_address, value)
msg[key.title()] = u';'.join(value)
def set_body():
msg.attach(MIMEText(body.get('text', ''), 'plain', _charset='utf-8'))
if 'html' in body:
msg.attach(MIMEText(body['html'], 'html', _charset='utf-8'))
def attach_file(attachment):
maintype, subtype = attachment['mimetype'].split("/", 1)
part = MIMEBase(maintype, subtype)
filename = attachment['filename']
name = attachment.get('name', os.path.basename(filename))
with open(filename, 'rb') as f:
part.set_payload(f.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment', filename=name)
msg.attach(part)
add_headers()
map(attach_file, attachments)
set_body()
composed = msg.as_string()
p = subprocess.Popen("sendmail -t", shell=True, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
(stdout, stderr) = p.communicate(composed)
if p.returncode != 0:
raise IOError(u'{}\n\n{}'.format(stdout, stderr).strip())
Это чрезвычайно трудно найти любую соответствующую информацию из-за фрагментации реализаций электронной почты.
В мы Прикрепление файлов являются Excel файлов с типом пантомимы application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Я пытаюсь найти более подробную информацию о том, который используется прогноз версия.
'part.add_header («Content-Disposition»,«присоединение», имя файла = имя)' должен быть эквивалент того, что вы написали. Я попробую обобщить тип mime. –
У меня возникают проблемы при использовании 'part = MIMEBase ('application', 'vnd.openxmlformats-officedocument.spreadsheetml.sheet')'. IMO 'part = MIMEBase ('application', 'octet-stream')' работает лучше всего с любым типом, а также – jes516