我正在使用SMTPLib向gmail帐户发送电子邮件

时间:2018-08-29 12:22:09

标签: python python-3.x smtp smtplib

我有两条消息,一条是HTML消息,另一条是一条简单的纯文本消息。我都将它们都附加到MIMEMultipart变量(tmessage),但是当电子邮件发送时,我只能看到第二条附件在我的收件箱中。我不知道为什么...这是我的代码

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
host='smtp.gmail.com'
port=587
message="<h1>Hey i have received a 3rd  email message using Python</h1>"
userName='teaching807@gmail.com'
password='teaching807299'
connection = smtplib.SMTP(host,port)

connection.ehlo()
connection.starttls()
_from=userName
_to=userName
connection.login(userName,password)

tmessage = MIMEMultipart("alternative")
tmessage['Subject']="Html Message"
tmessage['From']=_from
tmessage['To']=_to
plain_message = "This is a plain message"
html_message="""<html><body><h1>Students Marks</h1><p>These are the students 
Marks</p></body></html>"""
msg1=MIMEText(html_message,'html')
msg2=MIMEText(plain_message,'plain')
tmessage.attach(msg1)
tmessage.attach(msg2)

connection.sendmail(_from,_to,tmessage.as_string())
connection.quit()

在收件箱中只能看到msg2

3 个答案:

答案 0 :(得分:0)

尝试从tmessage中删除“替代”字词,它在Outlook中对我有用。

CGRect screenRect = [[UIScreen mainScreen] bounds];
    CGFloat screenWidth = screenRect.size.width;
    CGFloat screenHeight = screenRect.size.height;

    NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:selectedVariantDetail[@"fcVariantImageUrl"]]];

    UIImageView *dot =[[UIImageView alloc] initWithFrame:CGRectMake(0,0,screenWidth,screenHeight)];
    dot.image=[UIImage imageWithData:imageData];
    dot.tag = 2;
    [self.view addSubview:dot];

答案 1 :(得分:0)

通过添加两个部分,您可以提供替代方案。来自python docs

  

根据RFC 2046,多部分消息的最后一部分(在这种情况下为HTML消息)是最好的并且是首选。

您要在最后添加纯文本,使其成为首选文本。您将永远不会看到纯文本和html。

答案 2 :(得分:0)

根据this文档的底部,类型“ alternative”就是那种,当出于某种原因不支持H​​TML时,提供备用纯文本。

您仅查看一封邮件,因为您的电子邮件帐户/浏览器支持html。 您只会看到一封电子邮件,因为只发送了一封。您查看的内容取决于您的电子邮件/浏览器可以支持的数据类型。