Estou tentando enviar email (Gmail) usando python, mas estou recebendo o seguinte erro.
Traceback (most recent call last):
File "emailSend.py", line 14, in <module>
server.login(username,password)
File "/usr/lib/python2.5/smtplib.py", line 554, in login
raise SMTPException("SMTP AUTH extension not supported by server.")
smtplib.SMTPException: SMTP AUTH extension not supported by server.
O script Python é o seguinte.
import smtplib
fromaddr = '[email protected]'
toaddrs = '[email protected]'
msg = 'Why,Oh why!'
username = '[email protected]'
password = 'pwd'
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
Respostas:
Você precisa dizer
EHLO
antes de executar diretamenteSTARTTLS
:Além disso, você deve realmente criar
From:
,To:
eSubject:
cabeçalhos de mensagens, separados do corpo da mensagem por uma linha em branco e usarCRLF
los como marcadores de EOL.Por exemplo
fonte
EHLO
por erro de digitação. Depois que eu tentei o HELO muitas vezes, mas a resposta foi diferente. Demorou horas para descobrir que o EHLO é realmente um comando que o SMTP entende e eu fiz o erro de digitação.se você quiser usar a porta 465, precisará criar um
SMTP_SSL
objeto:fonte
Encontrei um problema semelhante e me deparei com essa questão. Recebi um erro de autenticação SMTP, mas meu nome de usuário / senha estava correto. Aqui está o que foi corrigido. Eu li o seguinte:
https://support.google.com/accounts/answer/6010255
Em poucas palavras, o Google não permite que você faça login via smtplib porque sinalizou esse tipo de login como "menos seguro". Portanto, o que você precisa fazer é acessar este link enquanto estiver conectado à sua conta do Google, e permita o acesso:
https://www.google.com/settings/security/lesssecureapps
Uma vez definido (veja minha captura de tela abaixo), ele deve funcionar.
O login agora funciona:
Resposta após alteração:
Resposta prévia:
Ainda não funciona? Se você ainda obtiver o SMTPAuthenticationError, mas agora o código for 534, é porque o local é desconhecido. Siga este link:
https://accounts.google.com/DisplayUnlockCaptcha
Clique em continuar e isso deve lhe dar 10 minutos para registrar seu novo aplicativo. Portanto, continue fazendo outra tentativa de login agora e deve funcionar.
UPDATE : Isso parece não funcionar imediatamente. Você pode ficar parado por um tempo recebendo esse erro no smptlib:
A mensagem diz para usar o navegador para entrar:
Depois de ativar o 'lesssecureapps', tome um café, volte e tente o link 'DisplayUnlockCaptcha' novamente. Pela experiência do usuário, pode levar até uma hora para que a alteração seja iniciada. Em seguida, tente o processo de login novamente.
fonte
Você está com OOP?
fonte
Isso funciona
Crie a senha do aplicativo do Gmail!
Depois de criar isso, crie um arquivo chamado
sendgmail.py
Em seguida, adicione este código :
Portanto, se você tiver sucesso, verá uma imagem como esta:
Testei enviando um e-mail de e para mim.
fonte
Você pode encontrá-lo aqui: http://jayrambhia.com/blog/send-emails-using-python
fonte
Não está diretamente relacionado, mas ainda vale a pena destacar é que meu pacote tenta tornar o envio de mensagens do Gmail muito rápido e indolor. Ele também tenta manter uma lista de erros e tenta apontar para a solução imediatamente.
Literalmente, seria necessário apenas esse código para fazer exatamente o que você escreveu:
Ou um forro:
Para o pacote / instalação, consulte git ou pip , disponível para Python 2 e 3.
fonte
Aqui está um exemplo da API do Gmail. Embora seja mais complicado, esse é o único método que achei que funciona em 2019. Este exemplo foi obtido e modificado em:
https://developers.google.com/gmail/api/guides/sending
Você precisará criar um projeto com as interfaces de API do Google por meio do site deles. Em seguida, você precisará ativar a API do GMAIL para seu aplicativo. Crie credenciais e faça o download desses creds, salve-o como credentials.json.
fonte
Agora existe uma API do gmail, que permite enviar e-mail, ler e criar rascunhos via REST. Diferentemente das chamadas SMTP, é sem bloqueio, o que pode ser uma boa coisa para servidores da Web baseados em encadeamento que enviam email no encadeamento de solicitação (como servidores da web python). A API também é bastante poderosa.
É mais fácil de configurar se você tiver direitos de administrador do Google Apps no domínio, pois poderá conceder permissão geral ao seu cliente. Caso contrário, você precisará mexer na autenticação e permissão do OAuth.
Aqui está uma essência demonstrando:
https://gist.github.com/timrichardson/1154e29174926e462b7a
fonte
ótima resposta do @David, aqui está o Python 3 sem a tentativa genérica, exceto:
fonte
Ative aplicativos menos seguros na sua conta do Gmail e use (Python> = 3.6):
fonte
<{gmailUser}>
por<YourAlias>
.Parece problema do antigo
smtplib
. Nopython2.7
tudo funciona bem.Atualização : Sim,
server.ehlo()
também poderia ajudar.fonte
fonte
fonte