diff --git a/compute/mailjet/README.md b/compute/mailjet/README.md new file mode 100644 index 00000000000..cbed566b724 --- /dev/null +++ b/compute/mailjet/README.md @@ -0,0 +1,44 @@ +# Java Mailjet Email Sample for Google Compute Engine + +This sample demonstrates how to use [Mailjet](https://www.mailjet.com/) on +[Google Compute Engine](https://cloud.google.com/compute/) + +See the [sample application documentaion][sample-docs] for more detailed +instructions. + +For more information about Mailjet, see their +[documentation](http://dev.mailjet.com/email-api/v3/apikey/). + +[sample-docs]: https://cloud.google.com/compute/docs/tutorials/sending-mail/ + +## Running on Compute Engine + +To run the sample, you will need to do the following: + +1. [Create a Mailjet Account](https://app.mailjet.com/signup). +1. Create a compute instance on the Google Cloud Platform Developer's Console +1. SSH into the instance you created +1. Update packages and install required packages + + `sudo apt-get update && sudo apt-get install git-core openjdk-8-jdk maven` + +1. Clone the repo + + `git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git` + +1. Configure your Mailjet settings in the java class (MAILJET_API_KEY, SENDGRID_SENDER) + + `java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet/MailjetSender.java` + +1. Navigate back to ./Mailjet and use maven to package the class as a jar + + `mvn clean package` + +1. Make sure that openjdk 8 is the selected java version + + `sudo update-alternatives --config java` + +1. Execute the jar file with your intended recipient and sender emails as arguments + and send an email (make sure you are in the target folder) + + `java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar [RECIPIENT EMAIL] [SENDER EMAIL]` diff --git a/compute/mailjet/pom.xml b/compute/mailjet/pom.xml new file mode 100644 index 00000000000..21db2d8bb60 --- /dev/null +++ b/compute/mailjet/pom.xml @@ -0,0 +1,91 @@ + + + 4.0.0 + jar + 1.0-SNAPSHOT + com.example.compute + compute-mailjet + + com.google.cloud + doc-samples + 1.0.0 + ../.. + + + + + junit + junit + 4.10 + test + + + org.mockito + mockito-all + 1.10.19 + test + + + javax.servlet + javax.servlet-api + 3.1.0 + jar + provided + + + + com.mailjet + mailjet-client + 4.0.1 + + + + + + + maven-assembly-plugin + + + package + + single + + + + + + + com.example.compute.mailjet.MailjetSender + + + + jar-with-dependencies + + + + + org.apache.maven.plugins + 3.3 + maven-compiler-plugin + + 1.8 + 1.8 + + + + + diff --git a/compute/mailjet/src/main/java/com/example/compute/mailjet/MailjetSender.java b/compute/mailjet/src/main/java/com/example/compute/mailjet/MailjetSender.java new file mode 100644 index 00000000000..93a06515a3e --- /dev/null +++ b/compute/mailjet/src/main/java/com/example/compute/mailjet/MailjetSender.java @@ -0,0 +1,66 @@ +/** + * Copyright 2016 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compute.mailjet; + +// [START mailjet_imports] +import com.mailjet.client.MailjetClient; +import com.mailjet.client.MailjetRequest; +import com.mailjet.client.MailjetResponse; +import com.mailjet.client.errors.MailjetException; +import com.mailjet.client.resource.Email; +// [END mailjet_imports] + +import org.json.JSONArray; +import org.json.JSONObject; + +// [START app] +public class MailjetSender{ + + public static void main(String[] args) { + final String mailjetApiKey = "YOUR-MAILJET-API-KEY"; + final String mailjetSecretKey = "YOUR-MAILJET-SECRET-KEY"; + MailjetClient client = new MailjetClient(mailjetApiKey, mailjetSecretKey); + + MailjetSender sender = new MailjetSender(); + sender.sendMailjet(args[0], args[1], client); + } + + public MailjetResponse sendMailjet(String recipient, String sender, MailjetClient client) { + MailjetRequest email = new MailjetRequest(Email.resource) + .property(Email.FROMEMAIL, sender) + .property(Email.FROMNAME, "pandora") + .property(Email.SUBJECT, "Your email flight plan!") + .property(Email.TEXTPART, + "Dear passenger, welcome to Mailjet! May the delivery force be with you!") + .property(Email.HTMLPART, + "

Dear passenger, welcome to Mailjet!


