Это странная проблема, которая прослушивает меня с прошлых 2 дней. Я написал простую функцию отправки почты, которая использует smtplib для отправки электронной почты с изображением в виде вложения.Попытка отправить почту с помощью smtplib в python. Почтовый орган поставляется вместе с сюжетной линией
Проблема заключается в том, что часть тела конкатенируется с линией Subject. Если я не использую MIME-сообщение и просто строку, они будут правильно выделены. Но, тогда обычные строки не позволяют вложения изображений.
Любая библиотека, которую мне не хватает здесь?
Пожалуйста код ниже:
# -*- coding: utf-8 -*-
"""
Created on Tue Jun 14 20:08:00 2016
@author: HOME
"""
import smtplib
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import base64
import time
import datetime
print str(datetime.datetime.now())
def send_mail(pwd):
password = base64.b64decode(pwd)
# in the prod system, ask the mail exchange server and port
server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()
server.login('[email protected]', password)
msg = MIMEMultipart()
body = "\nThe message body is this one. Thanks \n\n"
subject = "Your daily digest " + str(datetime.datetime.now())
msg['From'] = "[email protected]"
msg['To'] = "[email protected]"
# I was hoping that creating a string in the subject should parse for newline and automatically pick the 2nd line onwards as body
# If I send mail using the commented code (line 46 t0 line 52), the subject and body are different. But I am unable to attach images
# but if i use the MIMEMultipart message , then i can attach images, but the body comes in the subject line
msg['Subject'] = "\r\n".join([subject,"",body])
#msg.attach(MIMEText(body,'text'))
msg.preamble = 'Daily Updates'
"""
msg = "\r\n".join([
"From: [email protected]",
"To: [email protected]",
"Subject: Daily digest " + str(datetime.datetime.now()),
"",
"Good Morning, How are you ? "
])
"""
# Image attachment code
fp = open("D://sample.png",'rb')
img = MIMEImage(fp.read())
msg.attach(img)
print msg
#try:
server.sendmail('[email protected]','[email protected]',msg.as_string())
print "Mail send successfully to [email protected]"
server.close()
#except:
# print "Mail not sent"
if __name__ == '__main__':
pwd = base64.b64encode('howdy')
send_mail(pwd)