如何在Android上使用Mailgun发送HTML电子邮件< 5

时间:2016-10-17 19:44:46

标签: java android mailgun

我试图将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电子邮件)并且能够解决这些问题可以给我一些指示。谢谢!

2 个答案:

答案 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