2016-10-01 5 views
2

Что я пытаюсь сделать, это получить код моего питона для отправки электронной почты. Этот код должен использовать yahoo smtp для отправки электронной почты. Мне не нужны вложения или что-то еще. Код указывает, где написано: Error: unable to send email. За исключением того, что я правильно указал адреса получателей и отправителей электронной почты, что я могу сделать, чтобы заставить эту работу работать?Отправка электронной почты с помощью сценария python

#!/usr/bin/env python 
from smtplib import SMTP 
from smtplib import SMTP_SSL 
from smtplib import SMTPException 
from email.mime.text import MIMEText 
import sys 

#Global varialbes 
EMAIL_SUBJECT = "Email from Python script" 
EMAIL_RECEIVERS = ['[email protected]'] 
EMAIL_SENDER = '[email protected]' 
TEXT_SUBTYPE = "plain" 

YAHOO_SMTP = "smtp.mail.yahoo.com" 
YAHOO_SMTP_PORT = 465 

def listToStr(lst): 
    """This method makes comma separated list item string""" 
    return ','.join(lst) 

def send_email(content, pswd): 
    """This method sends an email""" 
    msg = MIMEText(content, TEXT_SUBTYPE) 
    msg["Subject"] = EMAIL_SUBJECT 
    msg["From"] = EMAIL_SENDER 
    msg["To"] = listToStr(EMAIL_RECEIVERS) 

    try: 
     #Yahoo allows SMTP connection over SSL. 
     smtpObj = SMTP_SSL(YAHOO_SMTP, YAHOO_SMTP_PORT) 
     #If SMTP_SSL is used then ehlo and starttls call are not required. 
     smtpObj.login(user=EMAIL_SENDER, password=pswd) 
     smtpObj.sendmail(EMAIL_SENDER, EMAIL_RECEIVERS, msg.as_string()) 
     smtpObj.quit(); 
    except SMTPException as error: 
     print "Error: unable to send email : {err}".format(err=error) 

def main(pswd): 
    """This is a simple main() function which demonstrates sending of email using smtplib.""" 
    send_email("Test email was generated by Python using smtplib and email libraries", pswd); 

if __name__ == "__main__": 
    """If this script is executed as stand alone then call main() function.""" 
    if len(sys.argv) == 2: 
     main(sys.argv[1]) 
    else: 
     print "Please provide password" 
     sys.exit(0) 
+1

Пожалуйста, прочитайте справочный центр, прежде чем задавать вопросы. В этом вопросе четко не указано, что такое проблема. Прочитайте статью «Как задать вопрос» перед публикацией – techydesigner

+0

Кроме того, по-прежнему существуют адреса электронной почты по умолчанию – techydesigner

+0

Я знаю, что адреса электронной почты по умолчанию все еще существуют. Я сказал, что на этом посту. Когда я меняю адреса по умолчанию, он по-прежнему не работает. – ineedhelp

ответ

1

Я не знаю об Yahoo, но Google заблокировал вход через свой smtp-порт. В противном случае было бы слишком легко проводить атаки грубой силы. Так что даже если ваш код будет в порядке, из-за этого логин может по-прежнему терпеть неудачу. Я попытался сделать то же самое для своей учетной записи gmail.