JavaMail检查邮件内容 gmail IMAP

2023-11-24

我正在尝试阅读我的消息,我可以让它打印标题,但发件人和内容显示得很有趣。 这是我用来显示消息的代码:

   int j = message.length-1;
    for (int i=j;i>=0;i--) {
        System.out.println("Message " + (i + 1));
        System.out.println("From : " + message[i].getFrom());
        System.out.println("Subject : " + message[i].getSubject());
        try {
            System.out.println("Body: " + message[i].getContent());
        } catch (IOException ex) {
            System.out.println(ex);
        }
    }

输出如下:

 Message 1:
 From: [javax.mail.internet.InternetAddress;@175831e]
 Subject: Hello //This is correct
 Body: javax.mail.internet.MimeMultipart@15b5219

为什么这不打印出 from 语句的实际电子邮件地址?为什么它不打印出实际的正文内容? (我只对纯文本感兴趣。)

整个代码:

import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.search.*;
import java.util.*;
import com.sun.mail.imap.*;
import java.io.*;

public class MailClient {
public static void main(String[] args) {
    try {
    Properties props = new Properties();
    props.put("mail.store.protocol","imaps");

    Session session;

    session = Session.getDefaultInstance(props, null);
    Store store = session.getStore("imaps");
    store.connect("imap.gmail.com","[email protected]","password");

    IMAPFolder folder = (IMAPFolder) store.getFolder("inbox");
    folder.open(Folder.READ_ONLY);

    Flags seen = new Flags(Flags.Flag.SEEN);
    FlagTerm unseenFlagTerm = new FlagTerm(seen,false);
    Message message[] = folder.search(unseenFlagTerm); 


    int j = message.length-1;
    for (int i=j;i>=0;i--) {
        System.out.println("Message " + (i + 1));
        System.out.println("From : " + message[i].getFrom());
        System.out.println("Subject : " + message[i].getSubject());
        try {
            System.out.println("Body: " + message[i].getContent());
        } catch (IOException ex) {
            System.out.println(ex);
        }
    }    
    System.out.println(newMsg);

    folder.close(false);
    store.close();
    }
    catch (MessagingException e) {
        System.out.println("Error: " + e);
    }
}
}

Thanks!


对于纯文本和 html 消息:

String content= messages[i].getContent().toString();

对于多部分消息:

