2015-06-18 205 views
-1

我想知道爲什麼這個代碼不能發送電子郵件。不能發送電子郵件與smtp

import smtplib 

content = 'test' 

mail = smtplib.SMTP('smtp.gmail.com',587) 

mail.ehlo() 
mail.starttls() 
mail.login('[email protected]','222222') 
mail.sendmail('[email protected]','[email protected]',content) 
mail.quit 

它顯示:

SMTPAuthenticationError: (535, '5.7.8 Username and Password not accepted. Learn more at\n5.7.8 support.google.com/mail/answer/14257 ho10sm6301275pbc.27 - gsmtp') 

後來,它表明:

SMTPAuthenticationError: (534, '5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbu87\n5.7.14 wdTx8uq_F_WXKXEVia5I3DTMdhzuJL967nviDbOqgBU9lHzjzIHX69az6PFAzff6lA2uGJ\n5.7.14 qCqwJzys1OcoqMzMNUx5o5ja_a3XHatcxE-jqsHjqWCwYR1WVUEmBfGvUIBzgm7iUyGOXq\n5.7.14 RdYOqEx5GLAe05yUhGq-z-JphFKH-x-aA0TwEc-hyEnecghY1ZLtMMsowPhFGa1XGPnNO3\n5.7.14 8XE4yhQctKtYySbTSiQqBUmmV4qE> Please log in via your web browser and\n5.7.14 then try again.\n5.7.14 Learn more at\n5.7.14 support.google.com/mail/answer/78754 eu5sm6412101pac.37 - gsmtp') 
+0

顯示SMTPAuthenticationError:(535,'5.7.8用戶名和密碼未被接受,請參閱\ n5.7.8 https://support.google.com/mail/answer/14257 ho10sm6301275pbc.27 - gsmtp') –

回答

-1

我會解釋你想要做什麼。您正嘗試使用以下憑據執行SMTP:
'smtp.gmail.com',587 然後,您嘗試使用Gmail郵箱登錄。完全錯誤。 你想要做的是:

import smtplib 

content = 'test' 

me = '[email protected]' 
you = ['[email protected]'] 

mail = smtplib.SMTP('localhost') 

msg['Subject'] = 'Hello' 
msg['From'] = me 
msg['To'] = you[0] 
#mail.ehlo() 
#mail.starttls() 
#mail.login('[email protected]','222222') 
mail.sendmail(me, you, msg.as_string()) 
mail.quit() 
+0

這是錯誤味精什麼? –

+1

只有在他的系統中安裝了本地smtp服務器之後,上述功能才能正常工作。 –

+0

隨着你寫的你試圖登錄到gmail smtp,然後郵件自己在Gmail。沒有意義。你想要做的是從'本地主機'< - 這將是你的機器或服務器,取決於你從哪裏運行你的腳本。這將創建郵件併發送到Gmail。 – FirebladeDan

-1

Due to security issues gmail blocks accessing mail via code or program

但你仍然可以使用Gmail通過代碼來發送郵件,如果你做以下事情

我在代碼已經完成:

1.添加錯誤對象以獲取錯誤消息

import smtplib  

try: 
    content = 'test' 

    mail = smtplib.SMTP('smtp.gmail.com',587) 

    mail.ehlo() 
    mail.starttls() 
    mail.login('[email protected]','222222') 
    mail.sendmail('[email protected]','[email protected]',content) 
    mail.quit 
    print "Successfully sent email" 
except smtplib.SMTPException,error: 
    print str(error) 
    print "Error: unable to send email" 

如果妳跑這段代碼ü會看到這樣的聲明,谷歌不允許u到通過代碼登錄

事情在Gmail中更改錯誤信息:

1.登陸到Gmail

2 。去這個鏈接https://www.google.com/settings/security/lesssecureapps

3.Click使然後重試代碼

希望它能幫助:)

但是,如果你啓用它,有安全威脅

1

我創建了yagmail作爲一個包,使它真的很簡單,發送電子郵件。

請嘗試以下方法:

import yagmail 
yag = yagmail.Connect('[email protected]', 'password') 
yag.send('[email protected]', subject = 'hi', contents = content) 

還有一些其他有用的技巧,你可以用包做,比如永遠不必再次輸入密碼(同時仍然安全的),這使得它非常容易發送附件。

安裝有兩種

pip install yagmail # python 2 
pip3 install yagmail # python 3 

和更多信息,請看看github

-1

不要在憑據中包含@ gmail.com。我用我的用戶名(不帶@ gmail.com)和密碼使用了您的代碼,並且能夠發送消息。

import smtplib 

content = 'test' 

mail = smtplib.SMTP('smtp.gmail.com',587) 

mail.ehlo() 
mail.starttls() 
mail.login('surapon','222222') 
mail.sendmail('[email protected]','[email protected]',content) 
mail.quit 
+0

爲什麼問題和每個答案都會得到反對? – downeyt

0

這是因爲谷歌認爲python SMTPLIB不那麼安全。錯誤消息中的鏈接將引導您回答問題。

在該鏈接中還有另一個允許「不太安全」的應用程序發送郵件的鏈接。

https://support.google.com/accounts/answer/6010255

這可以讓你特別允許應用程序發送電子郵件。他們對什麼構成安全問題提供了很少的信息。

他們提供給顯式訪問的鏈接是早期鏈接中的 http://www.google.com/settings/security/lesssecureapps