无法在python中使用MIME发送带有pdf附件的电子邮件
Posted
技术标签:
【中文标题】无法在python中使用MIME发送带有pdf附件的电子邮件【英文标题】:Failing to send an email with pdf attachment with MIME in python 【发布时间】:2021-04-23 18:59:07 【问题描述】:我正在使用 MIME 发送带有附件的电子邮件,代码运行时没有错误,但没有发送电子邮件。我正在使用编解码器编码来防止先前的错误(MIMEText 无法识别没有此编码的文档中的字节)-UnicodeDecodeError: 'utf8' codec can't decode byte 0x9c。我在 python 3.6.4 和 Windows 10 中运行它
import smtplib
import os, sys
import xlrd
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import codecs
gmail_user = input("Your gmail: ")
gmail_password = input("Your password: ")
print("sending...")
example = "email test"
msg = MIMEMultipart()
msg['Subject'] = sheet.cell_value(l,1)
msg['From'] = gmail_user
msg['To'] = email_reciver
body = MIMEText(texto)
msg.attach(body)
pod = os.getcwd() + "\doc.pdf"
with codecs.open(pod, 'r', encoding='utf-8', errors='ignore') as fp:
record = MIMEText(fp.read())
record['Content-Disposition'] = 'attachment; filename="doc.pdf"'
msg.attach(record)
try:
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.ehlo()
server.login(gmail_user, gmail_password)
print(l)
server.sendmail(gmail_user, email_reciver, msg.as_string())
server.close()
except:
print ("something went wrong")
【问题讨论】:
【参考方案1】:我不明白发生了什么变化,但我正在运行测试:
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.ehlo()
server.login(gmail_user, gmail_password)
print(l)
r = server.sendmail(gmail_user, email_reciver, msg.as_string())
print("__________________")
print(r)
server.close()
它奏效了。 r 输出为,如果我删除
print("_____________")
或print(r)
,它将停止工作。
代码中没有其他任何变化
【讨论】:
以上是关于无法在python中使用MIME发送带有pdf附件的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
python 2.7 smtplib 和 mime 的电子邮件附件问题