我只是很想知道MIMEMultipart是否有任何属性,我可以通过我的电子邮件正文部分......只有我想出的部分是
msg = MIMEMultipart()
msg["From"] = emailfrom
msg["To"] = emailto
msg["Subject"] = "hi find the attached file"
msg.preamble = "please PFA"
有蚂蚁之类的东西吗
msg["Body"] = i will add a string or a text file
我用Google搜索并找到了
body = MIMEMultipart('alternative')
body.attach(MIMEText(text))
但不适用于我的情况。 还有一件事是MIMEMultipart('替代')这个部分的工作原理或功能。
请建议。
答案 0 :(得分:9)
多部分容器的目的是包含其他MIME部分。如果你只有一个部分,根据定义,它不是多部分。
当您在不同的渲染中具有相同的内容时, multipart/alternative
非常有用。一个常见的情况是在text/plain
(没有字体,颜色,图像或其他"丰富的内容)和text/html
中都有邮件正文。通常,用户将他的客户端配置为优先于另一个,因此它将显示用户喜欢的任何内容。不太常见的是,用户有一个可以显示一种类型而不是另一种类型的客户端,因此显示支持的版本是技术必要性而非用户偏好的问题。
multipart/related
非常有用。例如,text/html
中的multipart/alternative
部分可能需要提取作为"相关"提供的图像。部分。所以一个共同的结构实际上是
multipart/alternative
+---- text/plain
+---- multipart/related
+---- text/html
+---- image/png
+---- image/png
如果有一个独立于multipart/related
效果图的附件,则或上面的其他multipart/alternative
。
对于您的具体示例,只需将身体部位声明为text/plain
:
msg = MIMEText(text)
msg["From"] = emailfrom
msg["To"] = emailto
msg["Subject"] = "hi find the attached file"
对于它的价值,您通常不需要弄乱MIME前导码,或者想象客户端会显示它。 (当有多个部分时,只会有一个序言。)
如果您确实要包含实际附件,请执行以下操作:
msg = MIMEMultipart()
msg["From"] = emailfrom
msg["To"] = emailto
msg["Subject"] = "hi find the attached file"
msg.attach(MIMEText(text))
attachment = MIMEBase('application', 'octet-stream')
attachment.set_payload(data)
msg.attach(attachment)
答案 1 :(得分:6)
这对我有用:
msg = MIMEMultipart()
msg['From'], msg['To'], msg['Subject'] = ... # specify your sender, receiver, subject attributes
body = 'This is the body of the email.'
body = MIMEText(body) # convert the body to a MIME compatible string
msg.attach(body) # attach it to your main message
您将body
附加到msg
,而您案例中的body
应该是MIMEText
对象。
答案 2 :(得分:2)
我建议只使用一些不会“打扰”你的电子邮件包,了解类型。
介绍yagmail(我是开发人员)。
它会自动执行您想要的操作(附件,图片,HTML代码,后退和许多其他功能)。
pip install yagmail
然后
import yagmail
yag = yagmail.SMTP('myemail', 'mypass')
mixed_contents = ['some text', '/path/to/local/img', '/path/to/mp3',
'<h1>a big header text</h1>']
yag.send('toaddr@email.com', 'subject', mixed_contents)
您最终会得到一些文字,一些标题,内联图片和附件。