2016-10-01 15 views
2

私がやっていることは、私のpythonコードで電子メールを送信することです。このコードは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-port経由でログインをブロックしました。 そうでなければブルートフォース攻撃を行うのは簡単すぎるでしょう。だからあなたのコードが完全に大丈夫であっても、それでもログインは失敗するかもしれません。私は自分のGmailアカウントにまったく同じことをしようとしました。開発者として

関連する問題