ユーザーが間違ったユーザー名とパスワードを入力すると、このエラーが発生してクラッシュするという問題があります(私はPythonにかなり慣れていません):
File "/Users/19austinh/Google Drive/Other/Python/Login.py", line 156, in <module> user.login(euser, epass)
File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/smtplib.py", line 634, in login
raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 http://support.google.com/mail/bin/answer.py?answer=14257 vn10sm22434291pbc.21 - gsmtp')
これが私のコードです:
while True:
user = smtplib.SMTP('smtp.gmail.com', 587)
user.starttls()
euser = input("Enter Gmail Username: ")
epass = input("Enter Gmail Password: ")
user.login(euser, epass)
print ("Retrieving Files")
subjectinput = input("Enter Subject: ")
msginput = input("Enter Message: ")
msg = ("\n"+msginput)
sourcemail = (euser)
targetmail = input("Enter Your Recipient: ")
user.sendmail(sourcemail, targetmail, 'Subject: {}\r\n\r\n{}'.format(subjectinput, msg))
print ("Email Sent")
ask = input("Whould you like to send another one [Y/N]: ")
if(ask == "n" or ask == "N" or ask == "no" or ask == "No"):
break
if(ask == "y" or ask == "Y" or ask == "yes" or ask == "Yes"):
continue
では、ユーザーが間違ったユーザー名またはパスワードを入力したときに、元に戻って資格情報を要求するようにするにはどうすればよいでしょうか? これが私が試したものです:
try:
user.login(euser, epass)
except (smtplib.SMTPAuthenticationError):
print ("Invalid Credentials!")
ただし、これは「無効な資格情報です!」としか言いません。ただし、プログラムを実行し続けることができるため、スクリプトがクラッシュします。「break」は「while True」を終了するため、使用したくありません。回答をお待ちしております。ありがとう :)