我想知道为什么这段代码无法发送电子邮件。
import smtplib
content = 'test'
mail = smtplib.SMTP('smtp.gmail.com',587)
mail.ehlo()
mail.starttls()
mail.login('surapon@gmail.com','222222')
mail.sendmail('surapon@gmail.com','youremail@gmail.com',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 :(得分:1)
我创建了yagmail作为一个包,使发送电子邮件变得非常简单。
请尝试以下方法:
import yagmail
yag = yagmail.Connect('surapon@gmail.com', 'password')
yag.send('youremail@gmail.com', subject = 'hi', contents = content)
您可以对该软件包执行一些有用的其他技巧,例如永远不必再次输入密码(同时仍然是安全的),这样可以非常轻松地发送附件。
使用
安装pip install yagmail # python 2
pip3 install yagmail # python 3
如需了解更多信息,请查看github。
答案 1 :(得分:0)
这是因为谷歌认为python SMTPLIB安全性较低。错误消息中的链接将引导您找到答案。
在该链接中,还有另一个链接允许&#34;安全性较低&#34;应用程序发送邮件。
https://support.google.com/accounts/answer/6010255
这允许您专门允许您的应用程序发送电子邮件。它们几乎没有提供有关安全问题的信息。
他们提供的用于明确访问的链接是 http://www.google.com/settings/security/lesssecureapps在早期链接中。
答案 2 :(得分:-1)
我会解释你要做的事情。您尝试使用以下凭据执行SMTP:
'smtp.gmail.com',587
然后你试图用你的gmail信用卡登录。完全错了。
你想要做的是:
import smtplib
content = 'test'
me = 'surapon@gmail.com'
you = ['someOther@gmail.com']
mail = smtplib.SMTP('localhost')
msg['Subject'] = 'Hello'
msg['From'] = me
msg['To'] = you[0]
#mail.ehlo()
#mail.starttls()
#mail.login('surapon@gmail.com','222222')
mail.sendmail(me, you, msg.as_string())
mail.quit()
答案 3 :(得分:-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('surapon@gmail.com','222222')
mail.sendmail('surapon@gmail.com','youremail@gmail.com',content)
mail.quit
print "Successfully sent email"
except smtplib.SMTPException,error:
print str(error)
print "Error: unable to send email"
如果您运行此代码,您会看到一条错误消息,说明谷歌不允许您通过代码登录
gmail中要改变的事情:
1.登录gmail
2.转到此链接https://www.google.com/settings/security/lesssecureapps
3.单击“启用”,然后重试代码
希望有所帮助:)
但如果你启用它就会有安全威胁
答案 4 :(得分:-1)
不要在您的凭据中包含@ gmail.com。我使用您的用户名(不含@ gmail.com)和密码,并且能够发送消息。
- (void)viewDidLoad {
[super viewDidLoad];
_textView.text = @"Enter Comment...";
_textView.textColor = [UIColor lightGrayColor];
_textView.delegate = self;
}
- (void)textViewDidBeginEditing:(UITextView *)textView
{
if ([textView.text isEqualToString:@"Enter Comment..."]) {
textView.text = @"";
textView.textColor = [UIColor blackColor];
}
[textView becomeFirstResponder];
}
- (void)textViewDidEndEditing:(UITextView *)textView
{
if ([textView.text isEqualToString:@""]) {
textView.text = @"Enter Comment...";
textView.textColor = [UIColor lightGrayColor];
}
[textView resignFirstResponder];
}