如何在使用Python发送的电子邮件中获得换行符';是smtplib吗?
我写了一个脚本,将消息写入文本文件,并将其作为电子邮件发送。 一切都很顺利,除了电子邮件最终似乎都在一行中 我通过如何在使用Python发送的电子邮件中获得换行符';是smtplib吗?,python,email,python-2.7,smtplib,Python,Email,Python 2.7,Smtplib,我写了一个脚本,将消息写入文本文件,并将其作为电子邮件发送。 一切都很顺利,除了电子邮件最终似乎都在一行中 我通过\n添加换行符,它适用于文本文件,但不适用于电子邮件。 你知道可能的原因是什么吗 这是我的密码: import smtplib, sys import traceback def send_error(sender, recipient, headers, body): SMTP_SERVER = 'smtp.gmail.com' SMTP_PORT = 587
\n
添加换行符,它适用于文本文件,但不适用于电子邮件。
你知道可能的原因是什么吗
这是我的密码:
import smtplib, sys
import traceback
def send_error(sender, recipient, headers, body):
SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587
session = smtplib.SMTP('smtp.gmail.com', 587)
session.ehlo()
session.starttls()
session.ehlo
session.login(sender, 'my password')
send_it = session.sendmail(sender, recipient, headers + "\r\n\r\n" + body)
session.quit()
return send_it
SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587
sender = 'sender_id@gmail.com'
recipient = 'recipient_id@yahoo.com'
subject = 'report'
body = "Dear Student, \n Please send your report\n Thank you for your attention"
open('student.txt', 'w').write(body)
headers = ["From: " + sender,
"Subject: " + subject,
"To: " + recipient,
"MIME-Version: 1.0",
"Content-Type: text/html"]
headers = "\r\n".join(headers)
send_error(sender, recipient, headers, body)
不幸的是,并非每种类型的程序或应用程序都使用与python相同的标准化 查看您的问题,我注意到您的标题是:
“内容类型:text/html”
这意味着您需要为新行使用HTML样式的标记,这些标记称为换行符<代码>你的文字应该是:
"Dear Student, <br> Please send your report<br> Thank you for your attention"
您已将消息正文声明为包含HTML内容(
“内容类型:text/HTML”
)。换行符的HTML代码为。您应该将内容类型更改为text/plain
,或者将HTML标记用于换行,而不是纯\n
,因为后者在呈现HTML文档时会被忽略
作为旁注,还可以看一下。有一些类可以为您简化电子邮件的定义() 例如,您可以尝试(未经测试):
将内容类型标题设置为
内容类型:text/plain
(结尾为\r\n
)允许我发送多行纯文本电子邮件。Outlook将从它认为是额外内容的纯文本中删除换行符
您可以尝试在下面更新,使线条看起来像子弹。这对我很管用
body = "Dear Student, \n- Please send your report\n- Thank you for your attention"
在我的例子中,
'\r\n'
不起作用,但'\r\n'
起作用。所以我的代码是:
from email.mime.text import MIMEText
body = 'Dear Student,\r\r\nPlease send your report\r\r\nThank you for your attention'
msg.attach(MIMEText(body, 'plain'))
邮件以多行形式书写,并在Outlook中正确显示 非常感谢你<代码>\r\n对我不起作用,但
对我起作用。
body = "Dear Student, \n- Please send your report\n- Thank you for your attention"
from email.mime.text import MIMEText
body = 'Dear Student,\r\r\nPlease send your report\r\r\nThank you for your attention'
msg.attach(MIMEText(body, 'plain'))