我需要能够在我发送的电子邮件中添加标签,以便将内容复制粘贴到Excel中。代码:
SUBJECT = subj
TO = [whoto]
FROM = whofrom
BODY = string.join((
"From: %s" % FROM,
"To: %s" % ", ".join(TO),
"Subject: %s" % SUBJECT ,
"",
text
), "\r\n")
server = smtplib.SMTP(host)
server.login(log,pass)
server.sendmail(FROM, TO, BODY)
server.quit()
我的文字中有标签,但是当发送电子邮件时,没有标签。我怎样才能保留标签。
答案 0 :(得分:1)
我建议使用mime编码器库:
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders
import os
import smtplib
import datetime
import logging
class mailer:
def __init__(self,SERVER="my.mail.server",FROM="email@mydomain.com"):
self.server = SERVER
self.send_from = FROM
self.logger = logging.getLogger('mailer')
def send_mail(self, send_to, subject, text, files=[]):
assert type(send_to)==list
assert type(files)==list
if self.logger.isEnabledFor(logging.DEBUG):
self.logger.debug(' '.join(("Sending email to:",' '.join(send_to))))
self.logger.debug(' '.join(("Subject:",subject)))
self.logger.debug(' '.join(("Text:",text)))
self.logger.debug(' '.join(("Files:",' '.join(files))))
msg = MIMEMultipart()
msg['From'] = self.send_from
msg['To'] = COMMASPACE.join(send_to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
msg.attach( MIMEText(text) )
for f in files:
part = MIMEBase('application', "octet-stream")
part.set_payload( open(f,"rb").read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f))
msg.attach(part)
smtp = smtplib.SMTP(self.server)
mydict = smtp.sendmail(self.send_from, send_to, msg.as_string())
if self.logger.isEnabledFor(logging.DEBUG):
self.logger.debug("Email Successfully Sent!")
smtp.close()
return mydict
请务必查看返回字典,因为如果只有部分人收到该电子邮件,它会通知您。
答案 1 :(得分:0)
您将需要将电子邮件切换为HTML并使用表格。就我而言,Gmail会将“电子邮件”输出从选项卡转换为空格,以使其看起来正确。
要确认这是您的问题。查看原始电子邮件,然后尝试将其复制并粘贴到其中。