|
| 1 | +O envio automático de emails em Python pode ser feito com a biblioteca `smtplib`, que facilita a comunicação com servidores SMTP (Simple Mail Transfer Protocol). Para enviar emails automáticos, vamos configurar um servidor SMTP, criar uma mensagem de email e usar as credenciais da conta de envio (como Gmail ou Outlook). Se você quiser anexar arquivos, a biblioteca `email` oferece ferramentas para formatar a mensagem e adicionar anexos. |
| 2 | + |
| 3 | +Aqui está um exemplo básico de envio de email usando o Gmail, que inclui configurações e código comentado. |
| 4 | + |
| 5 | +--- |
| 6 | + |
| 7 | +### Passo 1: Configuração de uma Conta de Envio (Gmail) |
| 8 | + |
| 9 | +1. **Permitir Aplicativos Menos Seguros**: |
| 10 | + Para contas do Gmail, acesse [Acesso a apps menos seguros](https://myaccount.google.com/lesssecureapps) e ative-o. O Gmail restringe aplicativos "menos seguros" por padrão. |
| 11 | + |
| 12 | +2. **Gerar Senha de Aplicativo**: |
| 13 | + Para maior segurança, use uma senha específica para aplicativos. No painel de segurança da conta do Google, gere uma senha de aplicativo para enviar emails via Python. |
| 14 | + |
| 15 | +--- |
| 16 | + |
| 17 | +### Exemplo Básico: Envio de Email Simples |
| 18 | + |
| 19 | +```python |
| 20 | +import smtplib |
| 21 | +from email.mime.text import MIMEText |
| 22 | +from email.mime.multipart import MIMEMultipart |
| 23 | + |
| 24 | +# Configurações do servidor SMTP |
| 25 | +smtp_server = "smtp.gmail.com" |
| 26 | +smtp_port = 587 |
| 27 | +email_sender = "seu_email@gmail.com" |
| 28 | +email_password = "sua_senha" |
| 29 | + |
| 30 | +# Configurações do destinatário e da mensagem |
| 31 | +email_recipient = "destinatario@gmail.com" |
| 32 | +subject = "Email Automático com Python" |
| 33 | +body = "Este é um email automático enviado por um script em Python." |
| 34 | + |
| 35 | +# Cria a mensagem |
| 36 | +msg = MIMEMultipart() |
| 37 | +msg["From"] = email_sender |
| 38 | +msg["To"] = email_recipient |
| 39 | +msg["Subject"] = subject |
| 40 | +msg.attach(MIMEText(body, "plain")) |
| 41 | + |
| 42 | +try: |
| 43 | + # Conecta ao servidor e envia o email |
| 44 | + server = smtplib.SMTP(smtp_server, smtp_port) |
| 45 | + server.starttls() # Segurança TLS |
| 46 | + server.login(email_sender, email_password) # Login |
| 47 | + server.sendmail(email_sender, email_recipient, msg.as_string()) |
| 48 | + print("Email enviado com sucesso!") |
| 49 | +except Exception as e: |
| 50 | + print(f"Erro ao enviar o email: {e}") |
| 51 | +finally: |
| 52 | + server.quit() |
| 53 | +``` |
| 54 | + |
| 55 | +### Explicação do Código: |
| 56 | + |
| 57 | +1. **Configuração SMTP**: Define o servidor SMTP (Gmail usa `smtp.gmail.com` na porta `587` para conexão TLS). |
| 58 | +2. **Mensagem**: Criamos uma mensagem usando `MIMEMultipart` para facilitar o uso de múltiplas partes, como corpo de texto e anexos. |
| 59 | +3. **Envio do Email**: |
| 60 | + - Conectamos ao servidor SMTP usando o protocolo TLS. |
| 61 | + - Fazemos login usando o email e a senha do remetente. |
| 62 | + - Enviamos o email com `sendmail`. |
| 63 | +4. **Fechamento da Conexão**: Com o método `server.quit()`, encerramos a conexão com o servidor SMTP. |
| 64 | + |
| 65 | +--- |
| 66 | + |
| 67 | +### Exemplo com Anexo |
| 68 | + |
| 69 | +Para adicionar um anexo, podemos usar `MIMEBase` e `encoders`. |
| 70 | + |
| 71 | +```python |
| 72 | +from email.mime.base import MIMEBase |
| 73 | +from email import encoders |
| 74 | +import os |
| 75 | + |
| 76 | +# Definir o caminho do arquivo que deseja anexar |
| 77 | +file_path = "caminho_do_arquivo/a_anexar.txt" |
| 78 | + |
| 79 | +# Lê o arquivo e cria uma parte MIME para o anexo |
| 80 | +attachment = MIMEBase("application", "octet-stream") |
| 81 | +with open(file_path, "rb") as f: |
| 82 | + attachment.set_payload(f.read()) |
| 83 | + |
| 84 | +# Codifica em Base64 |
| 85 | +encoders.encode_base64(attachment) |
| 86 | +attachment.add_header( |
| 87 | + "Content-Disposition", |
| 88 | + f"attachment; filename= {os.path.basename(file_path)}", |
| 89 | +) |
| 90 | + |
| 91 | +# Anexa o arquivo à mensagem |
| 92 | +msg.attach(attachment) |
| 93 | +``` |
| 94 | + |
| 95 | +Basta adicionar o código acima após a criação da mensagem para incluir o anexo. |
| 96 | + |
| 97 | +--- |
| 98 | + |
| 99 | +### Notas Finais |
| 100 | + |
| 101 | +1. **Outros Servidores SMTP**: Se você estiver usando outro serviço de email (como Outlook, Yahoo), use o servidor e a porta correspondentes. |
| 102 | +2. **Tratamento de Erros**: O exemplo inclui um bloco `try-except` para capturar e exibir erros durante o envio. |
| 103 | +3. **Envio de Vários Emails**: Para enviar a vários destinatários, você pode adicionar uma lista de emails em `email_recipient` e iterar sobre ela, ou passar uma string com emails separados por vírgula. |
| 104 | + |
| 105 | +Esses exemplos cobrem os princípios básicos do envio automático de emails em Python. |
0 commit comments