【问题标题】:Read sent mails using smtp java使用 smtp java 读取发送的邮件
【发布时间】:2017-03-18 08:10:35
【问题描述】:

我一直在尝试来自多个资源的很多东西,比如Read Inbox Java2sHow to get the list of available folders in a mail account using JavaMail

我正在成功发送电子邮件,但为了确保邮件发送成功,我需要从已发送邮件文件夹中读取电子邮件 这可以通过 smtp 实现吗?如果是,怎么做?

目前,我什至在与 stroe 的联系中都被困住了。我找不到通过这些步骤的方法 Store store = session.getStore();store.connect();

我不知道imappop3。它们甚至可能没有在我们的服务器上进行配置,但如果 smtp 不支持,那么我已经准备好使用这些协议进行处理,尽管我正在使用 stmp 发送邮件。我在下面的代码中尝试了很多编辑,但没有任何帮助

        String host = "mysite.smtp.com";
        Properties props = new Properties();
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.port", "myport");
        props.put("mail.smtp.auth", "true");


        Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                String user = "myname";
                String password = "mypassword";
                return new PasswordAuthentication(user, password);
            }
        });
        Store store = session.getStore(); // had tried writing "imaps" here
        store.connect(host, null, null);
        //store.connect(); also tried this

        Folder inbox = store.getFolder("INBOX"); //actually i need "SENT"
        if (inbox == null) {
          System.out.println("No INBOX");
          System.exit(1);
        }
        inbox.open(Folder.READ_ONLY);

        Message[] messages = inbox.getMessages();
        for (int i = 0; i < messages.length; i++) {
          System.out.println("Message " + (i + 1));
          messages[i].writeTo(System.out);
        }
        inbox.close(false);
        store.close();

【问题讨论】:

  • 参考这个link保存使用JAVA MAIL API发送的邮件

标签: java email smtp jakarta-mail pop3


【解决方案1】:

你不能使用smtp来阅读邮件,你需要使用imap。 pop3 无济于事,因为它只能让您阅读收件箱。

根据你所说的“发送成功”,从 send 方法成功返回会告诉你你想知道什么。

另请注意,根据您使用的邮件服务器,已发送邮件不会自动出现在“已发送邮件”文件夹中;发送消息后,您可能需要自己复制它们。 (Gmail 会自动执行此操作,但并非所有其他服务器都会这样做。)

如果您真正想知道的是邮件已成功传递到目标邮件服务器并且所有地址都有效,那就更难了。 JavaMail FAQ 有更多信息。

【讨论】:

    【解决方案2】:

    我知道我迟到了。我在维护使用大量邮件发送功能的软件时遇到了非常相似的问题。我终于创建了一个 JUnit 扩展来编写带有 SMTP 服务器仿真的集成测试。

    请查看 github.com/sleroy/fakesmtp-junit-runner/。顺便说一句,它是开源的。

    【讨论】:

      【解决方案3】:

      参考此链接:

      How to save sent items mail using the Java mail API?

      使用 JAVAMAIL API 发送邮件服务

      另请注意,根据您使用的邮件服务器,已发送邮件不会自动出现在“已发送邮件”文件夹中;发送消息后,您可能需要自己复制它们。 (Gmail 会自动执行此操作,但并非所有其他服务器都会这样做。)

      【讨论】:

        猜你喜欢
        • 2016-01-13
        • 1970-01-01
        • 2010-12-06
        • 2017-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多