diff --git a/gmail/snippets/src/main/java/SendMessage.java b/gmail/snippets/src/main/java/SendMessage.java new file mode 100644 index 00000000..204fc5d2 --- /dev/null +++ b/gmail/snippets/src/main/java/SendMessage.java @@ -0,0 +1,101 @@ +// Copyright 2022 Google LLC +// +// 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 +// +// https://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. + + +// [START gmail_send_message] +import com.google.api.client.googleapis.json.GoogleJsonResponseException; +import com.google.api.client.http.HttpRequestInitializer; +import com.google.api.client.http.javanet.NetHttpTransport; +import com.google.api.client.json.gson.GsonFactory; +import com.google.api.services.gmail.GmailScopes; +import com.google.auth.http.HttpCredentialsAdapter; +import com.google.auth.oauth2.GoogleCredentials; +import org.apache.commons.codec.binary.Base64; +import com.google.api.services.gmail.Gmail; +import com.google.api.services.gmail.model.Message; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Collections; +import java.util.Properties; + +import javax.mail.MessagingException; +import javax.mail.Session; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; + +/* Class to demonstrate the use of Gmail Send Message API */ +public class SendMessage { + /** + * Send an email from the user's mailbox to its recipient. + * + * @param fromEmailAddress - Email address to appear in the from: header + * @param toEmailAddress - Email address of the recipient + * @return the sent message + * @throws MessagingException - if a wrongly formatted address is encountered. + * @throws IOException - if service account credentials file not found. + */ + public static Message sendEmail(String fromEmailAddress, + String toEmailAddress) + throws MessagingException, IOException { + // Load pre-authorized user credentials from the environment. + // TODO(developer) - See https://developers.google.com/identity for + // guides on implementing OAuth2 for your application. + GoogleCredentials credentials = GoogleCredentials.getApplicationDefault().createScoped(Collections.singletonList(GmailScopes.GMAIL_SEND)); + HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter( + credentials); + + // Create the gmail API client + Gmail service = new Gmail.Builder(new NetHttpTransport(), + GsonFactory.getDefaultInstance(), + requestInitializer) + .setApplicationName("Gmail samples") + .build(); + + // Create the email content + String messageSubject = "Test message"; + String bodyText = "lorem ipsum."; + + // Encode as MIME message + Properties props = new Properties(); + Session session = Session.getDefaultInstance(props, null); + MimeMessage email = new MimeMessage(session); + email.setFrom(new InternetAddress(fromEmailAddress)); + email.addRecipient(javax.mail.Message.RecipientType.TO, + new InternetAddress(toEmailAddress)); + email.setSubject(messageSubject); + email.setText(bodyText); + + // Encode and wrap the MIME message into a gmail message + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + email.writeTo(buffer); + byte[] rawMessageBytes = buffer.toByteArray(); + String encodedEmail = Base64.encodeBase64URLSafeString(rawMessageBytes); + Message message = new Message(); + message.setRaw(encodedEmail); + + try { + // Create send message + message = service.users().messages().send("me", message).execute(); + System.out.println("Message id: " + message.getId()); + System.out.println(message.toPrettyString()); + return message; + } catch (GoogleJsonResponseException e) { + // TODO(developer) - handle error appropriately + System.err.println("Unable to send message: " + e.getDetails()); + throw e; + } + } +} +// [END gmail_send_message] \ No newline at end of file