logo

Python enviando correo electrónico usando SMTP

El Protocolo simple de transferencia de correo (SMTP) se utiliza como protocolo para manejar la transferencia de correo electrónico mediante Python. Se utiliza para enrutar correos electrónicos entre servidores de correo electrónico. Es un protocolo de capa de aplicación que permite a los usuarios enviar correo a otro. El receptor recupera el correo electrónico utilizando los protocolos. POP (Protocolo de oficina de correos) y IMAP (Protocolo de acceso a mensajes de Internet) .

Python enviando correo electrónico usando SMTP

Cuando el servidor escucha la conexión TCP de un cliente, inicia una conexión en el puerto 587.

Python proporciona una smtplib módulo, que define un objeto de sesión de cliente SMTP utilizado para enviar correos electrónicos a una máquina de Internet. Para ello debemos importar el smtplib módulo usando la declaración de importación.

 $ import smtplib 

El objeto SMTP se utiliza para la transferencia de correo electrónico. La siguiente sintaxis se utiliza para crear el objeto smtplib.

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

Acepta los siguientes parámetros.

    anfitrión:Es el nombre de host de la máquina que ejecuta su servidor SMTP. Aquí, podemos especificar la dirección IP del servidor como (https://www.javatpoint.com) o localhost. Es un parámetro opcional.puerto:Es el número de puerto en el que la máquina host escucha las conexiones SMTP. Es 25 por defecto.nombre_host_local:Si el servidor SMTP se está ejecutando en su máquina local, podemos mencionar el nombre de host de la máquina local.

El método sendmail() del objeto SMTP se utiliza para enviar el correo a la máquina deseada. La sintaxis se proporciona a continuación.

 smtpObj.sendmail(sender, receiver, message) 

Ejemplo

 #!/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') 

Enviar correo electrónico desde gmail

Hay casos en los que los correos electrónicos se envían mediante el servidor SMTP de Gmail. En este caso, podemos pasar Gmail como servidor SMTP en lugar de utilizar el host local con el puerto 587.

Utilice la siguiente sintaxis.

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

Aquí, debemos iniciar sesión en la cuenta de Gmail con el nombre de usuario y la contraseña de Gmail. Para ello, smtplib proporciona el método login(), que acepta el nombre de usuario y la contraseña del remitente.

Esto puede hacer que Gmail te solicite acceso a aplicaciones menos seguras si estás usando Gmail. Deberá activarlo temporalmente para que funcione.

Python enviando correo electrónico usando SMTP

Considere el siguiente ejemplo.

Ejemplo

excepción de lanzamiento de Java
 #!/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') 

Envío de HTML en correo electrónico

Podemos formatear el HTML en el mensaje especificando la versión MIME, el tipo de contenido y el juego de caracteres para enviar el HTML.

Considere el siguiente ejemplo.

Ejemplo

 #!/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;)