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())
回答:
您正在构建的电子邮件的内容分为两个部分,如data
和content
。您需要明确确认两者都是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