Прикрепить файл из smtplib - python

Я могу отправить почту. Я планирую прикрепить файл к почте из smtplib. Сначала он преобразован в строку base64, а затем пытается подключиться из POST man. Но это дает следующую ошибку "

MultipartConversionError: Невозможно прикрепить дополнительные части к не-multipart/*

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

{
    "frommail":"ramesh.chowdaryxxx@gmail.com", 
    "password":"", 
    "tomail":"ramesh.xxxxx@xxxxxx.com",
    "subject":"Test Mail", 
    "message":"mail message here",
    "doctype":"",
    "docname":"",
    "document":"iVBORw0KGgoAAAANSUhEUgAAASoAAAEsCAYAAAB0Y/4yAAASfklEQVR4nO3df7BdVXXA8e9hMpkMgwylGeowlKGoFBFRU4ZSax1/0VpKrVqqIP6qdSpaRlE7olNLh7EttZaxaKfUWrQUEUEcpBR/R6EqYhWDQfkpIharCIQAMZCQZPWPfaMxebnvvvfuuWvfu7+fmTUvk5fMW2e/c9Y9Z"
}

Как это исправить. Здесь я отправляю строку 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."})

1 ответ

Решение

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

прикрепить файл как объект к электронной почте Python 3

Перейдите по ссылке выше, чтобы получить более подробно.

Другие вопросы по тегам