通过 JavaMail 发送邮件时 Message-Id 被替换

2024-03-13

我试图找到一个解决方案,希望运气好,所以我决定将其发布在这里。

问题是,当我使用 javaMail 发送消息时,它会自动生成一个消息 ID(我将其存储到数据库中,然后识别对此消息的回复),但当消息发送时,由于某种原因,smpt 服务器会更改该消息 ID。已发送,因此我无法追踪与此消息相关的任何内容。

例如

我首先通过 gmail 向与我的邮件客户端同步的帐户之一发送一条消息,然后我使用我的消息客户端检查该消息,一切正常,Message-Id 是

<CAPDSf[email protected] /cdn-cgi/l/email-protection>

然后我通过我的消息客户端发送此消息的回复,javaMail 生成的 id 是

<[email protected] /cdn-cgi/l/email-protection>

最后,当我去检查我的电子邮件帐户中的回复时,它的标题中有以下值

Message-ID: <[email protected] /cdn-cgi/l/email-protection> FAIL

In-Reply-To: <CAPDSf[email protected] /cdn-cgi/l/email-protection> OK

正如你所看到的,消息 ID 已更改,我希望它是

<[email protected] /cdn-cgi/l/email-protection>

为什么会发生这种情况?

我很感激任何帮助

谢谢你们

--Edit

根据建议,我使用 javaMail 中的 smtpsend demo 进行了测试(我实现了 MimeMessage 的子类来生成我自己的 Message-Id)。

java -jar -Dmail.smtp.starttls.enable=true -Dmail.smtp.port=587 SMTPSend.jar -d -M smtp.live.com -U [email protected] /cdn-cgi/l/email-protection -P mypass -o [email protected] /cdn-cgi/l/email-protection -A [email protected] /cdn-cgi/l/email-protection

发送消息时,在 smtpsend 输出之间,生成了 Message-Id

<[email protected] /cdn-cgi/l/email-protection>

但是当我去查看这条消息时[电子邮件受保护] /cdn-cgi/l/email-protection, Message-Id 不同

<[email protected] /cdn-cgi/l/email-protection>

为什么它会动态更改我的消息 ID...我不明白

--编辑2

我注意到当我从 hotmail 帐户发送邮件时就会出现问题 当我从 gmail 帐户发送邮件时,message-id 不再改变(我认为实现我自己的 Message-Id 生成方法有助于解决这个问题)

感谢回复


我知道这是一个旧线程,但这个答案仍然可以帮助人们。

您需要推翻 MimeMessage 中的 updateMessageID(),因为每次发送电子邮件之前都会调用它。

class MyMessage extends MimeMessage {

    public MyMessage(Session session) {
        super(session);
    }

    protected void updateMessageID() throws MessagingException {
        setHeader("Message-ID", "<[email protected] /cdn-cgi/l/email-protection>");
    }
}

如果您想传递每个 MyMessage 的唯一 id...

class MyMessage extends MimeMessage {
        String uniqueMessageId;     

        public MyMessage(Session session, String uniqueMessageId) {
            super(session);
            this.uniqueMessageId = uniqueMessageId;

        }

        protected void updateMessageID() throws MessagingException {
            setHeader("Message-ID", "<" + uniqueMessageId + ">");
        }
    }

然后调用它,例如:

