转:http://blog.csdn.net/snowclash/archive/2011/01/24/6160999.aspx
最开始的java代码如下
- import java.io.UnsupportedEncodingException;
- import java.util.Properties;
- import javax.mail.Authenticator;
- import javax.mail.Folder;
- import javax.mail.MessagingException;
- import javax.mail.PasswordAuthentication;
- import javax.mail.Session;
- import javax.mail.Store;
- import ce.mail.models.ConnectionProfile;
- public class ImapProtocolImpl extends Authenticator implements Protocol
- {
- private Session session;
- private PasswordAuthentication authentication;
-
- public ImapProtocolImpl(ConnectionProfile profile, String username, String password)
- {
- Properties props = new Properties();
- props.setProperty("mail.store.protocol", profile.getProtocol());
- props.setProperty("mail.imap.host", profile.getFetchServer());
- props.setProperty("mail.imap.port", profile.getFetchPort());
-
- authentication = new PasswordAuthentication(username, password);
- session = Session.getInstance(props, this);
- }
-
- @Override
- public PasswordAuthentication getPasswordAuthentication()
- {
- return this.authentication;
- }
-
- public void connect()
- {
- try
- {
- Store store = session.getStore();
- store.connect();
- Folder root = store.getDefaultFolder();
- Folder inbox = root.getFolder("inbox");
- inbox.open(Folder.READ_WRITE);
- System.out.println(inbox.getMessageCount());
- }
- catch (MessagingException e)
- {
- try
- {
- byte[] buf = e.getMessage().getBytes("ISO-8859-1");
- System.out.println(new String(buf, "GBK"));
- }
- catch (UnsupportedEncodingException e1)
- {
- e1.printStackTrace();
- }
- throw new RuntimeException("登录失败", e);
- }
- }
- }
该程序连接163邮箱时是正常的,但连接qq邮箱时会出错。
调用session.setDebug(true);后发现连qq邮箱的debug信息如下
- DEBUG: setDebug: JavaMail version 1.4.3
- DEBUG: getProvider() returning javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc]
- DEBUG: mail.imap.fetchsize: 16384
- DEBUG: mail.imap.statuscachetimeout: 1000
- DEBUG: mail.imap.appendbuffersize: -1
- DEBUG: mail.imap.minidletime: 10
- DEBUG: trying to connect to host "imap.qq.com", port 143, isSSL false
- * OK [CAPABILITY IMAP4 IMAP4rev1 AUTH=LOGIN NAMESPACE] QQMail IMAP4Server ready
- IMAP DEBUG: AUTH: LOGIN
- DEBUG: protocolConnect login, host=imap.qq.com, user=<qq号码>, password=<non-null>
- A0 AUTHENTICATE LOGIN
- A0 BAD ������Ч���߲�֧��
- A0 BAD 命令无效或者不支持
上Google搜“java mail imap qq 邮箱”,发现《JavaMail中接收邮件的问题 》里提到,需要设置mail.imap.auth.plain.disable为true,但设置完后仍会出错。
继续搜mail.imap.auth.plain.disable,在api文档 中发现另外一个属性mail.imap.auth.login.disable,文档中提到“If true, prevents use of the non-standard AUTHENTICATE LOGIN
command, instead using the plain LOGIN
command. Default is false.”,而根据debug信息,连接qq邮箱也是在A0 AUTHENTICATE LOGIN之后提示错误,所以明显是这个参数的问题。
设置参数mail.imap.auth.login.disable为true后连接qq邮箱正常,最终程序如下
- import java.io.UnsupportedEncodingException;
- import java.util.Properties;
- import javax.mail.Authenticator;
- import javax.mail.Folder;
- import javax.mail.MessagingException;
- import javax.mail.PasswordAuthentication;
- import javax.mail.Session;
- import javax.mail.Store;
- import ce.mail.models.ConnectionProfile;
分享到:
相关推荐
问题在于,在尝试连接和操作邮箱时遇到了"A0 BAD 命令无效或者不支持"的错误。这通常意味着服务器不理解或不接受发送的命令。让我们详细分析一下代码并探讨可能的解决方案: 1. **配置属性**:在类的构造函数中,...
这个压缩包包含的源代码示例展示了如何使用JavaMail API通过QQ邮箱发送邮件,这对于开发者来说是一个实用的工具,尤其是在开发用户注册验证或通知功能时。让我们深入探讨一下JavaMail的核心概念以及如何使用它与QQ...
JavaMail 是一个强大的开源库,它允许Java开发者在应用程序中收发电子邮件。在这个教程中,我们将专注于使用...同时,还可以探索其他邮件协议如POP3,或者使用JavaMail的更多高级特性,如SSL/TLS加密、垃圾邮件过滤等。
然而,JavaMail API并不直接支持Exchange服务器,因此在与Exchange服务器交互时,我们需要借助EWS Java API。微软官方提供的EWSJavaAPI_1.2.jar包是专门为Java开发者设计的,用于与Exchange服务器进行通讯,支持包括...
使用`javamail-1.6`时,开发者需要将其添加到项目依赖中,然后通过创建邮件会话,构建邮件消息对象,设置发件人、收件人、主题和正文,最后通过Transport类发送邮件。对于接收邮件,可以通过Folder和Message对象进行...
通过解析给定文件的标题、描述、标签及部分内容,我们可以深入探讨javamail发送与接收邮件的详细教程,以及如何利用JavaMail API实现邮件功能。 ### javamail发送、接收邮件 JavaMail API是由Sun Microsystems开发...
JavaMail 是一个强大的Java库,它允许开发人员在Java应用程序中实现邮件的发送、接收以及管理功能。这个项目不仅提供了SMTP、POP3和IMAP协议的支持,还包含了丰富的API,可以方便地处理邮件的MIME编码、附件、HTML...
JavaMail是一种开源的Java库,它允许开发人员在Java应用程序中发送和接收电子邮件。IMAP(Internet Message Access Protocol)是一种标准的邮件访问协议,用于从邮件服务器检索邮件。Exchange 2007是微软的企业级...
NULL 博文链接:https://zhaoshijie.iteye.com/blog/804788
2. IMAP 和 POP3 协议:对于邮件接收,JavaMail 提供了 `Folder` 和 `Message` 类来处理IMAP或POP3服务器上的邮箱。IMAP 允许用户在线查看邮件,而POP3通常将邮件下载到本地存储。使用 `Store` 类连接到服务器,然后...
### JavaMail发送邮件时遇到的问题及解决方法 在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将...
以上就是关于 "javamail 开发邮箱使用的 jar 包" 的详细说明,包括了核心库 mail.jar、JAF 库 activation.jar 以及可能包含额外功能的 additionnal.jar 的作用和使用方法。在实际开发中,根据具体需求,你可能还需要...
JavaMail是一种在Java应用程序中发送和接收电子邮件的标准API,它为开发者提供了强大的功能,使得处理邮件变得更加简单。在用户注册和重置密码等场景中,邮箱验证是一个关键步骤,可以确保用户提供的邮箱地址有效,...
接收邮件时,我们通常使用 IMAP 协议,因为它支持离线模式,并且可以管理邮箱中的邮件状态,比如未读或已读。创建 `Store` 对象后,通过 `getStore("imap")` 连接到邮件服务器,然后打开指定的邮箱 folder,例如 `...
以上就是关于"JAVA100例之实例48 使用JavaMail接收邮件"的主要内容,通过学习和实践这个实例,开发者将能够熟练地使用JavaMail API来实现邮件的接收功能,这对于构建自动化邮件系统或者处理邮件相关的业务需求非常有...
例如,`getFrom()`方法用来获取发件人的地址和姓名,通过`getFrom()`方法,我们可以获取`MimeMessage`对象中的发件人信息,并将个人名称和个人邮箱地址结合在一起返回。 `getMailAddress(String type)`方法则用于...
对于开发复杂的邮件应用,如企业级的邮件服务器客户端或者需要处理大量邮件的系统,JavaMail是一个不可或缺的工具。由于其强大的功能和广泛的协议支持,JavaMail被广泛应用于各种Java应用程序中。
JavaMail 是一个强大的开源库,专门用于在Java应用程序中处理电子邮件。它提供了全面的API,使得开发者能够方便地发送、接收和操作邮件。本项目主要关注的是使用JavaMail实现邮箱验证和找回密码的功能,这对于任何...
在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而JavaMail API则是一个用于处理电子邮件的库。本项目旨在利用JSP和JavaMail API实现在Web应用中发送邮件的功能,主要涉及POP3协议。下面...
JavaMail 是一个开源库,用于在Java应用程序中发送和接收电子邮件。这个库提供了一套全面的API,使得开发者能够方便地处理SMTP、POP3、IMAP等邮件协议。本篇文章将详细探讨JavaMail的简单使用,包括如何设置、配置...