2017-02-14 57 views
0

我能够发送邮件。我打算附加文件从smtplib.First邮件转换为base64字符串,然后尝试从POST男子附加文件。 但其给出以下错误:“从smtplib附件文件 - python

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

从邮递员我发送类似下面

{ 
    "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."}) 

回答