MyMessage message = new MyMessage(session, "[email protected] /cdn-cgi/l/email-protection");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 JavaMail 发送邮件时 Message-Id 被替换 的相关文章

  • 如何使用 IMAP 唯一标识 Java 邮件消息?

    Java Mail 中的 IMAP 消息由其相对位置编号 从 1 开始 标识 refer http docs oracle com javaee 1 4 api javax mail Message html getMessageNumbe
  • 如何将 HTML 代码添加到 JSF FacesMessage

    默认情况下 每个 JSFFacesMessage以单行形式呈现 我想添加 HTML 换行符 br 消息本身 以便消息显示整齐 我尝试过如下 message new FacesMessage test br test 然而 它被 JSF 转义
  • org.springframework.mail 的哪个工件?

    我想使用 spring 支持来发送邮件 我的项目是用 maven 2 构建的 我使用 spring core 2 5 5 我尝试在 maven 中央存储库中查找要包含在我的 pom xml 中的工件 我发现的唯一一个是弹簧支撑 http m
  • 在无锁设置中是否可以实现多生产者、单消费者?

    我有一堆线程相互之间进行大量通信 我希望这是无锁的 对于每个线程 我希望有一个邮箱 其他线程可以在其中向其发送消息 但只有所有者可以删除消息 这是多生产者单消费者的情况 我可以在无锁 高性能的情况下做到这一点吗 这是一个巨大模拟的内循环 无
  • 使用加密密码连接到 gmail(使用 imap 和 javamail)

    我正在尝试使用一个简单的java程序连接到gmail 像这个 https harikrishnan83 wordpress com 2009 01 24 access gmail with imap using java mail api
  • 调整控制台事件的大小

    所以我认为窗口调整大小事件将通过 winproc 进行 我可能是错误的 希望获得控制台调整大小事件的通知 我想在调整大小时最大化控制台缓冲区 一旦完成 基本上将其缩小回窗口大小 从而防止由于缓冲区小于窗口而导致溢出错误 不幸的是 答案是你无
  • 如何覆盖 Struts 2 消息?

    这是我的 struts xml 的一部分
  • 使用标准 Gmail 应用程序发送电子邮件,无需选择器

    我正在尝试使用标准 Gmail 应用程序从我的应用程序发送电子邮件 但我总是有选择器 如何在没有选择器的情况下立即打开标准 Gmail 应用程序 我不需要任何可以发送电子邮件的应用程序的选择器 我只需要 GMAIL 谢谢你 这是我的代码 I
  • Magento:如何在管理面板中使用 JS 显示标准错误/成功消息?

    我可以从服务器端将错误 成功消息添加到 Magento 管理面板 例如 Mage getSingleton core session gt addError 但是如何使用 JS 在客户端显示相同的消息呢 我的意思是标准方式 当然我可以创建相
  • ASP.net MasterPage.master 不存在

    我在 IIS 服务器上发布我的网站时遇到问题 我无法直接访问它 因此我必须依靠其他人在 IIS 上配置我的网站 但是 当我上传我的网站时 出现此错误 Line 1 Line 2
  • 我如何在 Skype 上玩 google?

    此代码用于在 Skype 上向某人发送消息 但我不知道如何设置https play google com store apps details id com skype raider https play google com store
  • JavaMail 与 Oauth 和 Office365

    我正在用 Java 构建一个简单的命令行应用程序 它可以登录我的电子邮件箱 IMAP 并下载所有附件 我使用了基本身份验证 但 Microsoft 正在禁用它 因此我尝试将我的应用程序转换为使用 OAuth 在阅读了不同的 OAuth 流程
  • org.xml.sax.SAXParseException;cvc-complex-type.2.4.c:匹配通配符严格,但找不到声明

    我在这里要做的就是让邮件发送器通过我的 Java 代码工作 我查看了类似的问题 并按照此处的建议删除了 spring 版本号cvc complex type 2 4 c 匹配通配符严格 但找不到元素 mvc annotation drive
  • php.ini,使用 php 脚本发送电子邮件的 sendmail 配置

    我需要一些帮助 我正在尝试从 php 脚本发送电子邮件 我的环境包括以下内容 操作系统 Windows 8 XAMPP版本 1 8 2 PHP 版本 5 4 19 我有以下 php 脚本 发送邮件配置文件的配置如下 smtp server
  • javax.mail.MessagingException:无法连接到 SMTP 主机:<主机名> 端口:25 响应:554

    我正在尝试使用 java mail api 发送邮件 我的 smtp 服务器是 ibm 服务器 我面临这个异常 javax mail MessagingException Could not connect to SMTP host
  • 消息循环如何使用线程?

    我有点困惑 想知道我是否被误导了 在另一篇文章中 我被告知 只有当你显式创建新线程时才会创建它们 C 程序默认是单线程的 当我打开未在 ollydbg 中显式创建新线程的程序时 我多次注意到通常有 2 个线程在运行 我想了解消息循环如何在不
  • Java邮件,设置回复地址不起作用

    我用java写了一个小的电子邮件发送程序 它有from to and reply to地址 当客户端尝试回复邮件时 应该能够回复reply to地址 目前它不起作用 我的代码如下 File Name SendEmail java impor
  • IMAPMessage.getUID() 和 Message-ID 标头有什么区别?

    从java邮件的角度来看 这两者有什么区别 我可以看到特定消息的 2 个值不相同 那么我应该如何考虑 IMAP 邮件的唯一 ID 如果我需要从 IMAP 服务器获取与唯一 ID 相对应的消息 我应该使用吗 MessageIDTerm or
  • 读取电子邮件的文本文件转换为 Javamail MimeMessage

    我有一个电子邮件原始来源的文本文件 直接从 gmail 复制 如果您单击 查看原始文件 您就会看到它 我想读入该文件并将其转换为 MimeMessage 如果您好奇为什么 我设置了 JavaMaildir 并且需要用电子邮件填充它的收件箱以
  • Azure消息队列中的消息将直接进入Poison消息队列

    希望这可以节省某人一些时间 当移动到较新的版本时 下面的代码停止工作QueueClient https learn microsoft com en us dotnet api azure storage queues queueclien

