In questa lezione, condividerò lo script che utilizzo per inviare e -mail agli utenti delle app che faccio e altro ancora.
Cosa faremo?
Creeremo un semplice programma Python che farà quanto segue:
Questi punti rendono questo programma molto più vicino a un utilizzo della vita reale di inviare e-mail nelle tue app. Iniziamo.
File per e -mail
Il file che contiene le e -mail per gli utenti sembrerà così:
Shubham [email protected]
Questo è solo un semplice file di testo che contiene il nome dell'utente e l'e -mail separati dallo spazio. Sono state inserite più e -mail con i dati di ciascun utente in una nuova riga. Abbiamo chiamato questo file utenti.TXT.
Usando il modello
Definiamo rapidamente anche il modello che useremo nel nostro script per sostituire i valori:
Ciao $ persona_name,
Abbiamo inviato questa e -mail utilizzando il modulo Python Smtplib. Cool, giusto?
Buona giornata in anticipo!
Saluti
Abbiamo usato una stringa modello $ Person_name che verrà sostituito con il nome della persona che otteniamo dagli utenti.file txt durante l'invio dell'email.
Ottenere i dati dell'utente dal file
Il primo passo per inviare e -mail a un utente è identificarlo in cui vogliamo inviare le e -mail. Scriviamo una funzione Python che accetterà un nome di file e restituisce il nome degli utenti e gli ID e -mail in cui le e -mail devono essere inviate:
def get_users_data (file_name):
user_name = []
user_email = []
con open (file_name, modalità = 'r', encoding = 'utf-8') come user_file:
per user_info in user_file:
nome utente.append (user_info.split () [0])
user_email.append (user_info.split () [1])
return user_name, user_email
Con questa funzione, restituiamo i nomi e le e -mail dell'utente che otteniamo il file.
Ottenere l'oggetto modello
Ora possiamo analizzare il nostro modello e ottenere un oggetto modello dal file di testo che abbiamo realizzato:
def read_template (file_name):
con open (file_name, 'r', codifica = 'utf-8') come msg_template:
msg_template_content = msg_template.Leggere()
modello di ritorno (msg_template_content)
Con questo, torneremo un oggetto modello che possiamo usare per analizzare il contenuto del file e effettuare le sostituzioni necessarie per le stringhe del modello come il nome di un utente.
Come viene eseguita l'invio e -mail?
Ora che siamo pronti con il design del modello e i dati dell'utente, dobbiamo capire come viene effettivamente inviata un'e -mail all'utente:
Impostazione della connessione SMTP
Definiamo finalmente la funzione che invierà l'e -mail agli utenti designati. Ecco la funzione:
def main ():
user_name, user_email = get_users_data ('utenti.txt ') # Leggi i dettagli dell'utente
message_template = read_template ('messaggio.TXT')
# imposta il server SMTP
Smtplib_Server = Smtplib.SMTP (host = 'SMTP.gmail.com ', porta = 587)
Smtplib_Server.starttls ()
Smtplib_Server.Accedi (send_from, email_pwd)
# Ottieni ogni dettaglio dell'utente e invia l'e -mail:
Per il nome, e -mail in zip (user_name, user_email):
multipart_message = mimemultiPart () # Crea un messaggio
# Aggiungi il nome della persona reale al modello di messaggio
msg = message_template.sostituto (persona_name = nome.titolo())
# Stampa il corpo del messaggio per il nostro bene
Stampa (MSG)
# imposta i parametri del messaggio
multipart_message ['from'] = sent_from
multipart_message ['to'] = email
multipart_message ['soggetto'] = "email LinuxHint"
# Aggiungi il corpo del messaggio
multipart_message.Allegato (MimeText (MSG, 'Plain'))
# Invia il messaggio tramite il server impostato in precedenza.
Smtplib_Server.Send_Message (multipart_message)
Del Multipart_Message
# Termina la sessione SMTP e chiudi la connessione
Smtplib_Server.esentato()
Nella funzione sopra, abbiamo seguito ogni passaggio che abbiamo affermato nella sezione precedente. Abbiamo costruito la connessione SMTP e la abbiamo utilizzato per inviare l'e -mail.
Programma completo
Nella sezione finale, diamo un'occhiata al programma completo che può essere utilizzato per inviare l'e -mail all'utente designato:
Importa Smtplib
dal modello di importazione stringa
dall'email.mimo.multipart import mimemultipart
dall'email.mimo.Importa di testo MimeText
Send_from = 'my-email-here'
Email_pwd = 'my-password-here'
def get_users_data (file_name):
user_name = []
user_email = []
con open (file_name, modalità = 'r', encoding = 'utf-8') come user_file:
per user_info in user_file:
nome utente.append (user_info.split () [0])
user_email.append (user_info.split () [1])
return user_name, user_email
def read_template (file_name):
con open (file_name, 'r', codifica = 'utf-8') come msg_template:
msg_template_content = msg_template.Leggere()
modello di ritorno (msg_template_content)
def main ():
user_name, user_email = get_users_data ('utenti.txt ') # Leggi i dettagli dell'utente
message_template = read_template ('messaggio.TXT')
# imposta il server SMTP
Smtplib_Server = Smtplib.SMTP (host = 'SMTP.gmail.com ', porta = 587)
Smtplib_Server.starttls ()
Smtplib_Server.Accedi (send_from, email_pwd)
# Ottieni ogni dettaglio dell'utente e invia l'e -mail:
Per il nome, e -mail in zip (user_name, user_email):
multipart_message = mimemultiPart () # Crea un messaggio
# Aggiungi il nome della persona reale al modello di messaggio
msg = message_template.sostituto (persona_name = nome.titolo())
# Stampa il corpo del messaggio per il nostro bene
Stampa (MSG)
# imposta i parametri del messaggio
multipart_message ['from'] = sent_from
multipart_message ['to'] = email
multipart_message ['soggetto'] = "email LinuxHint"
# Aggiungi il corpo del messaggio
multipart_message.Allegato (MimeText (MSG, 'Plain'))
# Invia il messaggio tramite il server impostato in precedenza.
Smtplib_Server.Send_Message (multipart_message)
Del Multipart_Message
# Termina la sessione SMTP e chiudi la connessione
Smtplib_Server.esentato()
Se __Name__ == '__main__':
principale()
Quando eseguiamo questo programma con un ID Gmail, potresti affrontare un problema come questo:
Errore Gmail SMTP
Conclusione
In questa lezione, abbiamo esaminato come possiamo inviare e -mail usando Python Smtplib modulo.