Я могу отправить письмо. Я планирую прикрепить файл к почте из 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."})
Благодарим за сообщение. Но он не может работать. – user1335606