Python:使用smtplib modu发送电子邮件时未显示“主题”

2024-05-23 21:42:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以使用smtplib模块成功地发送电子邮件。但当emial被发送时,它不包括发送的电子邮件中的主题。

import smtplib

SERVER = <localhost>

FROM = <from-address>
TO = [<to-addres>]

SUBJECT = "Hello!"

message = "Test"

TEXT = "This message was sent with Python's smtplib."
server = smtplib.SMTP(SERVER)
server.sendmail(FROM, TO, message)
server.quit()

我应该如何写“server.sendmail”来在发送的电子邮件中包含主题。

如果我使用server.sendmail(FROM,TO,message,SUBJECT),它会给出关于“smtplib.smtpsenderrefuse”的错误


Tags: 模块tofromimportlocalhostmessage主题server
3条回答

将其附加为标题:

message = 'Subject: {}\n\n{}'.format(SUBJECT, TEXT)

然后:

server = smtplib.SMTP(SERVER)
server.sendmail(FROM, TO, message)
server.quit()

还可以考虑使用标准的Python模块^{}-它将在编写电子邮件时对您有很大帮助。

试试这个:

import smtplib
from email.mime.multipart import MIMEMultipart
msg = MIMEMultipart()
msg['From'] = 'sender_address'
msg['To'] = 'reciver_address'
msg['Subject'] = 'your_subject'
server = smtplib.SMTP('localhost')
server.sendmail('from_addr','to_addr',msg.as_string())

您可能应该将代码修改为以下内容:

from smtplib import SMTP as smtp
from email.mime.text import MIMEText as text

s = smtp(server)

s.login(<mail-user>, <mail-pass>)

m = text(message)

m['Subject'] = 'Hello!'
m['From'] = <from-address>
m['To'] = <to-address>

s.sendmail(<from-address>, <to-address>, m.as_string())

显然,<>变量需要实际的字符串值,或者有效的变量,我只是将它们作为占位符填充。这对我发送带有主题的消息很有用。

相关问题 更多 >