在 python 中使用 smtplib 附件被附加两次
Attachments getting attached twice using smptplib in python
我正在尝试在 python 中实现一项功能,我想在其中发送
文件作为电子邮件警报的附件
一切正常。我收到了包含必填主题的电子邮件提醒,但唯一的问题是我在电子邮件提醒中收到了两次相同的附件。
fileMsg = email.mime.base.MIMEBase('application','octet-stream')
fileMsg.set_payload(file('/home/bsingh/python_files/file_dict.txt').read())
#email.encoders.encode_base64(fileMsg)
fileMsg.add_header('Content-Disposition','attachment;filename=LogFile.txt')
emailMsg.attach(fileMsg)
# send email
server = smtplib.SMTP(smtp_server)
server.starttls()
server.login(username, password)
server.sendmail(from_add, to_addr,emailMsg.as_string())
server.quit()
yagmail(我是开发人员)的全部目的是让发送电子邮件变得非常容易,尤其是在 HTML 或需要附件的情况下。
请尝试以下代码:
import yagmail
yag = yagmail.SMTP(from_add, password)
contents = ['See my attachment below', '/home/bsingh/python_files/file_dict.txt']
yag.send(contents = contents)
注意这里的神奇之处:contents
是一个列表,其中等于文件路径的项目将自动加载、猜测并附加 mimetype。
还有更多魔法,例如易于嵌入图像、无密码脚本、无用户名脚本、简单的别名、智能默认值(注意我省略了 to
和 subject
参数?)和多得多。我 advise/encourage 你阅读它的 github 页面 :-)。欢迎提出问题或添加功能请求!
yagmail可以通过pip安装获取:
pip install yagmail # Python 2
pip3 install yagmail # Python 3
我自己也遇到过这个问题。我将 'alternative'
作为消息的 MIMEMultipart 类型。当我更改为默认值时,'mixed'
,重复项消失了。
因此,如果您使用 MIMEMultipart('alternative')
创建了 emailMsg
,您可能会遇到同样的问题。
我认为 'alternative'
用于同时提供文本和 html 版本的邮件正文,因此我认为如果您使用它,除了附件之外还需要同时提供这两种版本。
希望对您有所帮助。
我还没有在任何地方找到很好的解释;电子邮件可能会变得相当复杂。
版本有问题..已解决
我正在尝试在 python 中实现一项功能,我想在其中发送 文件作为电子邮件警报的附件 一切正常。我收到了包含必填主题的电子邮件提醒,但唯一的问题是我在电子邮件提醒中收到了两次相同的附件。
fileMsg = email.mime.base.MIMEBase('application','octet-stream')
fileMsg.set_payload(file('/home/bsingh/python_files/file_dict.txt').read())
#email.encoders.encode_base64(fileMsg)
fileMsg.add_header('Content-Disposition','attachment;filename=LogFile.txt')
emailMsg.attach(fileMsg)
# send email
server = smtplib.SMTP(smtp_server)
server.starttls()
server.login(username, password)
server.sendmail(from_add, to_addr,emailMsg.as_string())
server.quit()
yagmail(我是开发人员)的全部目的是让发送电子邮件变得非常容易,尤其是在 HTML 或需要附件的情况下。
请尝试以下代码:
import yagmail
yag = yagmail.SMTP(from_add, password)
contents = ['See my attachment below', '/home/bsingh/python_files/file_dict.txt']
yag.send(contents = contents)
注意这里的神奇之处:contents
是一个列表,其中等于文件路径的项目将自动加载、猜测并附加 mimetype。
还有更多魔法,例如易于嵌入图像、无密码脚本、无用户名脚本、简单的别名、智能默认值(注意我省略了 to
和 subject
参数?)和多得多。我 advise/encourage 你阅读它的 github 页面 :-)。欢迎提出问题或添加功能请求!
yagmail可以通过pip安装获取:
pip install yagmail # Python 2
pip3 install yagmail # Python 3
我自己也遇到过这个问题。我将 'alternative'
作为消息的 MIMEMultipart 类型。当我更改为默认值时,'mixed'
,重复项消失了。
因此,如果您使用 MIMEMultipart('alternative')
创建了 emailMsg
,您可能会遇到同样的问题。
我认为 'alternative'
用于同时提供文本和 html 版本的邮件正文,因此我认为如果您使用它,除了附件之外还需要同时提供这两种版本。
希望对您有所帮助。
我还没有在任何地方找到很好的解释;电子邮件可能会变得相当复杂。
版本有问题..已解决