Отправка электронной почты из python с использованием уникальных значений из фрейма данных Pandas - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь отправить электронное письмо из 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()

Не уверен, что изменить, чтобы я мог вызвать электронную почту.Работает нормально, если я использую одно письмо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...