Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用apache commons mail重新发送多端口邮件_Java_Email_Apache Commons - Fatal编程技术网

Java 使用apache commons mail重新发送多端口邮件

Java 使用apache commons mail重新发送多端口邮件,java,email,apache-commons,Java,Email,Apache Commons,以下是我的场景: 一些电子邮件发送bean会被调用,其中包含邮件构造所需的一系列参数 它创建MultiPartEmail并将其排队发送,这是由后台的单独线程完成的,调用者不关心它是否被发送 传递线程拾取排队的电子邮件实例并执行email.send()-因此关闭它 当传递失败时,bean将尝试每5分钟重新发送邮件三次,然后放弃 问题: 我不知道该怎么处理。我手头上有一个以前构造的MultiPartEmail实例,它无法发送。显然,再次执行email.send()会引发以下问题: java.lang

以下是我的场景:

  • 一些电子邮件发送bean会被调用,其中包含邮件构造所需的一系列参数
  • 它创建MultiPartEmail并将其排队发送,这是由后台的单独线程完成的,调用者不关心它是否被发送
  • 传递线程拾取排队的电子邮件实例并执行email.send()-因此关闭它
  • 当传递失败时,bean将尝试每5分钟重新发送邮件三次,然后放弃
  • 问题:

    我不知道该怎么处理。我手头上有一个以前构造的MultiPartEmail实例,它无法发送。显然,再次执行email.send()会引发以下问题:

    java.lang.IllegalStateException:MimeMessage已经生成。


    是否有方法重置此非法状态,以便重新使用此消息。我真的没有从头开始创建新实例的方法——调用者早就不存在了,如果不能使用已经构建的对象,这将使整个机制变得非常丑陋。我想我遗漏了一个非常简单的问题。

    我知道这是一个老问题,但我遇到了同样的问题,我找到了解决办法

    当您创建
    MultiPartEmail
    (或
    HtmlEmail
    )的实例,设置其属性,然后调用
    send()
    方法时,对象将在内部调用以下方法:

    • buildMimeMessage()
    • sendMimeMessage()
    可以多次调用
    sendMimeMessage()。问题是
    buildMimeMessage()
    只能调用一次。当您依赖基本
    Email
    类的
    send()
    方法时,您会得到原始海报发现的异常


    解决方案是当
    电子邮件
    对象是
    多部分邮件
    时,使用我刚才提到的两种方法。您可以显式调用
    buildMimeMessage()
    一次,然后调用
    sendmimessage()
    一次或多次。

    请详细说明?