我正在尝试从一串文本而不是外部文件发送电子邮件附件,但附件未在接收端解码。我使用内置的字符串编码功能在base64中编码附件。我已经看到很多附加外部文件的例子,但我还没有看到将字符串作为附件发送的示例。
为什么附件没有在接收端解码?我是不正确地编码附件?
attachment = MIMEText("This is a test".encode('base64', 'strict'))
attachment.add_header('Content-Disposition', 'attachment', 'test.txt')
msg.attach(attachment)
答案 0 :(得分:0)
如果您确实需要使用base64
,则应明确设置编码:
attachment = MIMEText("This is a test".encode('base64', 'strict'))
attachment.add_header('Content-Disposition', 'attachment', filename='test.txt')
attachment.replace_header('content-transfer-encoding', 'base64')
msg.attach(attachment)
如果您真的不需要base64
,请让图书馆为您决定:
attachment = MIMEText("This is a test")
attachment.add_header('Content-Disposition', 'attachment', filename='test.txt')
msg.attach(attachment)
或者,使用email.encoders.encode_base64
:
attachment = MIMEText("This is a test")
email.encoders.encode_base64(attachment)
attachment.add_header('Content-Disposition', 'attachment', filename='test.txt')
msg.attach(attachment)
答案 1 :(得分:0)
您可以参考http://docs.python.org/2/library/email.mime.html?highlight=mimetext#email.mime.text.MIMEText并使用
email.mime.text.MIMEText(_text[, _subtype[, _charset]])
_subtype
默认plain
和_charset明确说明您的编码。