java - 尝试使用 java 从 Gmail 读取电子邮件时出现 MessagingException

标签 java jakarta-mail netbeans-7

我正在尝试使用 Javamail 从我的 Gmail 帐户接收电子邮件,但在执行过程中遇到错误......这是我的代码

package sendemail;
import javax.mail.*;
import java.net.*;
import java.util.*;

public class Test {
    public static void main(String args[])
    {
        Properties prop=new Properties();
        prop.setProperty("mail.store.protocol", "imap");
        prop.setProperty("mail.imap.port", "993");
        try
        {
        Session session=Session.getInstance(prop,null);
        Store store=session.getStore();
        store.connect("imap.gmail.com", "Username", "Password");
        Folder folder=store.getFolder("INBOX");
        folder.open(Folder.READ_ONLY);
            Message msg=folder.getMessage(folder.getMessageCount());
            Address[] add=msg.getFrom();
            for(Address address:add)
            {
                System.out.println("FROM:"+address.toString());
            }
            Multipart mp=(Multipart)msg.getContent();
            BodyPart bp=mp.getBodyPart(0);
            System.out.println("SENT DATE:"+msg.getSentDate());
            System.out.println("SUBJECT:"+msg.getSubject());
            System.out.println("CONTENT:"+msg.getContent());

        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

    }
}

错误:

javax.mail.MessagingException;
  nested exception is:
    java.io.IOException
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:298)
    at javax.mail.Service.connect(Service.java:275)
    at javax.mail.Service.connect(Service.java:156)
    at sendemail.Test.main(Test.java:25)
Caused by: java.io.IOException
    at com.sun.mail.iap.ResponseInputStream.read0(ResponseInputStream.java:78)
    at com.sun.mail.iap.ResponseInputStream.readResponse(ResponseInputStream.java:48)
    at com.sun.mail.iap.Response.<init>(Response.java:64)
    at com.sun.mail.imap.protocol.IMAPResponse.<init>(IMAPResponse.java:31)
    at com.sun.mail.imap.protocol.IMAPResponse.readResponse(IMAPResponse.java:105)
    at com.sun.mail.imap.protocol.IMAPProtocol.readResponse(IMAPProtocol.java:153)
    at com.sun.mail.iap.Protocol.<init>(Protocol.java:72)
    at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:61)
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:273)
    ... 3 more
BUILD SUCCESSFUL (total time: 11 seconds)

我想从我的帐户接收邮件并显示 ii 作为输出。 (我正在使用netbeans来运行这个程序)

最佳答案

您不需要指定端口号,但需要告诉它使用 IMAP-over-SSL 协议(protocol)。请参阅 JavaMail FAQ 中的示例.

关于java - 尝试使用 java 从 Gmail 读取电子邮件时出现 MessagingException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22667657/

相关文章:

java - java中使用dfs和bfs查找计算机上最大的文件

java - Netbeans 向导,方法 storeSettings 运行两次

Java:程序启动时出现 ExceptionInInitializerError

java - OpenCV VideoWriter for Java 在 MacOS 上无法按预期工作

java - 不能用Java发送邮件

JavaMailMessage.GetContent 偶尔返回 IMAPInputStream

email - Log4j 电子邮件错误 "Cannot find java.home ??"

github - Netbeans 无法使用 SSH key 访问 GitHub

java - JTable 按键事件未触发

java - 像这样使用继承是正确的吗?