如何通过MIMEMultipart发送电子邮件正文部分

Sat*_*tya 11 python email

我只是很想知道MIMEMultipart是否有任何属性,我可以通过我的电子邮件正文部分...只有我想出的部分是

msg = MIMEMultipart()
msg["From"] = emailfrom
msg["To"] = emailto
msg["Subject"] = "hi find the attached file"
msg.preamble = "please PFA"
Run Code Online (Sandbox Code Playgroud)

有蚂蚁之类的东西吗?

 msg["Body"] = I will add a string or a text file
Run Code Online (Sandbox Code Playgroud)

我用Google搜索并找到了

body = MIMEMultipart('alternative')
body.attach(MIMEText(text))
Run Code Online (Sandbox Code Playgroud)

但不适用于我的情况.还有一件事,MIMEMultipart('替代')这个部分是如何工作或运作的.

请建议.

Nob*_*lis 11

这对我有用:

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
Run Code Online (Sandbox Code Playgroud)

您将附加bodymsg,并body在你的情况应该是MIMEText对象.


tri*_*eee 11

多部分容器的目的是包含其他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
Run Code Online (Sandbox Code Playgroud)

或者甚至是multipart/related上面的另一个,如果有一个独立于multipart/alternative效果图的附件.

对于您的具体示例,只需将body部分声明为text/plain:

msg = MIMEText(text)
msg["From"] = emailfrom
msg["To"] = emailto
msg["Subject"] = "hi find the attached file"
Run Code Online (Sandbox Code Playgroud)

对于它的价值,您通常不需要弄乱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)
Run Code Online (Sandbox Code Playgroud)