2017-02-14 3 views
0

Я могу отправить письмо. Я планирую прикрепить файл к почте из smtplib.First преобразован в base64 строку, а затем пытается подключиться от пользователя POST. Но ее давая ошибку ниже "Файл атташе от smtplib - python

MultipartConversionError: Cannot attach additional subparts to non-multipart/*

от человека POST Я посылаю, как показано ниже

{ 
    "frommail":"[email protected]", 
    "password":"", 
    "tomail":"[email protected]", 
    "subject":"Test Mail", 
    "message":"mail message here", 
    "doctype":"", 
    "docname":"", 
    "document":"iVBORw0KGgoAAAANSUhEUgAAASoAAAEsCAYAAAB0Y/4yAAASfklEQVR4nO3df7BdVXXA8e9hMpkMgwylGeowlKGoFBFRU4ZSax1/0VpKrVqqIP6qdSpaRlE7olNLh7EttZaxaKfUWrQUEUEcpBR/R6EqYhWDQfkpIharCIQAMZCQZPWPfaMxebnvvvfuuWvfu7+fmTUvk5fMW2e/c9Y9Z" 
} 

Как исправить this.Here Посылаю строку base64 в„поле документа“.

import smtplib 
from email.mime.text import MIMEText as text 
from email.MIMEMultipart import MIMEMultipart 
from email.MIMEText import MIMEText 
from email.MIMEBase import MIMEBase 
from email import encoders 
@csrf_exempt 
@api_view(['POST']) 
def sendmail(request): 
    if request.method == 'POST': 
     data = request.data 
     fromMail = data["frommail"] 
     passwd  = data["password"] 
     toMail  = data["tomail"] 
     subject  = data["subject"] 
     text1  = data["message"] 
     doctype  = data['doctype'] 
     docname  = data['docname'] 
     document = data['document'] 

     msg = text(str(text1)) 
     msg['Subject'] = subject 
     msg['From'] = fromMail 
     msg['To'] = toMail 

     part = MIMEBase('application', 'octet-stream') 
     #part.set_payload(open(document, 'rb').read()) 
     #Encoders.encode_base64(part) 
     part.add_header('Content-Disposition','attachment; filename="%s"' % os.path.basename(document)) 
     msg.attach(part) 

     try: 
      server = smtplib.SMTP('smtp.gmail.com', 587) 
      server.starttls() 
      server.login(fromMail, passwd) 
      server.sendmail(fromMail, toMail, msg.as_string()) 
      server.quit()  
      return JSONResponse({"Status":"Successfully sent email"}) 
     except: 
      return JSONResponse({"Failure":"Unable to send mail."}) 

ответ

0

Попробуйте добавить MIMEMultipart() в вашем коде. Это должно решить вашу проблему.

attach file like object to email python 3

Следуйте приведенной выше ссылке для более подробной информации.

+0

Благодарим за сообщение. Но он не может работать. – user1335606

Смежные вопросы