我试图将Mailgun集成到我的Android应用程序中,但我遇到了很多问题,并且想知道是否有人在Android上成功使用过Mailgun可以提供一些帮助。我可以按照Mailgun用户手册(https://documentation.mailgun.com/user_manual.html#sending-via-api)发送纯文本电子邮件,但前提是该设备的Android版本至少是Lollipop。任何具有较低Android版本的设备,我收到许多关于缺少与XML相关的类的错误,由于我无法导入javax.*
类,因此我无法解决这些错误。当我尝试使用用户指南中列出的代码发送HTML电子邮件时也是如此。
日志中收到的错误示例:
The provider class, class com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$App, could not be instantiated.
Processing will continue but the class will not be utilized
java.lang.TypeNotPresentException: Type javax.xml.stream.XMLInputFactory not present
The provider class, class com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$Text, could not be instantiated.
Processing will continue but the class will not be utilized
java.lang.TypeNotPresentException: Type javax.xml.stream.XMLInputFactory not present
The provider class, class com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General, could not be instantiated.
Processing will continue but the class will not be utilized
java.lang.TypeNotPresentException: Type javax.xml.stream.XMLInputFactory not present
因此,我想知道是否有人遇到过这些问题(在Android设备上使用Mailgun< 5.0和/或发送HTML电子邮件)并且能够解决这些问题可以给我一些指示。谢谢!
答案 0 :(得分:2)
当您指向官方的Mailgun文档时,我假设您使用Jersey 1.x库作为JAX-RS客户端。
我建议你试试2.x分支。看看at this。
此外,您不需要使用泽西岛。任何REST客户端都可以。在this SO question中,您可以选择其他选项和更多信息。
现在正是你的问题。 Jersey和任何JAX-RS库使用提供程序来处理不同的事情,包括处理内容(实体)。看来你的问题是默认的XML实体提供程序使用了类路径中没有的JAXB或JAXP(那些javax.xml
类)。但是you can provide Jersey with any other entity manager for XML content type。实际上,当前的文档解释了how to use MOXy as an alternate JAXB implementation。它甚至被编译为依赖项。
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>2.23.2</version>
</dependency>
答案 1 :(得分:0)
您可以使用this library。
您还需要在gradle文件中添加“配置”,它应如下所示:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'net.sargue:mailgun:1.3.2'
}
configurations {
compile.exclude group: 'javax.inject', module: 'javax.inject'
}
更多信息here