在AppEngine Java上使用MailGun

时间:2018-03-06 14:55:57

标签: java google-app-engine jersey mailgun

我试图获取在AppEngine上发送邮件所需的库。

文档(https://cloud.google.com/appengine/docs/standard/java/mail/mailgun)声明如果使用Maven,则需要添加这些文档:

球衣核 1.19.4

Jersey的客户端 1.19.4

Jersey的多 1.19.4

但是,添加它们会导致Eclipse中出现错误消息。

  

javax.ws.rs.ext.RuntimeDelegate $ HeaderDelegate类型不能   解决。它是从所需的.class文件间接引用的

可以通过添加javax.ws.rs-api-2.0.1解决这个问题,但使用该jar似乎有问题。

Appengine正在抛出错误:

Caused by: java.lang.ExceptionInInitializerError

    ... 44 more
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: org.glassfish.jersey.internal.RuntimeDelegateImpl

    at com.sun.jersey.core.header.MediaTypes.<clinit>(MediaTypes.java:65)
    ... 62 more
Caused by: java.lang.ClassNotFoundException: org.glassfish.jersey.internal.RuntimeDelegateImpl
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at com.google.apphosting.runtime.ApplicationClassLoader.findClass(ApplicationClassLoader.java:45)

在这里的一个帖子中,虽然通过删除javax.ws.rs-api-2.0

可以解决错误org.glassfish.jersey.internal.RuntimeDelegateImpl NOT FOUND

其他建议包括使用jersey2,但这需要我相信的其他配置,AppEngine文档不会显示如何做到这一点。

如何使用Mailgun ???

在Appengine上发送邮件

1 个答案:

答案 0 :(得分:0)

我使用泽西2.27(JAX-RS 2.1 / Jersey 2.26+)解决了这个问题,可从https://jersey.github.io/download.html下载

我需要以下罐子:

nearest

并修改AppEngine样本以使用Jersey 2.26+,如下所示:

        hk2-api-2.5.0-b32.jar
        hk2-locator-2.5.0-b42.jar
        hk2-utils-2.5.0-b32.jar
        javax.inject-1.jar
        javax.inject-2.5.0-b42.jar
        jersey-client.jar
        jersey-common.jar
        jersey-guava-2.26-b03.jar (from Jersey 2.25.1)
        jersey-media-jaxb.jar
        javax.ws.rs-api-2.1.jar

MAILGUN_API_KEY可从MailGun获得。 MAILGUN_DOMAIN_NAME是我的自定义域名,DOMAIN_MAIL_ADDRESS是我希望发送的地址。

注意:我的类路径上也有guava-gwt和gauva,所以也许是添加了jersey-guava就可以了。实际上,jersey-gauva只在jaxrs-ri-2.25.1而不是jaxrs-ri-2.27(JAX-RS 2.1 / Jersey 2.26+)。但这绝对是必需的。