当前位置: 首页 > 知识库问答 >
问题:

无法获取mimessage的message\u ID

璩浩广
2023-03-14

我有一个使用java Mail-1的java程序 5。在大多数情况下,它都可以正常工作,但对于少数消息,当我尝试使用mimessage获取message\u id时,它会给我NULL。在这种情况下,我无法处理消息,因为messageID对于消息是唯一的。

字符串messageID=((mimessage)msg)。getMessageID()//少数消息为空。

有没有其他方法可以获取消息Id,因为我不想忽略这些消息。

共有3个答案

仰钧
2023-03-14

使用此选项可以强制JavaMail API从内容中刷新标题。

((MimeMessage) msg).saveChanges();

它应该填充消息ID标头值。以下示例是随意生成消息ID的简单方法:

MimeMessage mimemessage 
            =new MimeMessage(Session.getDefaultInstance( new Properties()));
mimemessage.saveChanges();
String messageID = mmo.getMessageID();
贺君浩
2023-03-14

消息不需要具有消息Id标头。大多数消息都是这样。在许多情况下,如果服务器接收到没有消息Id头的消息,它会添加一个。尽管如此,仍无法保证。如果您依赖于消息Id来唯一标识消息,那么对于消息没有消息Id的情况,您需要有一种回退技术。

孔君浩
2023-03-14
String messageID = ((MimeMessage) msg).getMessageID();

如果此字段不可用或其值不存在,则返回null

如果消息id为空,则可以创建自己的消息id

StringBuffer s = new StringBuffer();
if(messageId == null)
messageId =  s.append(s.hashCode()).append('.').append(getUniqueId()).append('.').
append(System.currentTimeMillis()).append('.').
append("JavaMail");

这是在发送邮件时创建和设置邮件id的方式。您可以根据自己的需求进行自己的实现,然后继续处理您的消息

 类似资料:
  • 我们使用nextjs/reactjs作为FE,并且我们有一个server.js文件,它允许我们在上传映像,但是由于某种原因,每当我们运行服务器时,都会出现错误 下面是我们在server.js上的代码 这些是我们package.json中包含的脚本 希望得到一些答案和建议。这些代码在本地运行,没有任何问题

  • https://graph.microsoft.com/v1.0/groups/{groupId}?$select=可见性 同样,在我们的应用程序中,它使用Sharepoint SPFx和HttpClient,它当前返回了400个相同URL的错误请求。

  • 我做了一些谷歌搜索,我明白为什么我会得到错误,但我不确定如何修复它。从我所读到的内容来看,ContentType似乎试图利用Android附带的BasicHeaderValueParser,而该类还没有INSTANCE字段。有什么需要帮忙的吗? 以下是相关进口:

  • 下面是我的spring配置文件[springbeans.xml] 我的StudentDAOImpl类将实现StudentDAO接口,它将具有如下方法 最后主类

  • 将android Studio更新到3.1后,我的项目未编译。与Gradle同步时显示错误。 javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException: PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到

  • 问题内容: 我已经在几个线程中看到了答案,但对我却没有解决,而且由于我的问题偶尔发生,因此问这个问题是否有人有任何想法。 我正在使用jedis版本2.8.0,Spring Data Redis版本1.7.5。和redis服务器版本2.8.4用于我们的缓存应用程序。 我有多个缓存保存在redis中,并且从redis获得请求。我正在使用spring数据redis API保存和获取数据。 所有保存和获取