无法使用smtp

时间:2015-06-18 04:09:30

标签: python python-2.7 email

我想知道为什么这段代码无法发送电子邮件。

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')

5 个答案:

答案 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];
}