Python发送邮件,错误

当我使用python从unix服务器发送邮件时,我收到了额外的内容,如下所示sendmail.此内容显示在邮件中。Python发送邮件,错误

From nobody Mon Dec 18 09:36:01 2017 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit 

我的代码如下。

#reading data from file 

data = MIMEText(file('%s'%file_name).read())

#writing the content as html

content = MIMEText("<!DOCTYPE html><html><head><title></title></head><body>"+'%s'%data+"</body></html>", "html")

msg = MIMEMultipart("alternative")

msg["From"] = "[email protected]"

msg["To"] = "[email protected]"

msg["Subject"] = "python mail"

msg.attach(content)

p = Popen(["/usr/sbin/sendmail", "-t","-oi"], stdin=PIPE,universal_newlines=True)

p.communicate(msg.as_string())

回答:

您正在构建的电子邮件的内容分为两个部分,如datacontent。您需要明确确认两者都是HTML。因此,改变

data = MIMEText(file('%s'%file_name).read()) 

data = MIMEText(file('%s'%file_name).read(), "html") 

回答:

你应该看看消息字符串。你看到的消息不是警告,这正是你已writen到消息:

data = MIMEText(file('%s'%file_name).read()) 

content = MIMEText("<!DOCTYPE html><html><head><title></title></head><body>"

+'%s'%data+"</body></html>", "html")

data.as_string()实际上包含Content-Type: text/plain; ...,因为它已经由第一MIMEText线,当你想包括加入它进入HTML页面的主体。

你真正想要的可能是:

data = file(file_name).read() 

content = MIMEText("<!DOCTYPE html><html><head><title></title></head><body>"

+'%s'%data+"</body></html>", "html")

但我也认为你不需要它包括与一个MIMEMultipart("alternative")另一个层面:msg = content可能是不够的。

最后,我不认为这明确地开始一个新的进程来执行的sendmail是真的矫枉过正,当从标准库aloready的smtplib模块知道如何发送消息:

import smtplib 

server = smtplib.SMTP()

server.send_message(msg)

server.quit()

以上是 Python发送邮件,错误 的全部内容, 来源链接: utcz.com/qa/262218.html

回到顶部