Ist es Ihnen langweilig, Ihren Freunden Geburtstagswünsche zu senden, oder vergessen Sie, Ihren Freunden Wünsche zu senden, oder möchten Sie sie um 12 Uhr morgens wünschen, aber Sie schlafen immer ein? Warum automatisieren Sie diese einfache Aufgabe nicht, indem Sie ein Python-Skript schreiben?

Als erstes importieren wir sechs Bibliotheken: 

Abgesehen davon, erstellen Sie auch eine Excel - Tabelle für die Datensätze mit wie folgt aus : Name des , E - Mail , Kontakt , Geburtstag , und Jahr

Ansatz:

  • Für den Teil zum Senden von E-Mails definieren wir eine Funktion sendEmail() , mit der eine Google Mail-Sitzung gestartet, die E-Mail gesendet und die Sitzung beendet wird. 
  • Für den SMS-Teil müssen wir ein Konto auf www.fast2sms.com haben, von dem wir einen API-Schlüssel erhalten. Dieser API-Schlüssel wird verwendet, um SMS über Mobiltelefonnummern mit Ihrem Konto auf fast2sms zu senden. Anschließend erstellen wir eine sendms() - Funktion, die den API-Schlüssel überprüft und SMS sendet.
  • Im Abschnitt mit dem Treibercode lesen wir die Daten aus der Excel-Tabelle und stimmen das heutige Datum mit einem der Geburtstage ab. Wenn es eine Übereinstimmung gibt, rufen wir die Funktionen sendEmail() und sendms() auf und fügen das aktuelle Jahr in die Excel- Tabelle ein . Außerdem haben wir ToastNotifier aus der win10toast- Bibliothek verwendet, um Desktop-Benachrichtigungen anzuzeigen , sobald die E-Mail und die SMS erfolgreich gesendet wurden.

Unten ist die Implementierung:



import pandas as pd 
import datetime 
import smtplib 
import time 
import requests 
from win10toast import ToastNotifier 
  
GMAIL_ID = 'your_email_here'
GMAIL_PWD = 'your_password_here'
  
toast = ToastNotifier() 
  
def sendEmail(to, sub, msg): 
    
    
    gmail_obj = smtplib.SMTP('smtp.gmail.com', 587
      
    
    gmail_obj.starttls()      
      
    
    gmail_obj.login(GMAIL_ID, GMAIL_PWD)    
      
    
    gmail_obj.sendmail(GMAIL_ID, to,  
                   f"Subject : {sub}\n\n{msg}"
      
    
    gmail_obj.quit()   
      
    print("Email sent to " + str(to) + " with subject " 
          + str(sub) + " and message :" + str(msg)) 
      
    toast.show_toast("Email Sent!" 
                     f"{name} was sent e-mail", 
                     threaded = True
                     icon_path = None, 
                     duration = 6) 
  
    while toast.notification_active(): 
        time.sleep(0.1) 
  
def sendsms(to, msg, name, sub): 
    
    url = "https://www.fast2sms.com/dev/bulk"
    payload = f"sender_id=FSTSMS&message={msg}&language=english&route=p&numbers={to}"
      
    headers = { 
        'authorization': "API_KEY_HERE", 
        'Content-Type': "application/x-www-form-urlencoded", 
        'Cache-Control': "no-cache", 
        } 
  
    response_obj = requests.request("POST", url, 
                                data = payload, 
                                headers = headers) 
    print(response_obj.text) 
    print("SMS sent to " + str(to) + " with subject :" + 
          str(sub) + " and message :" + str(msg)) 
      
    toast.show_toast("SMS Sent!" , 
                     f"{name} was sent message"
                     threaded = True
                     icon_path = None, 
                     duration = 6) 
  
    while toast.notification_active(): 
        time.sleep(0.1) 
  
if __name__=="__main__": 
    
      
    dataframe = pd.read_excel("excelsheet.xlsx")    
      
    
    today = datetime.datetime.now().strftime("%d-%m"
      
    
    yearNow = datetime.datetime.now().strftime("%Y") 
      
    
    writeInd = []                                                    
  
    for index,item in dataframe.iterrows(): 
        
        msg = "Many Many Happy Returns of the day dear " + str(item['NAME'])  
                 
        
        
        bday = item['Birthday'].strftime("%d-%m")         
          
        
        if (today == bday) and yearNow not in str(item['Year']):     
              
            
            sendEmail(item['Email'], "Happy Birthday", 
                      msg)     
              
            
            sendsms(item['Contact'], msg, item['NAME'], 
                    "Happy Birthday")    
              
            writeInd.append(index)                                   
  
    for i in writeInd: 
        
        yr = dataframe.loc[i,'Year'] 
          
        
        
        dataframe.loc[i,'Year'] = str(yr) + ',' + str(yearNow)              
  
    dataframe.to_excel('excelsheet.xlsx'
                index = False)