Automatisches Versenden von Geburtstags-Mails mit Python
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:
- Pandas
- Terminzeit
- smtplib
- Zeit
- Anfragen
- win10toast
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()
(
"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)
(response_obj.text)
(
"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
)