我正在寻求一些帮助登录到一个Gmail帐户并使用python脚本下载一些电子邮件.我正在尝试调整此处找到的方法,但我遇到了第1步的问题,通过imap访问帐户.
这是我开始的代码:
import email
import imaplib
m = imaplib.IMAP4_SSL("imap.gmail.com",993)
rc, resp = m.login('myemailaddress','mypassword')
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Traceback (most recent call last):
File "email.py", line 1, in <module>
import email, imaplib
File "/home/will/wd/email.py", line 14, in <module>
m.login('myemailaddress','mypassword')
File "/usr/lib/python3.4/imaplib.py", line 538, in login
raise self.error(dat[-1])
imaplib.error: b'[ALERT] Please log in via your web browser: http://support.google.com/mail/accounts/bin/answer.py?answer=78754 (Failure)'
Run Code Online (Sandbox Code Playgroud)
确实在gmail设置中启用了Imap.我已经查看了谷歌支持链接上的说明以及类似情况下有关此错误的问题,例如此处和此处,但我的情况与第一次不同,因为
1)它从未开始工作,
2)我是不经常运行它被阻止.它也与第二个示例不同,因为这是一个普通的Gmail帐户,而不是具有谷歌应用程序帐户的自定义域.
使用https://accounts.google.com/DisplayUnlockCaptcha尝试并允许访问对我来说也不起作用.
允许登录工作的唯一方法是将我的Google帐户安全设置更改为"允许访问安全性较低的应用".
我的问题是:我如何修改我的代码(或更常见的设置)以允许我登录,而无需放宽我的帐户安全设置?有没有办法使用libimap满足安全要求?
通过看到这个答案,我了解到谷歌阻止某些应用程序连接,由于这些应用程序"缺乏现代安全标准的应用",我可以让谷歌允许我的帐户从这些应用程序连接 - 我必须明确地这样做.
这是由于Django邮件中的一个问题:
send_mail(
u"Message",
render_to_string('template.txt', {'data': data}),
settings.EMAIL_HOST_USER,
[dest['address'] for dest in settings.FORM_DESTINATIONS],
html_message=render_to_string('template.html', {'data': data}),
)
Run Code Online (Sandbox Code Playgroud)
我的EMAIL_设置涉及@ gmail.com帐户(SSL/465或TLS/587都不起作用).
这是否意味着Django 1.7有一个不安全的邮件机制?在这种情况下,"安全"是什么意思,Django没有应用哪些邮件标准?
编辑即使我提供了这个问题的背景(一个尖锐的答案和相关的链接/文档),也许一些读者可能找不到谷歌在哪里谈论"安全"/"不安全"的应用程序.通过使用您的Google帐户凭据输入此处,可以选择通知此页面的 "安全性较低的应用",该页面具有"更多信息"链接,指向此处(此链接不需要身份验证).
我正在尝试使用基于imap协议的java mail api连接到我的邮箱.我检查并确定我插入了正确的参数.这是我得到的以下异常:
[警告]请通过您的网络浏览器登录:https://support.google.com/mail/accounts/answer/78754(失败)
我不知道为什么会发生这种情况我在我的Gmail帐户设置中启用了imap选项.
我是我的代码:
Properties protocol = new Properties();
protocol.setProperty("mail.store.protocol", "imaps");
try{
Session session = Session.getInstance(protocol, null);
Store store = session.getStore();
String host = prop.getProperty("host");
String email = prop.getProperty("username");
String password = prop.getProperty("password");
store.connect(host, email, password);
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
int messageCount = inbox.getMessageCount();
model.addAttribute("msg","number of mails"+" "+messageCount);
Message[] messages = inbox.getMessages();
PrintWriter writer = new PrintWriter(username+".txt", "UTF-8");
for(int i=0;i<messageCount || prop.getProperty("status").equals(status.RUNNING.toString()) ;i++ ){
model.addAttribute("msg","Reading Mails");
Multipart mp = (Multipart) messages[i].getContent();
BodyPart bp …Run Code Online (Sandbox Code Playgroud)