logo

Envio de email em Python usando SMTP

Simple Mail Transfer Protocol (SMTP) é usado como um protocolo para lidar com a transferência de e-mail usando Python. É usado para rotear emails entre servidores de email. É um protocolo da camada de aplicação que permite aos usuários enviar mensagens para outros. O destinatário recupera e-mail usando os protocolos POP (Protocolo Postal) e IMAP (protocolo de acesso a mensagens da Internet) .

Envio de email em Python usando SMTP

Quando o servidor escuta a conexão TCP de um cliente, ele inicia uma conexão na porta 587.

Python fornece um smtplib módulo, que define um objeto de sessão do cliente SMTP usado para enviar e-mails para uma máquina da Internet. Para isso, temos que importar o smtplib módulo usando a instrução import.

 $ import smtplib 

O objeto SMTP é usado para transferência de email. A sintaxe a seguir é usada para criar o objeto smtplib.

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

Ele aceita os seguintes parâmetros.

    hospedar:É o nome do host da máquina que está executando o servidor SMTP. Aqui, podemos especificar o endereço IP do servidor como (https://www.javatpoint.com) ou localhost. É um parâmetro opcional.porta:É o número da porta na qual a máquina host está escutando as conexões SMTP. É 25 por padrão.nome_host_local:Se o servidor SMTP estiver rodando em sua máquina local, podemos mencionar o nome do host da máquina local.

O método sendmail() do objeto SMTP é usado para enviar o email para a máquina desejada. A sintaxe é fornecida abaixo.

algoritmos de pesquisa binária
 smtpObj.sendmail(sender, receiver, message) 

Exemplo

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

Enviando e-mail do Gmail

Há casos em que os e-mails são enviados através do servidor SMTP do Gmail. Neste caso, podemos passar o Gmail como servidor SMTP em vez de usar o localhost com a porta 587.

Use a seguinte sintaxe.

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

Aqui, precisamos fazer login na conta do Gmail usando o nome de usuário e a senha do Gmail. Para tanto, o smtplib disponibiliza o método login(), que aceita o nome de usuário e senha do remetente.

Isso pode fazer com que seu Gmail solicite acesso a aplicativos menos seguros se você estiver usando o Gmail. Você precisará ativar isso temporariamente para que funcione.

Envio de email em Python usando SMTP

Considere o seguinte exemplo.

Exemplo

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

Enviando HTML por e-mail

Podemos formatar o HTML na mensagem especificando a versão MIME, o tipo de conteúdo e o conjunto de caracteres para enviar o HTML.

Considere o seguinte exemplo.

comprimento da string java

Exemplo

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