如何使用smtplib将值解压缩到消息文本中?

时间:2015-10-13 19:02:54

标签: python smtplib

我将包含sql查询结果的元组列表输入到我的电子邮件中。我希望能够格式化电子邮件,以下列格式打印msg列表中的行:

SUBJECT LINE: xxxxx
File name: 'Blah Blah Blah' Sent to Pivot at: '3:30 p.m.'
File name: 'Blah Blah Blah' Sent to Pivot at: '3:30 p.m.'
File name: 'Blah Blah Blah' Sent to Pivot at: '3:30 p.m.'
File name: 'Blah Blah Blah' Sent to Pivot at: '3:30 p.m.'
File name: 'Blah Blah Blah' Sent to Pivot at: '3:30 p.m.'

以下是代码:

def send_email(recipient_list, missing_list):
    msg = ['File name: {0} '
           'Sent to Pivot at: {1}\n'.format(element[1],
                                            element[2]) for element in missing_list]
    msg['Subject'] = 'Alert!! Handshake files missing!'
    msg['From'] = r'm****@r**.com'
    msg['To'] = recipient_list

    s = smtplib.SMTP(r'mail.r**.com')
    s.sendmail(msg['From'], msg['To'], msg)
    s.quit()

我的输入将采用包含三个项目的元组列表的形式,[(id,file_name,timestamp)]

1 个答案:

答案 0 :(得分:1)

您似乎缺少Python中一些基本数据结构的知识。

这非常接近:

msg = ['File name: {0} '
       'Sent to Pivot at: {1}'.format(element[1],
                                      element[2]) for element in missing_list]

但是你想要在一个字符串中将它们连接在一起。也许是这样的:

body = '\n'.join(msg)

我不确定你还想用msg做些什么。您已将其创建为list,但之后正在尝试将值分配给键,就好像它是dict一样。为什么不使用subjectfrom

等局部变量

smtplib examples开始,您还需要在电子邮件正文中加入From:To:。请查看this example,了解如何使用smtplib进行更高级别的抽象。

我知道我还没有完全将您的代码重新编写到这里的工作版本中,但希望这至少会让您更接近。