Я пытаюсь отправить электронное письмо из Python на основе уникальных значений из фрейма данных pandas.Я могу вызвать электронную почту для одного пользователя.Когда я пытаюсь отправить его, проверяя, существует ли пользователь или группа, это не работает.
import smtplib
import email
import email.mime.multipart
import email.mime.text
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import pandas as pd
import numpy as np
contacts = pd.read_excel(r'C:\Contacts\Contacts.xlsx',
sheet_name = 'EMAIL',
header = 0
)
releases_data=pd.read_excel(r'C:\Hourly Releases\Releases.xlsx'
,header = 0)
team_data=pd.read_excel(r'C:\Hourly Releases\EE Details.xlsx
, header = 0)
team_data_applied=pd.merge(left=team_data,right=releases_data,on = 'Empl ID')
unique=team_data_applied['Team'].unique()
for team in unique:
manager = team_data_applied[team_data_applied['Team']==team]
subject = "#MS#"+Team+"- Hourly Releases"
body = """
Hi,
Below is the snap shot of team's hourly releases.
"""
mail_body = body + "\n"+str(manager)
MY_ADDRESS="xyz@abc.com"
PASSWORD = '******'
toaddr = "teammanager1@abc.com"
msg = MIMEMultipart()
msg['From'] = MY_ADDRESS
msg['To'] = toaddr
msg.attach(MIMEText(mail_body, 'plain'))
server = smtplib.SMTP(host='smpt-outlook.mail.com',port=25)
server.starttls()
server.login(MY_ADDRESS,PASSWORD)
text = msg.as_string()
server.sendmail(MY_ADDRESS,toaddr, text)
server.quit()
Используя этот код, я могу вызвать электронную почту для одного пользователя.Я попытался создать две функции, а затем вызвать их в основной функции для отправки электронного письма.Код работал.Без запуска электронной почты.
Ниже приведены созданные мной функции.
def team_content():
for team in unique:
manager =team_data_applied[team_data_applied['Team']==team]
subject = "#MS#"+Team+"- Hourly Releases"
body = """
Hi,
Below is the snap shot of team's hourly releases.
"""
mail_body = body + "\n"+str(manager)
print(mail_body)
return team,manager,mail_body,subject
def get_contacts():
contacts = pd.read_excel(r'C:\Contacts\Contacts.xlsx',
sheet_name = 'EMAIL',
header = 0
)
for index , row in contacts.iterrows():
teams = contacts['TEAM']
emails = contacts['EMAIL']
return teams, emails
def main():
team,manager,mail_body,subject =team_content()
teams, emails = get_contacts()
server = smtplib.SMTP(host='smtp-outlook.mail.com',port=25)
for team,manager,mail_body,subject in zip(team,manager,mail_body,subject):
for teams, emails in zip(teams, emails):
if team == teams:
msg.attach(MIMEText(mailbody, 'plain'))
msg['From'] = xyz@abc.com
msg['To'] = emails
msg['Subject'] = subject
text = msg.as_string()
server.sendmail('xyz@abc.com',emails, text)
server.quit()
if __name__ == '__main__':
main()
Не уверен, что изменить, чтобы я мог вызвать электронную почту.Работает нормально, если я использую одно письмо.