May the delivery force be with you!") + .property(Email.RECIPIENTS, new JSONArray().put(new JSONObject().put("Email", recipient))); + + try { + // trigger the API call + MailjetResponse response = client.post(email); + // Read the response data and status + System.out.println(response.getStatus()); + System.out.println(response.getData()); + return response; + } catch (MailjetException e) { + System.out.println("Mailjet Exception: " + e); + return null; + } + } +} +// [END app] diff --git a/compute/mailjet/src/test/java/com/example/compute/mailjet/MailjetSenderTest.java b/compute/mailjet/src/test/java/com/example/compute/mailjet/MailjetSenderTest.java new file mode 100644 index 00000000000..6212a05aa10 --- /dev/null +++ b/compute/mailjet/src/test/java/com/example/compute/mailjet/MailjetSenderTest.java @@ -0,0 +1,54 @@ +/** + * Copyright 2016 Google Inc. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compute.mailjet; + +import com.mailjet.client.MailjetClient; +import com.mailjet.client.MailjetResponse; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; +import org.mockito.Matchers; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; + +/** + * Unit tests for {@link MailjetSender}. + */ +@RunWith(JUnit4.class) +public class MailjetSenderTest { + + @Mock MailjetClient mockClient; + @Mock MailjetResponse mockResponse; + private MailjetSender sender; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + + Mockito.when(mockClient.post(Matchers.anyObject())).thenReturn(mockResponse); + sender = new MailjetSender(); + } + + @Test + public void doGet_defaultEnvironment_writesResponse() throws Exception { + sender.sendMailjet("fake recipient", "fake sender", mockClient); + Mockito.verify(mockClient).post(Matchers.anyObject()); + } +} diff --git a/managed_vms/analytics/pom.xml b/managed_vms/analytics/pom.xml index 3fe0e6e2cbd..47dfa08401c 100644 --- a/managed_vms/analytics/pom.xml +++ b/managed_vms/analytics/pom.xml @@ -35,7 +35,7 @@ com.google.appengine gcloud-maven-plugin - 2.0.9.101.v20160316 + 2.0.9.106.v20160420 org.apache.maven.plugins diff --git a/managed_vms/async-rest/pom.xml b/managed_vms/async-rest/pom.xml index 212c3680c6b..fbb6073c274 100644 --- a/managed_vms/async-rest/pom.xml +++ b/managed_vms/async-rest/pom.xml @@ -53,7 +53,7 @@ com.google.appengine gcloud-maven-plugin - 2.0.9.101.v20160316 + 2.0.9.106.v20160420 debug debug diff --git a/managed_vms/cloudstorage/pom.xml b/managed_vms/cloudstorage/pom.xml index e09a2a27d91..370582de139 100644 --- a/managed_vms/cloudstorage/pom.xml +++ b/managed_vms/cloudstorage/pom.xml @@ -37,7 +37,7 @@ com.google.appengine gcloud-maven-plugin - 2.0.9.101.v20160316 + 2.0.9.106.v20160420 org.apache.maven.plugins diff --git a/managed_vms/cron/pom.xml b/managed_vms/cron/pom.xml index 58f4d741a1b..5ddc7eda9e9 100644 --- a/managed_vms/cron/pom.xml +++ b/managed_vms/cron/pom.xml @@ -34,7 +34,7 @@ com.google.appengine gcloud-maven-plugin - 2.0.9.101.v20160316 + 2.0.9.106.v20160420 org.apache.maven.plugins diff --git a/managed_vms/datastore/pom.xml b/managed_vms/datastore/pom.xml index 9bd94037992..13644d4f50a 100644 --- a/managed_vms/datastore/pom.xml +++ b/managed_vms/datastore/pom.xml @@ -37,7 +37,7 @@ com.google.appengine gcloud-maven-plugin - 2.0.9.101.v20160316 + 2.0.9.106.v20160420 org.apache.maven.plugins diff --git a/managed_vms/disk/pom.xml b/managed_vms/disk/pom.xml index 8f2a1da2ec1..b96d9579266 100644 --- a/managed_vms/disk/pom.xml +++ b/managed_vms/disk/pom.xml @@ -30,7 +30,7 @@ com.google.appengine gcloud-maven-plugin - 2.0.9.101.v20160316 + 2.0.9.106.v20160420 org.apache.maven.plugins diff --git a/managed_vms/extending-runtime/pom.xml b/managed_vms/extending-runtime/pom.xml index 973e62d0241..c6a6b017054 100644 --- a/managed_vms/extending-runtime/pom.xml +++ b/managed_vms/extending-runtime/pom.xml @@ -30,7 +30,7 @@ com.google.appengine gcloud-maven-plugin - 2.0.9.101.v20160316 + 2.0.9.106.v20160420 org.apache.maven.plugins diff --git a/managed_vms/helloworld/pom.xml b/managed_vms/helloworld/pom.xml index dc8a1f0b9d8..b29c41a3417 100644 --- a/managed_vms/helloworld/pom.xml +++ b/managed_vms/helloworld/pom.xml @@ -34,7 +34,7 @@ com.google.appengine gcloud-maven-plugin - 2.0.9.101.v20160316 + 2.0.9.106.v20160420 org.apache.maven.plugins diff --git a/managed_vms/mailgun/pom.xml b/managed_vms/mailgun/pom.xml index 4ee2239aa9b..6cd119064ac 100644 --- a/managed_vms/mailgun/pom.xml +++ b/managed_vms/mailgun/pom.xml @@ -47,7 +47,7 @@ com.google.appengine gcloud-maven-plugin - 2.0.9.101.v20160316 + 2.0.9.106.v20160420 org.apache.maven.plugins diff --git a/managed_vms/mailjet/pom.xml b/managed_vms/mailjet/pom.xml index 6fb3a3bf061..3c21753347e 100644 --- a/managed_vms/mailjet/pom.xml +++ b/managed_vms/mailjet/pom.xml @@ -27,14 +27,6 @@ - - com.mailjet - mailjet-client - 3.1.1 - system - ${project.basedir}/src/main/webapp/WEB-INF/lib/client-3.1.1-jar-with-dependencies.jar - - javax.servlet javax.servlet-api @@ -44,19 +36,9 @@ - com.sun.jersey - jersey-core - 1.19.1 - - - com.sun.jersey - jersey-client - 1.19.1 - - - com.sun.jersey.contribs - jersey-multipart - 1.19.1 + com.mailjet + mailjet-client + 4.0.1 @@ -67,7 +49,7 @@ com.google.appengine gcloud-maven-plugin - 2.0.9.101.v20160316 + 2.0.9.106.v20160420 org.apache.maven.plugins diff --git a/managed_vms/memcache/pom.xml b/managed_vms/memcache/pom.xml index 37a054f469e..38e827f2d09 100644 --- a/managed_vms/memcache/pom.xml +++ b/managed_vms/memcache/pom.xml @@ -37,7 +37,7 @@ com.google.appengine gcloud-maven-plugin - 2.0.9.101.v20160316 + 2.0.9.106.v20160420 org.apache.maven.plugins diff --git a/managed_vms/sendgrid/pom.xml b/managed_vms/sendgrid/pom.xml index 304931bbd48..21cd80a9940 100644 --- a/managed_vms/sendgrid/pom.xml +++ b/managed_vms/sendgrid/pom.xml @@ -37,7 +37,7 @@ com.google.appengine gcloud-maven-plugin - 2.0.9.101.v20160316 + 2.0.9.106.v20160420 org.apache.maven.plugins diff --git a/managed_vms/sparkjava/pom.xml b/managed_vms/sparkjava/pom.xml index cdd77b4ed7d..a2a18dfb02a 100644 --- a/managed_vms/sparkjava/pom.xml +++ b/managed_vms/sparkjava/pom.xml @@ -95,7 +95,7 @@ com.google.appengine gcloud-maven-plugin - 2.0.9.101.v20160316 + 2.0.9.106.v20160420 diff --git a/managed_vms/static-files/pom.xml b/managed_vms/static-files/pom.xml index b75c7945648..bf2ef49cacf 100644 --- a/managed_vms/static-files/pom.xml +++ b/managed_vms/static-files/pom.xml @@ -30,7 +30,7 @@ com.google.appengine gcloud-maven-plugin - 2.0.9.101.v20160316 + 2.0.9.106.v20160420 org.apache.maven.plugins diff --git a/managed_vms/twilio/pom.xml b/managed_vms/twilio/pom.xml index 3179192849d..b8cbb56b315 100644 --- a/managed_vms/twilio/pom.xml +++ b/managed_vms/twilio/pom.xml @@ -37,7 +37,7 @@ com.google.appengine gcloud-maven-plugin - 2.0.9.101.v20160316 + 2.0.9.106.v20160420 org.apache.maven.plugins diff --git a/pom.xml b/pom.xml index 0cd102fe65f..adbe586579e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,6 +74,8 @@ appengine/xmpp bigquery compute/cmdline + compute/error-reporting + compute/mailjet compute/sendgrid datastore logging