我想使用JavaMail和IMAP从Java应用程序访问GMail中的消息.为什么我得到SocketTimeoutException?
这是我的代码:
Properties props = System.getProperties();
props.setProperty("mail.imap.host", "imap.gmail.com");
props.setProperty("mail.imap.port", "993");
props.setProperty("mail.imap.connectiontimeout", "5000");
props.setProperty("mail.imap.timeout", "5000");
try {
    Session session = Session.getDefaultInstance(props, new MyAuthenticator());
    URLName urlName = new URLName("imap://MYUSERNAME@gmail.com:MYPASSWORD@imap.gmail.com");
    Store store = session.getStore(urlName);
    if (!store.isConnected()) {
        store.connect();
    }
} catch (NoSuchProviderException e) {
    e.printStackTrace();
    System.exit(1);
} catch (MessagingException e) {
    e.printStackTrace();
    System.exit(2);
}
我设置了超时值,以便不会"永远"超时.此外,MyAuthenticator还具有用户名和密码,这似乎是URL的冗余.还有其他方法来指定协议吗?(我没有在IMD的JavaDoc中看到它.)
我正在寻求一些帮助登录到一个Gmail帐户并使用python脚本下载一些电子邮件.我正在尝试调整此处找到的方法,但我遇到了第1步的问题,通过imap访问帐户.
这是我开始的代码:
import email
import imaplib
m = imaplib.IMAP4_SSL("imap.gmail.com",993)
rc, resp = m.login('myemailaddress','mypassword')
我收到以下错误:
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)'
确实在gmail设置中启用了Imap.我已经查看了谷歌支持链接上的说明以及类似情况下有关此错误的问题,例如此处和此处,但我的情况与第一次不同,因为
1)它从未开始工作,
2)我是不经常运行它被阻止.它也与第二个示例不同,因为这是一个普通的Gmail帐户,而不是具有谷歌应用程序帐户的自定义域.
使用https://accounts.google.com/DisplayUnlockCaptcha尝试并允许访问对我来说也不起作用.
允许登录工作的唯一方法是将我的Google帐户安全设置更改为"允许访问安全性较低的应用".
我的问题是:我如何修改我的代码(或更常见的设置)以允许我登录,而无需放宽我的帐户安全设置?有没有办法使用libimap满足安全要求?
有人可以帮我定制现有的代码示例吗?
我可以从下面的文章中看到如何连接到Gmail和下载内容,但我无法弄清楚如何搜索特定的电子邮件,只下载时间戳和正文?
我特别想在过去5天内收到"Alerts@foobank.com"的电子邮件,并下载发送时间和电子邮件正文.然后我将解析这个以确定我需要使用哪些电子邮件.
我是自学成才,并且很难自定义上面的脚本来完成这项工作.
任何帮助深表感谢.谢谢.
JD
我已经读过这个并编写了这个脚本来获取某些邮箱中的电子邮件正文,标题以'$'开头,并由一些发件人发送.
import email, getpass, imaplib, os
detach_dir = "F:\PYTHONPROJECTS" # where you will save attachments
user = raw_input("Enter your GMail username --> ")
pwd = getpass.getpass("Enter your password --> ")
# connect to the gmail imap server
m = imaplib.IMAP4_SSL("imap.gmail.com")
m.login(user, pwd)
m.select("PETROLEUM") # here you a can choose a mail box like INBOX instead
# use m.list() to get all the mailboxes
resp, items = m.search(None, '(FROM "EIA_eLists@eia.gov")')
items = items[0].split() # getting the mails id
my_msg …我想用Python登录我的帐户并使用python打印我在邮箱中收到的邮件.我知道如何连接
import getpass, poplib
user = 'my_user_name' 
Mailbox = poplib.POP3_SSL('pop.googlemail.com', '995') 
Mailbox.user(user) 
Mailbox.pass_('my_password') 
我不知道如何让Python显示我的消息.我尝试了poplib doc中的所有函数.它们只显示数字.
我正在尝试获取主题以"新订单"开头的所有电子邮件,但我似乎无法弄明白.目前我可以搜索与这样的设置完全匹配...
result, data = M.uid('search', None, '(HEADER Subject "Subject Here")')
但是,这不会检索任何不完全匹配的消息.我将如何进行部分匹配?
如果重要的话我正在和gmail的imap服务器交谈.
谢谢
我查看了参考文档,Spring似乎对发送邮件有很好的支持.但是,我需要登录邮件帐户,阅读邮件,并下载任何附件.是否正在下载Spring邮件API支持的邮件附件?
我知道您可以使用Java Mail API执行此操作,但在过去,我发现使用它非常冗长和令人不快.
编辑:我收到几个回复指向描述如何发送附件邮件的教程,但我要问的是如何从收到的邮件中读取附件.
干杯,唐
我每天都要处理一个文件.此文件每天发送到我的电子邮件一次.如果我每天都能收到这封电子邮件并下载附件,那就太棒了.甚至远程可能做这样的事情?
谢谢!
我有一个存储在'text/plain'文件中的MIME消息,如下所示:
MIME消息应该是多部分消息.
我如何在Python中解析这个?我已经尝试过email.message_from_string(),但它仍然编码为'text/plain',因此我无法使用电子邮件库来解析它.
我的代码看起来像这样:
f = open(settings.MEDIA_ROOT + '/raw.txt', 'r')
msg = email.message_from_string(f.read())
i = 1
for part in msg.walk():
    if part.get_content_maintype() == 'multipart':
        continue
    ext = mimetypes.guess_extension(part.get_content_type())
    filename = 'part-%03d%s' % (i, ext)
    fp = open(settings.MEDIA_ROOT + '/' + filename, 'wb')
    fp.write(part.get_payload(decode=True))
    fp.close()
    i += 1
我会非常感谢任何帮助!