Skip to content

Commit

Permalink
Create SendMessage.java
Browse files Browse the repository at this point in the history
  • Loading branch information
scmacdon authored Jun 2, 2020
1 parent 7eaad44 commit 4f8b16a
Showing 1 changed file with 131 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
package example;

import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.ses.SesClient;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeBodyPart;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Properties;
import software.amazon.awssdk.core.SdkBytes;
import software.amazon.awssdk.services.ses.model.SendRawEmailRequest;
import software.amazon.awssdk.services.ses.model.RawMessage;
import software.amazon.awssdk.services.ses.model.SesException;


public class SendMessage {

public void sendMessage(String email) throws IOException {


//Sender
String sender = "scmacdon@amazon.com" ;

String subject = "New Case";

// The email body for recipients with non-HTML email clients.
String bodyText = "Hello,\r\n" + "You are assigned a new case";

// The HTML body of the email.
String bodyHTML = "<html>" + "<head></head>" + "<body>" + "<h1>Hello!</h1>"
+ "<p>Please check the database for new ticket assigned to you.</p>" + "</body>" + "</html>";

Region region = Region.US_WEST_2;
SesClient client = SesClient.builder()
.region(region)
.build();

try {
send(client, sender,email, subject,bodyText,bodyHTML);

} catch (IOException | MessagingException e) {
e.getStackTrace();
}
}

public static void send(SesClient client,
String sender,
String recipient,
String subject,
String bodyText,
String bodyHTML
) throws AddressException, MessagingException, IOException {

Session session = Session.getDefaultInstance(new Properties());

// Create a new MimeMessage object.
MimeMessage message = new MimeMessage(session);

// Add subject, from and to lines.
message.setSubject(subject, "UTF-8");
message.setFrom(new InternetAddress(sender));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient));

// Create a multipart/alternative child container.
MimeMultipart msgBody = new MimeMultipart("alternative");

// Create a wrapper for the HTML and text parts.
MimeBodyPart wrap = new MimeBodyPart();

// Define the text part.
MimeBodyPart textPart = new MimeBodyPart();
textPart.setContent(bodyText, "text/plain; charset=UTF-8");

// Define the HTML part.
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(bodyHTML, "text/html; charset=UTF-8");

// Add the text and HTML parts to the child container.
msgBody.addBodyPart(textPart);
msgBody.addBodyPart(htmlPart);

// Add the child container to the wrapper object.
wrap.setContent(msgBody);

// Create a multipart/mixed parent container.
MimeMultipart msg = new MimeMultipart("mixed");

// Add the parent container to the message.
message.setContent(msg);

// Add the multipart/alternative part to the message.
msg.addBodyPart(wrap);

try {
System.out.println("Attempting to send an email through Amazon SES " + "using the AWS SDK for Java...");

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
message.writeTo(outputStream);

ByteBuffer buf = ByteBuffer.wrap(outputStream.toByteArray());

byte[] arr = new byte[buf.remaining()];
buf.get(arr);

SdkBytes data = SdkBytes.fromByteArray(arr);

RawMessage rawMessage = RawMessage.builder()
.data(data)
.build();

SendRawEmailRequest rawEmailRequest = SendRawEmailRequest.builder()
.rawMessage(rawMessage)
.build();

client.sendRawEmail(rawEmailRequest);

} catch (SesException e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}


}
}

0 comments on commit 4f8b16a

Please sign in to comment.