-
Notifications
You must be signed in to change notification settings - Fork 5.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
131 additions
and
0 deletions.
There are no files selected for viewing
131 changes: 131 additions & 0 deletions
131
javav2/usecases/creating_serverless workflows/src/main/java/example/SendMessage.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
} | ||
|
||
|
||
} | ||
} |