我将包含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)]
答案 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
一样。为什么不使用subject
和from
?
从smtplib
examples开始,您还需要在电子邮件正文中加入From:
和To:
。请查看this example,了解如何使用smtplib
进行更高级别的抽象。
我知道我还没有完全将您的代码重新编写到这里的工作版本中,但希望这至少会让您更接近。