在python中发送带有发件人和收件人头的电子邮件

时间:2018-05-01 14:31:13

标签: python email smtplib

在使用Mailgun API发送电子邮件failing后,我一直使用smtplib成功发送带有SMTP的电子邮件,其代码如下。

def send_simple_message(mailtext, mailhtml):
    print("Mailhtml is:" + mailhtml)
    logging.basicConfig(level=logging.DEBUG)
    import smtplib
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    msg = MIMEMultipart('alternative')
    msg['Subject'] = "Summary of Credit Card payments due"
    msg['From']    = "creditcards@domain.in"
    msg['To']      = "me@domain.in"
    s = smtplib.SMTP('smtp.mailgun.org', 587)
    part1 = MIMEText(mailtext, 'plain')
    part2 = MIMEText(mailhtml, 'html')
    msg.attach(part1)
    msg.attach(part2)
    s.login('postmaster@domain.in', 'password')
    s.sendmail(msg['From'], msg['To'], msg.as_string())
    s.quit()

但是,这会将sender字段显示为creditcards@domain.in。如何添加发件人标头字段,以便发件人显示为Someone important (creditcards@domain.in)

1 个答案:

答案 0 :(得分:0)

我使用Header中的email.headerformataddr中的email.utils解决了这个问题。我的完整工作脚本如下所示:

def send_simple_message(mailtext, mailhtml, month, files=None):
    # print("file is:" + filename)
    logging.basicConfig(level=logging.DEBUG)
    import smtplib
    from os.path import basename
    from email.mime.application import MIMEApplication
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    from email.header import Header
    from email.utils import formataddr
    Recipient = "me@domain.com"
    msg = MIMEMultipart('alternative')
    msg['Subject'] = "Summary of Credit Card payments due in " + month
    msg['From'] = formataddr((str(Header('Finance Manager', 'utf-8')), 'creditcards@domain.in'))
    msg['To']      = Recipient
    part1 = MIMEText(mailtext, 'plain')
    part2 = MIMEText(mailhtml, 'html')
    msg.attach(part1)
    msg.attach(part2)
    for f in files or []:
        with open(f, "rb") as fil:
            part = MIMEApplication(
                fil.read(),
                Name=basename(f)
            )
        # After the file is closed
        part['Content-Disposition'] = 'attachment; filename="%s"' % basename(f)
        msg.attach(part)

    s = smtplib.SMTP('smtp.mailgun.org', 587)
    s.login('postmaster@domain.in', 'pass')
    s.sendmail(msg['From'], msg['To'], msg.as_string())
    s.quit() 
相关问题