我在Java Quarkus中创建了一个AWS Lambda函数。
我正在使用Java邮件和Amazon SES进行电子邮件。
我添加了所有必需的依赖项,并且在通过postman进行本地测试时运行完全正常。我在电子邮件中获得了所有PDF文件的附件。但是每当我尝试在AWS Lambda控制台中进行测试时,我都会得到以下结果:
无对象dch用于mime类型multipart/mixed
我已经尝试添加线程到加载类,并且:
MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
mc.addMailcap("message/rfc822;; x-java-content- handler=com.sun.mail.handlers.message_rfc822");
但目前还没有任何进展有人知道解决办法吗
1条答案
按热度按时间1aaf6o9v1#
我是Java和Lambda的新手,但当JavaMail库无法找到指定MIME类型的DataContentHandler时,会出现错误“no object dch for mime type multipart/mixed”。在这种情况下,它发生在AWS Lambda控制台中运行代码时,而不是通过Postman进行本地测试时。这表明AWS Lambda控制台中的环境配置可能存在问题。
一种解决方案是确保必要的库包含在AWS Lambda函数的部署包中。在本地测试时,所有必需的库可能都存在于类路径中,但在AWS Lambda环境中可能并非如此。请确保所有必需的依赖项都包含在部署包中,并且类路径设置正确。
另一种解决方案是为MIME类型“multipart/mixed”显式注册DataContentHandler。这可以通过创建javax.activation.DataContentHandler接口的自定义实现并将其注册到JavaBeans Activation Framework(JAF)来完成。下面是一个示例实现(未经测试的代码):
然后,在发送电子邮件之前,在Lambda函数代码中使用JAF注册自定义DataContentHandler:
这将为MIME类型“multipart/mixed”注册自定义DataContentHandler并解决问题。
确保检查AWS Lambda环境配置,并在部署包中包含所有必需的依赖项,以确保必要的库在运行时可用。