当前位置: 首页 > 面试题库 >

如何在使用Python的smtplib发送的电子邮件中获得换行符?

景鹏飞
2023-03-14
问题内容

我编写了一个脚本,该脚本将消息写到文本文件,然后将其作为电子邮件发送。一切都进行得很好,除了电子邮件最终似乎全部合而为一。

我添加了换行符\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)

问题答案:

您已声明消息正文具有HTML内容("Content-Type: text/html")。换行符的HTML代码是<br>。您应该将内容类型更改为,text/plain或者将HTML标记用于换行符,而不要使用纯\n文本,因为纯文本在呈现HTML文档时会被忽略。

作为附带说明,也请查看电子邮件包。有一些类可以为您简化电子邮件的定义(带有示例)。

例如,您可以尝试(未试用):

import smtplib
from email.mime.text import MIMEText

# define content
recipients = ["recipient_id@yahoo.com"]
sender = "sender_id@gmail.com"
subject = "report reminder"
body = """
Dear Student,
Please send your report
Thank you for your attention
"""

# make up message
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = sender
msg['To'] = ", ".join(recipients)

# sending
session = smtplib.SMTP('smtp.gmail.com', 587)
session.starttls()
session.login(sender, 'my password')
send_it = session.sendmail(sender, recipients, msg.as_string())
session.quit()


 类似资料:
  • 问题内容: 我正在尝试编写一个脚本,该脚本会自动将符合特定条件的某些电子邮件转发到另一封电子邮件。 我已经可以使用imaplib和电子邮件来下载和解析消息了,但是我不知道如何将整个电子邮件转发到另一个地址。我是否需要从头开始构建新消息,还是可以以某种方式修改旧消息并重新发送? 到目前为止,这是我所拥有的(客户端是imaplib.IMAP4连接,而id是消息ID): 我敢肯定,关于邮件的MIME内容

  • 问题内容: 我可以使用smtplib模块成功发送电子邮件。但是,发送emial时,它不会在发送的电子邮件中包含主题。 我应如何编写“ server.sendmail”以在发送的电子邮件中也包含主题。 如果使用server.sendmail(FROM,TO,消息,SUBJECT),则会显示有关“ smtplib.SMTPSenderRefused”的错误 问题答案: 将其作为标题附加: 接着: 还可

  • 问题内容: 如何使用Python在电子邮件中发送HTML内容?我可以发送简单的文字。 问题答案: 这是一个如何使用替代纯文本版本创建HTML消息的示例:

  • 问题内容: 我在理解如何使用Python通过电子邮件发送附件时遇到问题。我已成功通过电子邮件将简单消息通过电子邮件发送。有人可以在电子邮件中说明如何发送附件。我知道在线上还有其他帖子,但是作为Python初学者,我很难理解它们。 问题答案: 这是另一个:

  • 问题内容: 我尝试将邮件从python发送到从.txt文件导入的多个电子邮件地址,我尝试了differend语法,但是没有任何效果… 编码: 因此,我尝试了此操作以从.txt文件导入收件人地址: mainList.txt包含: 但这行不通… 我也尝试做: 和 有谁知道该怎么办? 非常感谢! 问题答案: 并将每个收件人放在自己的 行上 (即以换行符分隔)。

  • 问题内容: 我在网站上使用PHP,并且想添加电子邮件功能。 我已经安装了WAMPSERVER。 如何使用PHP发送电子邮件? 问题答案: 使用PHP的功能是可能的。请记住,邮件功能在本地服务器上不起作用。