logo

Python e-mail küldése SMTP-n keresztül

Az Simple Mail Transfer Protocol (SMTP) protokoll a Python használatával történő e-mail-átvitel kezelésére szolgál. Az e-mailek e-mail szerverek közötti továbbítására szolgál. Ez egy alkalmazási réteg protokoll, amely lehetővé teszi a felhasználók számára, hogy leveleket küldjenek másoknak. A címzett lekéri az e-maileket a protokollok használatával POP (Post Office Protocol) és IMAP (Internet Message Access Protocol) .

Python e-mail küldése SMTP-n keresztül

Amikor a kiszolgáló egy ügyfél TCP-kapcsolatára figyel, kapcsolatot kezdeményez az 587-es porton.

A Python biztosítja a smtplib modul, amely meghatározza az SMTP-kliens munkamenet objektumot, amelyet az e-mailek internetes gépre küldésére használnak. Ebből a célból importálnunk kell a smtplib modult az import utasítás használatával.

 $ import smtplib 

Az SMTP objektumot az e-mail átvitelhez használják. A következő szintaxist használjuk az smtplib objektum létrehozásához.

 import smtplib smtpObj = smtplib.SMTP(host, port, local_hostname) 

A következő paramétereket fogadja el.

    házigazda:Ez annak a gépnek a gazdagépneve, amelyen az SMTP-kiszolgáló fut. Itt megadhatjuk a szerver IP-címét, például ( https://www.javatpoint.com ) vagy localhost. Ez egy opcionális paraméter.kikötő:Ez az a portszám, amelyen a gazdagép az SMTP-kapcsolatokat figyeli. Alapértelmezés szerint 25.local_hostname:Ha az SMTP szerver fut a helyi gépen, megemlíthetjük a helyi gép gazdagépnevét.

Az SMTP objektum sendmail() metódusa a levelek elküldésére szolgál a kívánt gépre. A szintaxis alább látható.

 smtpObj.sendmail(sender, receiver, message) 

Példa

 #!/usr/bin/python3 import smtplib sender_mail = '[email protected]' receivers_mail = ['[email protected]'] message = '''From: From Person %s To: To Person %s Subject: Sending SMTP e-mail This is a test e-mail message. '''%(sender_mail,receivers_mail) try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender_mail, receivers_mail, message) print('Successfully sent email') except Exception: print('Error: unable to send email') 

E-mail küldése gmailből

Vannak esetek, amikor az e-maileket a Gmail SMTP-szerverén keresztül küldik. Ebben az esetben a Gmailt átadhatjuk SMTP-szervernek, ahelyett, hogy a localhost-ot használnánk az 587-es porttal.

Használja a következő szintaxist.

 $ smtpObj = smtplib.SMTP('gmail.com', 587) 

Itt be kell jelentkeznünk a Gmail fiókba Gmail felhasználónévvel és jelszóval. Erre a célra az smtplib biztosítja a login() metódust, amely elfogadja a küldő felhasználónevét és jelszavát.

Emiatt előfordulhat, hogy a Gmail hozzáférést kér a kevésbé biztonságos alkalmazásokhoz, ha Gmailt használ. Ideiglenesen be kell kapcsolnia, hogy működjön.

Python e-mail küldése SMTP-n keresztül

Tekintsük a következő példát.

Példa

 #!/usr/bin/python3 import smtplib sender_mail = '[email protected]' receivers_mail = ['[email protected]'] message = '''From: From Person %s To: To Person %s Subject: Sending SMTP e-mail This is a test e-mail message. '''%(sender_mail,receivers_mail) try: password = input('Enter the password'); smtpObj = smtplib.SMTP('gmail.com',587) smtpobj.login(sender_mail,password) smtpObj.sendmail(sender_mail, receivers_mail, message) print('Successfully sent email') except Exception: print('Error: unable to send email') 

HTML küldése e-mailben

Az üzenetben lévő HTML-kódot úgy tudjuk formázni, hogy megadjuk a MIME verzióját, a tartalomtípust és a karakterkészletet a HTML elküldéséhez.

Tekintsük a következő példát.

Példa

 #!/usr/bin/python3 import smtplib sender_mail = &apos;[email protected]&apos; receivers_mail = [&apos;[email protected]&apos;] message = &apos;&apos;&apos;From: From Person %s To: To Person %s MIME-Version:1.0 Content-type:text/html Subject: Sending SMTP e-mail <h3>Python SMTP</h3> <strong>This is a test e-mail message.</strong> &apos;&apos;&apos;%(sender_mail,receivers_mail) try: smtpObj = smtplib.SMTP(&apos;localhost&apos;) smtpObj.sendmail(sender_mail, receivers_mail, message) print(&apos;Successfully sent email&apos;) except Exception: print(&apos;Error: unable to send email&apos;)