Python在数据框中循环,在outlook电子邮件中插入不同的收件人、标题和电子邮件内容
我有一个数据帧(df),每列的值如下所示: 如何基于df['Owning']和df['Type']中的唯一值循环遍历pandas数据帧,并将其分离到具有不同所有者和抄送列表的不同Outlook电子邮件中 下面是为一种“拥有”类型发送的代码Python在数据框中循环,在outlook电子邮件中插入不同的收件人、标题和电子邮件内容,python,pandas,dataframe,email,outlook,Python,Pandas,Dataframe,Email,Outlook,我有一个数据帧(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=TROG
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")
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']=='class3']
发送者donotreply@outlook.com'
收件人=TROGY['Owner']——按df['Owning']和df['Type']分组
主题='XXX,yyyy当天的突出显示'
XXX指df[“拥有”]
yyyy指df['Type']
msg=MIMEMultipart('alternative')
msg['Subject']=主语
msg['From']=发件人
msg['To']=','.加入(收件人)
正文=(“”“\
转化
亲爱的转换所有者,以下是当天的亮点。
第二类
{0}
第三类
{1}
“.”格式(TROGY_21C2_Block.to_html(),TROGY_21C3.to_html())
附加(MIMEText(body,'html'))
尝试:
smtpObj=smtplib.SMTP('relay.xx.com','xx')
smtpObj.sendmail(发件人、收件人、msg.as_string())
打印(“已成功发送emai”)
smtpObj.quit()
除了smtplib.SMTPException:
打印(“错误:无法发送电子邮件”)
期望的结果将是总共发送5封电子邮件给“所有者”栏中指定的收件人,邮件标题不同
电子邮件1标题:“21世纪特洛伊之日的亮点”
收件人:Kent,lili
电子邮件2标题:“220年代特洛伊的一天亮点”
收件人:肯特
电子邮件3标题:“21世纪PHM当天的亮点”
收件人:bose
电子邮件4标题:“21世纪融合日亮点”
收件人:Nikki
电子邮件5标题:“当天亮点融合,220s”
收件人:gaddam您可以使用pandas和[“拥有”,“键入”]
作为参数。然后,在g[“所有者”]
上使用to_list()
创建收件人列表。对于主题文本,您可以使用返回groupby
函数,该函数是所用每列的组名称
输入sample.csv
ID,Owning,CLASS,Type,Owner,CC list
GD8235,TROGY,CLASS 2,210s,Kent,John
GD8298,TROGY,CLASS 3,210s,Lili,Ricky
GD8238,PHM,CLASS 3,210s,Bose,Ricky
GD8239,FUSION,CLASS 3,220s,Gaddam,Edmund
GD8240,TROGY,CLASS 2,220s,Kent,John
GD8243,FUSION,CLASS 2,210s,Nikki,John
import pandas as pd
df = pd.read_csv("sample.csv")
print(df)
groups = df.groupby(["Owning", "Type"])
for n, g in groups:
recipient = ", ".join(g["Owner"].to_list())
subject = f'Highlight For the Day {n[0]}, {n[1]}'
print(f"Title: {subject}")
print(f"Recipient: {recipient}")
Title: Highlight For the Day FUSION, 210s
Recipient: Nikki
Title: Highlight For the Day FUSION, 220s
Recipient: Gaddam
Title: Highlight For the Day PHM, 210s
Recipient: Bose
Title: Highlight For the Day TROGY, 210s
Recipient: Kent, Lili
Title: Highlight For the Day TROGY, 220s
Recipient: Kent