Multipart multipart = (Multipart) messages[i].getContent();

    for (int j = 0; j < multipart.getCount(); j++) {

        BodyPart bodyPart = multipart.getBodyPart(j);

        String disposition = bodyPart.getDisposition();

          if (disposition != null && (disposition.equalsIgnoreCase("ATTACHMENT"))) { // BodyPart.ATTACHMENT doesn't work for gmail
              System.out.println("Mail have some attachment");

              DataHandler handler = bodyPart.getDataHandler();
              System.out.println("file name : " + handler.getName());                                 
            }
          else { 
              System.out.println("Body: "+bodyPart.getContent());
              content= bodyPart.getContent().toString();
            }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaMail检查邮件内容 gmail IMAP 的相关文章

  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 如何让 BlazeDS 忽略属性?

    我有一个 java 类 它有一个带有 getter 和 setter 的字段 以及第二对 getter 和 setter 它们以另一种方式访问 该字段 public class NullAbleId private static final
  • 不同帐户上的 Spring Boot、JmsListener 和 SQS 队列

    我正在尝试开发一个 Spring Boot 1 5 应用程序 该应用程序需要侦听来自两个不同 AWS 帐户的 SQS 队列 是否可以使用 JmsListener 注解创建监听器 我已检查权限是否正确 我可以使用 getQueueUrl 获取
  • 序列的排列?

    我有具体数量的数字 现在我想以某种方式显示这个序列的所有可能的排列 例如 如果数字数量为3 我想显示 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 2 0 2 0 0 2 1 0 2 2 1 0 0 1 0 1 1 0
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url

随机推荐

  • 正则表达式:包含至少 8 位十进制数字

    我需要正则表达式来检查字符串是否包含 8 位或更多十进制数字 它可以包含任何其他内容 并且数字不必是连续的 提前致谢 编辑 用 十进制数字 替换 数字 以匹配接受的答案 d d 8 也许不是最优雅 最有效的方法 但它确实有效 基本上它将匹配
  • 如何在Spring Boot中为RestTemplate设置PropertyNamingStrategy?

    我编写了一个 SpringBoot 应用程序 它使用一个 REST API 并呈现一个 REST API 我的模型 pojo 有驼峰命名的属性 应用程序使用的 json 具有 under score 属性名称 应用程序生成的 json 具有
  • React Native 中的 AutoCompleteTextView 兼容 iOS 和 Android

    我需要在本机反应中实现 AutoCompleteTextView 问题是没有这样的内置组件 所有可用于模仿此功能的模块和库并不完全相似 主要问题是建议没有出现在视图上 如选择框 选择器 即使是这样 它与KeyboardAvoidingVie
  • 尝试使用 jasmine 和 Angular 时出现错误

    当我尝试使用时 httpBackend flush 我收到错误类型错误 browser cookies 不是函数 我找不到有关此类错误的任何信息以及任何解决方案 describe someText function var httpBack
  • jQuery 按钮单击 jqGrid 刷新仅触发一次

    我有以下 jQuery 代码 用于填充 jqGrid 第一次单击按钮时 它可以完美地发布到我的 ASP NET MVC 页面 我的问题是 任何其他点击超过第一个点击按钮时似乎都会运行 jquery 代码 但它永远不会进入 POST 页面 有
  • 为什么 WPF 支持多重绑定,但 silverlight 不支持?

    多重绑定是 WPF 中非常强大的功能 为什么 silverlight 不支持它 他们从来没有抽出时间来增加支持吗 它太大而无法适应 NET 框架 它会出现在 Silverlight 5 中吗 有谁知道答案吗 Thanks 它不受开箱即用的支
  • 在子进程 Popen 和通信后关闭所有文件的正确方法

    我们在运行 python Twisted 应用程序的 Ubuntu Linux 机器上遇到了一些可怕的 打开文件过多 问题 在我们程序的许多地方 我们都使用子进程 Popen 如下所示 Popen ifconfig iface shell
  • 错误:项目上未安装 EntityFramework 包

    我刚刚安装了 SQL Server 2008 将 ASP NET MVC 4 项目配置为部署在本地 IIS 上 并添加了到当时创建的数据库的新连接 在 sql server 2008 中 当我尝试通过启用迁移 实体框架 时启用 迁移 Con
  • 如何在格子中标记面板

    这是一个简单的问题 您肯定已经遇到过 但让我很头疼 我有一个像这样的数据框 set seed 3 mydata lt data frame var rnorm 100 20 1 temp sin sort rep c 1 10 10 sub
  • 评估业务规则引擎的标准[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我们正在购买业务规则引擎
  • Jquery 选择元素 2 的位置进一步 - .next().next() 的另一种方式

    我正在寻找一种方法 如何选择一个 div 元素 该元素不是通过单击功能 选择 的元素的直接下一个元素 div siblings div div text div div div 现在我想选择 id 为 get this one 的一个 在我
  • Git 如何记录(或更可能表示)其 blob 的文件路径和名称,然后识别重命名?

    我正在尝试了解 git 设法 记住 文件名及其路径的方式 因为它只将文件内容存储在 blob 中 解释是在链接在这里Abizem 写的不错吗 这是迄今为止我见过的最好的 后续问题是 git 如何 在哪里 确定我们何时具有相似性 特别是在 移
  • Python 等价于 vector::reserve()

    我正在寻找 C vector reserve 的 Python 等效项 我不知道列表会提前有多大 但我知道它会相当大 并且我希望尽可能避免调整大小 因为列表是在深层内部循环中增长的 到目前为止 我提出的唯一解决方案与 vector rese
  • 将映射值复制到 STL 中的向量[重复]

    这个问题在这里已经有答案了 目前正在努力学习Effective STL 第 5 条建议使用范围成员函数通常比使用单元素函数更可取 我目前希望将映射中的所有值 即 我不需要键 复制到向量中 最干净的方法是什么 你可能可以使用std trans
  • __stdcall的含义和用法是什么?

    我遇到过 stdcall这些天很多 MSDN 没有非常清楚地解释它的真正含义 何时以及为什么应该使用它 如果有的话 如果有人能提供解释 最好是举一两个例子 我将不胜感激 这个答案涵盖了 32 位模式 Windows x64 仅使用 2 个约
  • 在 JDBC 中处理 DATETIME 值 0000-00-00 00:00:00

    如果我尝试这样做 我会得到一个例外 见下文 resultset getString add date 对于包含 DATETIME 值 0000 00 00 00 00 00 DATETIME 的准空值 的 MySQL 数据库的 JDBC 连
  • 有效地查找大集合中具有低汉明距离的二进制字符串

    Problem 给定一个大 约 1 亿 无符号 32 位整数列表 一个无符号 32 位整数输入值和最大汉明距离 返回输入值的指定汉明距离内的所有列表成员 保存列表的实际数据结构是开放的 性能要求决定了内存中的解决方案 构建数据结构的成本是次
  • 在节目中跳入 Python 交互式会话?

    嘿 我想知道 我正在将 pydev 与 eclipse 一起使用 我真的很喜欢强大的调试功能 但我想知道 是否可以在eclipse中设置断点并在执行过程中跳转到交互式python解释器 我认为这会非常方便 edit 我想强调 我的目标不是跳
  • Symfony 2 注销(UserInterface::eraseCredentials)

    我想eraseCredentials是用来注销的吗 如果是这样 我如何清除教义实体的会话 No eraseCredentials 用于在持久化令牌之前擦除敏感数据 无论是序列化还是数据库 要以编程方式注销用户 您可以使用以下命令 this
  • JavaMail检查邮件内容 gmail IMAP

    我正在尝试阅读我的消息 我可以让它打印标题 但发件人和内容显示得很有趣 这是我用来显示消息的代码 int j message length 1 for int i j i gt 0 i System out println Message