随机推荐

  • 创建随机二进制文件

    我正在尝试使用 python 创建一个随机二进制文件 这就是我已经得到的 f open filename wb for i in xrange size kb for ii in xrange 1024 4 f write struct p
  • MarshalAs 嵌套结构

    我有两个 C 结构 在从 C 调用 DLL 方法时必须将它们作为参数发送 例如 让我们将它们定义为 struct A int data struct B int MoreData A SomeData 我需要从 C 调用的方法具有以下签名
  • 在 IE 中打开新选项卡

    我正在使用以下代码在 Internet Explorer 中打开网站 ProcessStartInfo startInfo new ProcessStartInfo Arguments http www example com FileNa
  • 更改 use 元素上的 defs 中定义的属性

    如何通过脚本来更改 defs 中定义的 use element 的样式 我试图进入 w3c 工作草案界面 但我迷失在那个迷宫中
  • 在自动布局中将子视图的 X 居中会引发“未准备好约束”

    我有一个自定义 UIView 子类 它是通过笔尖初始化的 In awakeFromNib 我正在创建一个子视图并尝试将其置于其超级视图的中心 self setInteralView UIView alloc init self intern
  • Haskell 性能:组合与应用程序?

    我看到了一些关于函数组合和应用程序之间的相似点和差异以及实现它的各种方法的问题 但是有一件事开始让我有点困惑 据我搜索 还没有被问到 是关于函数组合和应用程序之间的差异表现 当我学习 F 时 我爱上了管道操作符 gt 这在 haskell
  • 具有未知属性名称的结构的嵌套属性?

    我使用 JSON 将一些值从外部源获取到变量中 我有这样的类型json Unmarshal https golang org pkg json Unmarshal将值放入 type Frame struct Type string Valu
  • 仅刷新 php 中的 div [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个想要更新的聊天框 但我只想刷
  • CTRL+C 不会停止 sinatra 应用程序

    Normally when I run a rails app from the console during development I can just press Ctrl C and it exits Then I can run
  • 在GDB中,如何在程序停止时自动执行命令? (如显示)

    我希望每次程序停止时自动执行一些命令 就像 display 对 x 所做的那样 我怎么做 这是我发现的简单方法 define hook stop commands to be executed when execution stops en
  • 动态更改 GPS LocationListener 的 minTime

    我正在编写的应用程序使用 GPS 位置管理器服务 requestLocationUpdates 但我希望能够更改整个程序中的最小时间和最小距离参数 我在创建时初始化位置侦听器 但我不知道如何更改这些参数 甚至不知道是否可以这样做 这样做的主
  • TimeZoneInfo.ConvertTimeFromUtc c#

    var Result1 TimeZoneInfo ConvertTimeFromUtc DateTime UtcNow TimeZoneInfo Local var Result2 TimeZoneInfo ConvertTimeFromU
  • 如何通过CSS突出显示java代码?

    我看到一些很酷的代码突出显示 看起来像 Eclipse 中的代码 但我找不到它 你知道任何很酷的 java 代码高亮 css 吗 我想你想要代码美化 http code google com p google code prettify 支
  • 如何取消我的 Microsoft Azure 订阅?

    我注册了 Azure 试用版 但不再使用它 但是 他们仍在向我的信用卡收费 我想取消订阅 但找不到方法 我也尝试联系客户服务中心 但没有回复 我如何取消 关闭我的帐户 要取消您的帐户 请登录 Azure 帐户门户 https account
  • Log4j2 已删除的滚动文件仍然打开并且磁盘空间未释放

    我最近在我的 tomcat6 服务器上从 log4j 迁移到 log4j2 问题是我删除的滚动文件永远保持打开状态 因此磁盘空间没有被释放 我使用此命令 sudo usr sbin lsof grep returned 来检查打开的已删除文
  • 从 joinPoint 获取 HTTP 方法

    我需要从某个方面的 joinPoint 获取像 POST PATCH GET etc 这样的 http 方法 Before isRestController public void handlePost JoinPoint point do
  • 在本地计算机上安装主题。我需要 FTP 数据连接吗?

    我刚刚第一次在本地主机上安装了 wordpress 我想安装一个主题 它询问我的 FTP 用户名和密码 它说 要执行请求的操作 WordPress 需要访问您的 Web 服务器 请输入您的 FTP 凭据以继续 如果您不记得您的凭据 您应该联
  • 如何在ListView中使用虚拟模式?

    我在用着VirtualMode填充列 例如 List
  • 模运算符 (%) 实际上是如何计算的?

    最近我对模运算符感到困惑 据了解a b a a b b当我们有整数时a and b where a gt b 如果a and b足够小 然而 当谈到处理器的计算方式时 处理器是否使用与前面提到的相同的方法 a a b b 也许只是将除法翻译
  • 通过 JavaMail 发送邮件时 Message-Id 被替换

    我试图找到一个解决方案 希望运气好 所以我决定将其发布在这里 问题是 当我使用 javaMail 发送消息时 它会自动生成一个消息 ID 我将其存储到数据库中 然后识别对此消息的回复 但当消息发送时 由于某种原因 smpt 服务器会更改该消