当在python中发送带有smtp的电子邮件时,我的\ t被替换为单个空格。

时间:2011-11-23 20:20:13

标签: python smtp

我需要能够在我发送的电子邮件中添加标签,以便将内容复制粘贴到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()

我的文字中有标签,但是当发送电子邮件时,没有标签。我怎样才能保留标签。

2 个答案:

答案 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会将“电子邮件”输出从选项卡转换为空格,以使其看起来正确。

要确认这是您的问题。查看原始电子邮件,然后尝试将其复制并粘贴到其中。