【发布时间】:2020-09-23 10:05:07
【问题描述】:
我有一个数据框 (df),其中每列的值如下所示:
如何根据 df['Owning'] 和 df['Type'] 中的唯一值循环遍历 pandas 数据框,并将其分离到具有不同所有者和抄送列表的不同 Outlook 电子邮件?
以下是为一种“拥有”类型发送的代码。
TROGY=df[df['Owning']=='TROGY']
TROGY_21=TROGY[[TROGY['Type']=='210s']
TROGY_22=TROGY[[TROGY['Type']=='220s']
TROGY_21C2=TROGY_21[TROGY_21['CLASS']=='CLASS 2']
TROGY_21C3=TROGY_21[TROGY_21['CLASS']=='CLASS 3']
TROGY_22C2=TROGY_22[TROGY_22['CLASS']=='CLASS 2']
TROGY_22C3=TROGY_22[TROGY_22['CLASS']=='CLASS 3']
sender = 'donotreply@outlook.com'
recipient = TROGY['Owner'] ---- group by df['Owning'] and df['Type']
subject = 'Highlight For the Day XXX, YYYYY'
XXX referring to df['Owning']
YYYYY referring to df['Type']
msg = MIMEMultipart('alternative')
msg['Subject'] = subject
msg['From'] = sender
msg['To'] = ','.join(recipient)
body = ("""\
<html>
<head></head><h2 align=center>CONVERSION</h2>
<body>
<div>Dear Conversion Owners, below is the highlight for the day.</div>
Class 2
{0}
Class 3
{1}
</body>
</html>
""".format(TROGY_21C2_Block.to_html(),TROGY_21C3.to_html()))
msg.attach(MIMEText(body, 'html'))
try:
smtpObj = smtplib.SMTP('relay.xx.com', 'xx')
smtpObj.sendmail(sender, recipient, msg.as_string())
print ("Successfully sent emai")
smtpObj.quit()
except smtplib.SMTPException:
print ("Error: unable to send email")
希望的结果是总共有 5 封电子邮件发送给“所有者”列中指定的收件人,并具有不同的电子邮件标题。
电子邮件 1 标题:“今天的亮点 TROGY,210 年代”
收件人:肯特,莉莉
电子邮件 2 标题:“今天的亮点 TROGY,220 年代”
收件人:肯特,
电子邮件 3 标题:“PHM, 210s 今日亮点”
收件人:bose
电子邮件 4 标题:“FUSION 210 年代的亮点”
收件人:Nikki
电子邮件 5 标题:“FUSION 220 年代的亮点”
收件人:gaddam
【问题讨论】:
标签: python pandas dataframe email outlook