Ad esempio, si desidera inviare un promemoria ai tuoi clienti per le loro fatture rimanenti e hai tutti i dati relativi ai clienti come i loro numeri di telefono, indirizzo, età ecc. Programma semplice in Python per farlo automaticamente per te. In questo tutorial, impareremo come funziona il protocollo e -mail e come puoi automatizzare il processo per risparmiare tempo prezioso.
Simple Mail Transfer Protocol (SMTP) è computerizzato equivalente al servizio postale. È un protocollo che funziona sul livello dell'applicazione di una rete TCP/IP. È un protocollo standard per l'invio e la ricezione di e -mail su Internet. Il processo di trasferimento di posta consiste in server di posta elettronica e clienti che inviano e ricevono e -mail l'uno all'altro.
Ad esempio, hai un account Gmail e vuoi inviare un'e -mail al tuo amico sul suo account Yahoo. Scrivi un'e -mail e premi invio, ma il processo di backend è un po 'complicato e per capire questo processo, dovrai prima capire SMTP. Il tuo client di posta elettronica SMTP invia per la prima volta Helo (O Ehlo) al server Gmail, puoi dire che questo comando o intestazione è equivalente a Ospite Intestazione nel protocollo HTTP e viene utilizzata per identificare il server utilizzando il nome di dominio. Dopo Helo o Ehlo, il client si autentica sul server con il nome utente e la password forniti utilizzati AUTH comando. Quindi specifica l'indirizzo e -mail del mittente e del destinatario e quindi il corpo del messaggio e invia e -mail al server Gmail. Gmail Server confermerà innanzitutto che se l'indirizzo e -mail del destinatario su Yahoo esiste o no, quindi invierà l'e -mail a Yahoo Server in cui il destinatario può recuperare le sue e -mail da.
Smtplib
SMTPLIB è una libreria Python che può essere utilizzata come client SMTP proprio come Gmail, Yahoo, Thunderbird o qualsiasi altro client di posta elettronica e può essere utilizzato per inviare e -mail. Possiamo eseguire tutte le attività utilizzando il client SMTPLIB che possiamo fare con coloro che hanno un'interfaccia utente grafica.
Viene per impostazione predefinita in Python, nel caso in cui non lo hai quindi puoi installare utilizzando il comando seguente.
ubuntu@ubuntu: ~ $ pip Installa Smtplib
O in Python3
ubuntu@ubuntu: ~ $ pip Installa Smtplib
Scrivere la tua prima email con Python
In questo tutorial, userò un account Gmail come mittente, anche io farò uso della console Python, quindi sarà più facile per me spiegare ogni riga di codice passo per passo. Per iniziare, dobbiamo consentire al nostro accesso Gmail ad app meno sicure.
Quindi accedi al tuo account Gmail e poi vai alle impostazioni dell'account.
Ora assicurati che l'accesso per le app meno sicuro sia attivato.
Ora apri la tua console Python e inizia a scrivere la tua prima email utilizzando Python
ubuntu@ubuntu: ~ $ python
Python 2.7.16 (impostazione predefinita, 7 ottobre 2019, 17:36:04)
[GCC 8.3.0] su Linux2
Digita "Guida", "Copyright", "Credit" o "Licenza" per ulteriori informazioni.
// Importa la libreria SMTP
>>> Importa smtplib
// Connettiti al server Gmail con nome di dominio e numero di porta (questa impostazione differisce per
Ogni fornitore di posta elettronica, dai un'occhiata al tavolo indicato di seguito)
>>> MailObj = Smtplib.SMTP ('SMTP.gmail.com ', 587)
// saluta il server
>>> MailObj.ehlo ()
(250, 'SMTP.gmail.com al tuo servizio, [103.255.4.246] \ nsize35882577 \ n8bitmime \ nstartttls \
NenHitedStatuSusdes \ npipelining \ nchunking \ nsmtputf8 ')
// port 587 significa che stiamo usando la connessione TLS crittografata, quindi avvia TLS crittografati
Comunicazione usando startTls (), in modo che le nostre credenziali e i nostri messaggi non vengano annusati
>>> MailObj.starttls ()
(220, '2.0.0 Pronto per iniziare TLS ')
// Accedi al tuo account Gmail utilizzando e -mail e password
>>> MailObj.Accedi ('[email protected] ',' s3cr3t_p4sw0rd ')
(235, '2.7.0 accettato ')
// Specifica l'indirizzo e -mail e il contenuto e -mail del mittente e del destinatario
>>> MailObj.sendmail ('[email protected] ',' [email protected] '', soggetto:
Ciao mondo! \ n Hello World! Questa è la mia prima e -mail Hello World in Python ')
// Chiudi connessione al server Gmail
>>> MailObj.esentato()
(221, '2.0.0 Connessione di chiusura B6SM4519863LFI.72 - GSMTP ')
Nel programma di esempio di cui sopra, sostituire il contenuto fornito con il proprio. Se non sei un utente Gmail, puoi utilizzare il server di posta elettronica del tuo provider. Ecco l'elenco dei nomi di dominio e delle porte di alcuni comuni fornitori di posta.
Nome | Nome del dominio del server | Porta |
Gmail | Smtp.gmail.com | 587 |
Outlook / Hotmail | SMTP-MAIL.veduta.com | 587 |
Yahoo Mail | Smtp.posta.Yahoo.com | 587 |
Verizon | Smtp.Verizon.netto | 465 |
Comcast | Smtp.Comcast.netto | 587 |
Alcune parole su IMAP
Quindi abbiamo appena studiato che SMTP viene utilizzato per inviare e -mail, ma per cosa è IMAP (protocollo di messaggistica di accesso a Internet) per? SMTP non può essere utilizzato per cercare e ricevere e -mail dal protocollo server, IMAP o POP3 viene utilizzato a tale scopo.
Imapclient, imaplib e pyzmail
Ci sono due grandi librerie in Python che possono essere utilizzate come client IMAP per trovare, recuperare ed eliminare le e -mail dal server di posta. Python ha impostazione predefinita imaplib libreria ma un'altra libreria esterna imapclient è più efficace e facile da usare. In questo tutorial useremo imapclient Per recuperare le e -mail dal server di posta.
Il problema con imapclient è che recupera le e -mail da Mail Server in formato RAW. Quindi, avremo bisogno Pyzmail Libreria come parser per output intuitivo. Per installare entrambe le librerie, digita
ubuntu@ubuntu: ~ $ sudo pip Installa imapclient
ubuntu@ubuntu: ~ $ sudo pip installa pyzmail
Ottenere le tue e -mail da Mail Server
Ora impareremo come cercare e scaricare e -mail dal server di posta utilizzando ImapClient. Useremo ImapClient per cercare e scaricare le e -mail dal server, quindi useremo Pyzmail per analizzare questo contenuto grezzo. Leggiamo
// Importa libreria imapclient
>>> Importa ImapClient
// Connettiti al server IMAP di Gmail
>>> obj = imapclient.Imapclient ('imap.gmail.com ', ssl = true)
// Accedi al tuo account e -mail utilizzando le tue credenziali
>>> OBJ.Login ('[email protected] ',' s3cr4tp4ss ')
'[email protected] autenticato (successo) '
// Seleziona la cartella dei messaggi per leggere i.E Posta in arrivo, bozze, inviato posta
>>> OBJ.Select_Folder ('Inbox', readOnly = true)
'Esiste': 830, 'permanentflags': (), 'HighSmodSeq': 112999, 'UidNext': 931,
'Flags': ('\\ rispose', '\\ flagged', '\\ bozza', '\\ eliminato', '\\ visto',
'$ Nonfishing', '$ phishing'), 'uidvalidità': 1, 'lettura di sola': ["], 'recente: 0
// Cerca i tuoi messaggi nella posta in arrivo o applicherà un filtro, sotto il filtro mostrerà
IL MASSIONI RICEVOLITE dopo il 25-ott-2019
>>> mail_ids = obj.Search (['da quando', '25 -oct-2019 '])
>>> Mail_ids
[919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930]
// L'elenco "Mail_ids" contiene un elenco di ID e-mail ricevuti dal 25-ott-2019,
Puoi scaricare un'e -mail utilizzando la funzione di recupero imapclient.
>>> raw_mail = obj.fetch ([919], ['body []', 'bands'])
// Ora, il contenuto nella variabile raw_mail è in formato grezzo, non può essere visualizzato su
Schermo direttamente, quindi avremmo bisogno di un parser per analizzare questo contenuto per un output intuitivo
>>> Importa pyzmail
>>> messaggio = pyzmail.Pyzmessage.fabbrica (raw_mail [919] ['body []'])
// Ora l'e -mail viene analizzata e archiviata nella variabile di messaggio, per ottenere l'oggetto di
l'email, usa la funzione get_subject
>>> messaggio.get_subject ()
Abbassi le tue abilità questo Halloween con uno sconto del 25%
// Allo stesso modo, puoi vedere i dettagli del mittente
>>> messaggio.get_addresses ('from')
[(U'usama Azad ',' [email protected] ')]
>>> messaggio.get_addresses ('to')
[(U'[email protected] ',' [email protected] ')]
// per ottenere il corpo dell'e -mail, digita
>>> messaggio.text_part.get_payload ().decodifica (messaggio.text_part.chatset)
u "ciao! Goditi il 25% piatto sui nostri corsi premium "
Se hai un account in qualche altro provider di servizi di posta elettronica diversi da Gmail, puoi accedere al loro server IMAP. Ecco l'elenco dei nomi del dominio IMAP di alcuni famosi provider di posta.
Fornitore | Nome di dominio per server IMAP |
Yahoo | IMAP.posta.Yahoo.com |
Hotmail/Outlook | IMAP-MAIL.veduta.com |
Verizon | in arrivo.Verizon.netto |
Comcast | IMAP.Comcast.netto |
At & t | IMAP.posta.Att.netto |
Eliminazione della tua email dal server IMAP
Simile alla ricerca e al recupero delle e -mail dal server, puoi anche eliminare le e -mail dal tuo server di posta utilizzando il loro UID. Segui solo i passaggi indicati
// Per eliminare un'e -mail, devi girare leggi solo a "falso" per ottenere l'accesso alla scrittura al tuo
e -mail
>>> OBJ.Select_Folder ('Inbox', readOnly = false)
>>> mail_ids = obj.Search (['da quando', '25 -oct-2019 '])
>>> Mail_ids
[919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930]
// Fornisci un UID e -mail o un elenco di UID e -mail, dopo aver eseguito il comando sotto,
La tua email sarà scomparsa dalla posta in arrivo.
>>> OBJ.delete_messages (919)
919: ('\\ sew', '\\ cancellato')
// Questo comando eliminerà permanentemente le tue e -mail dal server di posta
>>> OBJ.espunge ()
('Successo', [])
https: // techtopz.com/build-a-birthday-reminder-appplication-in-python-on-mac/
Inventare il tuo promemoria di compleanno
Hai compleanni dei tuoi amici nei prossimi mesi e vuoi augurare loro i loro compleanni. Ma hai molto lavoro nel tuo ufficio e c'è la possibilità che ti dimenticherai di augurargli. Quindi questa attività può essere eseguita automaticamente usando Python. Di seguito è riportato il codice per eseguire questa attività.
// Importazione di moduliOra realizziamo un "Birthday_File", in cui salviamo nomi, indirizzi e -mail e la loro data di nascita. Questo è un semplice file di testo e sembra questo.
Spiegazione
Leggeremo questo file usando lo script Python e controlleremo il cui compleanno sta arrivando e lo auguriamo. Prima di tutto importeremo alcuni moduli. Il modulo DateTime ha funzioni che ci danno la data e l'ora correnti e molte altre. Ma lo useremo solo per trovare la data e l'ora correnti. Il modulo SMTPLIB viene utilizzato per inviare posta ed è stato spiegato sopra. Re Module ha funzioni che vengono utilizzate per trovare un'espressione regolare da una stringa.
In questo script, definiamo la funzione "Send_mail", che invia la posta a "Reciever_mail_address", il cui nome è "nome". Entrambi gli argomenti vengono passati alla funzione dal corpo principale di MSG. Nel corpo principale della sceneggiatura vedremo come troviamo "reciever_mail_address" e "nome".
L'invio di e -mail utilizzando SMTPLIB è stata spiegata sopra, in modo da poterlo leggere e non sarà discusso qui.
Nel corpo principale, andiamo alla directory in cui abbiamo salvato "Birthday_file" usando "OS.chdir () '. Quindi abbiamo un "while loop" che è sempre vero, quindi controllerà continuamente il compleanno. Ora otteniamo la data e l'ora correnti e lo salviamo nella variabile "Today". Sembra questo.
2019-11-01 16:19:07.144925
Estrarremo l'anno, il mese, il giorno, le ore, i minuti e i secondi usando gli indici di queste quantità. Dopo questo, apriremo Birthday_File in un oggetto "Birthday_File" in modalità lettura, quindi possiamo solo leggerlo. Ora salveremo tutte le righe di questo file nell'elenco delle righe. 'Birthday_file.readlines () "salverà ogni riga nell'elenco" righe ". Dopo questo chiuderemo Birthday_File usando 'Birthday_file.Funzione Close () '.
Ora leggeremo ogni riga uno per uno usando per loop. In ogni riga solo i dati di una persona sono disponibili in "Birthday_file", quindi stiamo leggendo solo i dati di una persona contemporaneamente in questo loop.
Dopo questo, estrarremo la data di nascita, l'indirizzo e -mail e il nome della persona che utilizza il modulo RE. Come abbiamo scritto la data nel seguente formato
YYYY-MM-DD
Quindi faremo un'espressione regolare "dateex" che trova questo formato nella linea.
Rif.Compile (r ”\ d 4-\ d 2-\ d 2”)
Comando sopra trova una stringa che ha "4 cifre" seguita da "-" poi "2 cifre" seguite da "-" e "2 cifre". Questo ci darà la data di nascita della persona in modo da estrarre Birth_Day e Birth_Month da questa espressione.
Allo stesso modo troveremo l'indirizzo e -mail utilizzando espressioni regolari. Dopo questo, confronteremo Birthday_Month e Current_Month e Birthday_Day e Current_Day. Se queste condizioni sono soddisfatte, invieremo l'e -mail di compleanno utilizzando la funzione "Send_mail" a Exact '08: 00 '.
Ora ci assicureremo che questo script Python funzioni ogni volta. Per fare questo, aggiungeremo questo compito a Crrontab. Crrontab, in Linux, viene utilizzato per eseguire automaticamente le attività. Quello che dobbiamo fare è solo aggiungere il compito a crontab. Per fare ciò, segui i passaggi indicati.
ubuntu@ubuntu: ~ $ crontab -e
@reboot python path_to_the_script
I comandi sopra consentiranno al tuo sistema di eseguire lo script Python ogni volta che riavvia il tuo sistema. In questo modo, il tuo sistema eseguirà lo script Python ogni volta che il tuo sistema è acceso.