Skip to content

Commit 587ee72

Browse files
authored
Update Pinpoint email examples to use PinpointEmailClient (#5901)
1 parent 8c68681 commit 587ee72

File tree

5 files changed

+169
-49
lines changed

5 files changed

+169
-49
lines changed

.doc_gen/metadata/pinpoint_metadata.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ pinpoint_SendMessages:
2222
- description: Send an email message.
2323
snippet_tags:
2424
- pinpoint.java2.send_email.main
25+
- description: Send an email message with CC values.
26+
snippet_tags:
27+
- pinpoint.java2.send_emailcc.main
2528
- description: Send an SMS message.
2629
snippet_tags:
2730
- pinpoint.java2.sendmsg.main

javav2/example_code/pinpoint/pom.xml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<dependency>
3030
<groupId>software.amazon.awssdk</groupId>
3131
<artifactId>bom</artifactId>
32-
<version>2.21.20</version>
32+
<version>2.22.12</version>
3333
<type>pom</type>
3434
<scope>import</scope>
3535
</dependency>
@@ -70,6 +70,13 @@
7070
<groupId>software.amazon.awssdk</groupId>
7171
<artifactId>pinpointsmsvoice</artifactId>
7272
</dependency>
73+
<!-- https://mvnrepository.com/artifact/software.amazon.awssdk/pinpointemail -->
74+
<dependency>
75+
<groupId>software.amazon.awssdk</groupId>
76+
<artifactId>pinpointemail</artifactId>
77+
<version>2.22.12</version>
78+
</dependency>
79+
7380
<dependency>
7481
<groupId>software.amazon.awssdk</groupId>
7582
<artifactId>pinpoint</artifactId>

javav2/example_code/pinpoint/src/main/java/com/example/pinpoint/SendEmailMessage.java

Lines changed: 37 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@
2222
import software.amazon.awssdk.services.pinpoint.model.MessageRequest;
2323
import software.amazon.awssdk.services.pinpoint.model.SendMessagesRequest;
2424
import software.amazon.awssdk.services.pinpoint.model.PinpointException;
25+
import software.amazon.awssdk.services.pinpointemail.PinpointEmailClient;
26+
import software.amazon.awssdk.services.pinpointemail.model.Body;
27+
import software.amazon.awssdk.services.pinpointemail.model.Content;
28+
import software.amazon.awssdk.services.pinpointemail.model.Destination;
29+
import software.amazon.awssdk.services.pinpointemail.model.EmailContent;
30+
import software.amazon.awssdk.services.pinpointemail.model.Message;
31+
import software.amazon.awssdk.services.pinpointemail.model.SendEmailRequest;
32+
2533
import java.util.HashMap;
2634
import java.util.Map;
2735
//snippet-end:[pinpoint.java2.send_email.import]
@@ -40,10 +48,12 @@ public class SendEmailMessage {
4048
public static String charset = "UTF-8";
4149

4250
// The body of the email for recipients whose email clients support HTML content.
43-
static final String htmlBody = "<h1>Amazon Pinpoint test (AWS SDK for Java 2.x)</h1>"
44-
+ "<p>This email was sent through the <a href='https://aws.amazon.com/pinpoint/'>"
45-
+ "Amazon Pinpoint</a> Email API using the "
46-
+ "<a href='https://aws.amazon.com/sdk-for-java/'>AWS SDK for Java 2.x</a>";
51+
static final String body = """
52+
Amazon Pinpoint test (AWS SDK for Java 2.x)
53+
54+
This email was sent through the Amazon Pinpoint Email API using the AWS SDK for Java 2.x
55+
56+
""";
4757

4858
public static void main(String[] args) {
4959
final String usage = """
@@ -52,79 +62,59 @@ public static void main(String[] args) {
5262
5363
Where:
5464
subject - The email subject to use.
55-
appId - The Amazon Pinpoint project/application ID to use when you send this message
5665
senderAddress - The from address. This address has to be verified in Amazon Pinpoint in the region you're using to send email\s
5766
toAddress - The to address. This address has to be verified in Amazon Pinpoint in the region you're using to send email\s
5867
""";
5968

60-
if (args.length != 4) {
69+
if (args.length != 3) {
6170
System.out.println(usage);
6271
System.exit(1);
6372
}
6473

6574
String subject = args[0];
66-
String appId = args[1];
67-
String senderAddress = args[2];
68-
String toAddress = args[3];
75+
String senderAddress = args[1];
76+
String toAddress = args[2];
6977
System.out.println("Sending a message");
70-
PinpointClient pinpoint = PinpointClient.builder()
78+
PinpointEmailClient pinpoint = PinpointEmailClient.builder()
7179
.region(Region.US_EAST_1)
7280
.build();
7381

74-
sendEmail(pinpoint, subject, appId, senderAddress, toAddress);
82+
sendEmail(pinpoint, subject, senderAddress, toAddress);
7583
System.out.println("Email was sent");
7684
pinpoint.close();
7785
}
7886

79-
public static void sendEmail(PinpointClient pinpoint,
80-
String subject,
81-
String appId,
82-
String senderAddress,
83-
String toAddress) {
84-
87+
public static void sendEmail(PinpointEmailClient pinpointEmailClient, String subject, String senderAddress, String toAddress) {
8588
try {
86-
Map<String, AddressConfiguration> addressMap = new HashMap<>();
87-
AddressConfiguration configuration = AddressConfiguration.builder()
88-
.channelType(ChannelType.EMAIL)
89-
.build();
90-
91-
addressMap.put(toAddress, configuration);
92-
SimpleEmailPart emailPart = SimpleEmailPart.builder()
93-
.data(htmlBody)
94-
.charset(charset)
95-
.build();
96-
97-
SimpleEmailPart subjectPart = SimpleEmailPart.builder()
98-
.data(subject)
99-
.charset(charset)
89+
Content content = Content.builder()
90+
.data(body)
10091
.build();
10192

102-
SimpleEmail simpleEmail = SimpleEmail.builder()
103-
.htmlPart(emailPart)
104-
.subject(subjectPart)
93+
Body messageBody = Body.builder()
94+
.text(content)
10595
.build();
10696

107-
EmailMessage emailMessage = EmailMessage.builder()
108-
.body(htmlBody)
109-
.fromAddress(senderAddress)
110-
.simpleEmail(simpleEmail)
97+
Message message = Message.builder()
98+
.body(messageBody)
99+
.subject(Content.builder().data(subject).build())
111100
.build();
112101

113-
DirectMessageConfiguration directMessageConfiguration = DirectMessageConfiguration.builder()
114-
.emailMessage(emailMessage)
102+
Destination destination = Destination.builder()
103+
.toAddresses(toAddress)
115104
.build();
116105

117-
MessageRequest messageRequest = MessageRequest.builder()
118-
.addresses(addressMap)
119-
.messageConfiguration(directMessageConfiguration)
106+
EmailContent emailContent = EmailContent.builder()
107+
.simple(message)
120108
.build();
121109

122-
SendMessagesRequest messagesRequest = SendMessagesRequest.builder()
123-
.applicationId(appId)
124-
.messageRequest(messageRequest)
110+
SendEmailRequest sendEmailRequest = SendEmailRequest.builder()
111+
.fromEmailAddress(senderAddress)
112+
.destination(destination)
113+
.content(emailContent)
125114
.build();
126115

127-
pinpoint.sendMessages(messagesRequest);
116+
pinpointEmailClient.sendEmail(sendEmailRequest);
117+
System.out.println("Message Sent");
128118

129119
} catch (PinpointException e) {
130120
System.err.println(e.awsErrorDetails().errorMessage());
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
//snippet-sourcedescription:[SendEmailMessageCC.java demonstrates how to send an email message which includes CC values.]
2+
//snippet-keyword:[AWS SDK for Java v2]
3+
//snippet-keyword:[Amazon Pinpoint]
4+
5+
/*
6+
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
7+
SPDX-License-Identifier: Apache-2.0
8+
*/
9+
10+
package com.example.pinpoint;
11+
12+
//snippet-start:[pinpoint.java2.send_emailcc.main]
13+
import software.amazon.awssdk.regions.Region;
14+
import software.amazon.awssdk.services.pinpoint.model.PinpointException;
15+
import software.amazon.awssdk.services.pinpointemail.PinpointEmailClient;
16+
import software.amazon.awssdk.services.pinpointemail.model.Body;
17+
import software.amazon.awssdk.services.pinpointemail.model.Content;
18+
import software.amazon.awssdk.services.pinpointemail.model.Destination;
19+
import software.amazon.awssdk.services.pinpointemail.model.EmailContent;
20+
import software.amazon.awssdk.services.pinpointemail.model.Message;
21+
import software.amazon.awssdk.services.pinpointemail.model.SendEmailRequest;
22+
import java.util.ArrayList;
23+
24+
/**
25+
* Before running this Java V2 code example, set up your development environment, including your credentials.
26+
*
27+
* For more information, see the following documentation topic:
28+
*
29+
* https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
30+
*/
31+
public class SendEmailMessageCC {
32+
33+
// The body of the email.
34+
static final String body = """
35+
Amazon Pinpoint test (AWS SDK for Java 2.x)
36+
37+
This email was sent through the Amazon Pinpoint Email API using the AWS SDK for Java 2.x
38+
39+
""";
40+
public static void main(String[] args) {
41+
final String usage = """
42+
43+
Usage: <subject> <senderAddress> <toAddress> <ccAddress>
44+
45+
Where:
46+
subject - The email subject to use.
47+
senderAddress - The from address. This address has to be verified in Amazon Pinpoint in the region you're using to send email\s
48+
toAddress - The to address. This address has to be verified in Amazon Pinpoint in the region you're using to send email\s
49+
ccAddress - The CC address.
50+
""";
51+
52+
if (args.length != 4) {
53+
System.out.println(usage);
54+
System.exit(1);
55+
}
56+
57+
String subject = args[0];
58+
String senderAddress = args[1];
59+
String toAddress = args[2];
60+
String ccAddress = args[3];
61+
62+
System.out.println("Sending a message");
63+
PinpointEmailClient pinpoint = PinpointEmailClient.builder()
64+
.region(Region.US_EAST_1)
65+
.build();
66+
67+
ArrayList<String> ccList = new ArrayList<>();
68+
ccList.add(ccAddress);
69+
sendEmail(pinpoint, subject, senderAddress, toAddress, ccList);
70+
pinpoint.close();
71+
}
72+
73+
public static void sendEmail(PinpointEmailClient pinpointEmailClient, String subject, String senderAddress, String toAddress, ArrayList<String> ccAddresses) {
74+
try {
75+
Content content = Content.builder()
76+
.data(body)
77+
.build();
78+
79+
Body messageBody = Body.builder()
80+
.text(content)
81+
.build();
82+
83+
Message message = Message.builder()
84+
.body(messageBody)
85+
.subject(Content.builder().data(subject).build())
86+
.build();
87+
88+
Destination destination = Destination.builder()
89+
.toAddresses(toAddress)
90+
.ccAddresses(ccAddresses)
91+
.build();
92+
93+
EmailContent emailContent = EmailContent.builder()
94+
.simple(message)
95+
.build();
96+
97+
SendEmailRequest sendEmailRequest = SendEmailRequest.builder()
98+
.fromEmailAddress(senderAddress)
99+
.destination(destination)
100+
.content(emailContent)
101+
.build();
102+
103+
pinpointEmailClient.sendEmail(sendEmailRequest);
104+
System.out.println("Message Sent");
105+
106+
} catch (PinpointException e) {
107+
// Handle exception
108+
e.printStackTrace();
109+
}
110+
}
111+
}
112+
//snippet-end:[pinpoint.java2.send_emailcc.main]

javav2/example_code/pinpoint/src/test/java/AmazonPinpointTest.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import software.amazon.awssdk.services.pinpoint.model.*;
1515
import java.io.*;
1616
import com.example.pinpoint.*;
17+
import software.amazon.awssdk.services.pinpointemail.PinpointEmailClient;
1718
import software.amazon.awssdk.services.s3.S3Client;
1819
import software.amazon.awssdk.services.pinpointsmsvoice.PinpointSmsVoiceClient;
1920
import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient;
@@ -29,6 +30,8 @@
2930
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
3031
public class AmazonPinpointTest {
3132
private static PinpointClient pinpoint;
33+
34+
private static PinpointEmailClient pinpointEmailClient;
3235
private static PinpointSmsVoiceClient voiceClient;
3336
private static S3Client s3Client;
3437
private static String appName = "";
@@ -58,6 +61,11 @@ public static void setUp() throws IOException {
5861
.credentialsProvider(EnvironmentVariableCredentialsProvider.create())
5962
.build();
6063

64+
pinpointEmailClient = PinpointEmailClient.builder()
65+
.region(Region.US_EAST_1)
66+
.credentialsProvider(EnvironmentVariableCredentialsProvider.create())
67+
.build();
68+
6169
s3Client = S3Client.builder()
6270
.region(Region.US_EAST_1)
6371
.credentialsProvider(EnvironmentVariableCredentialsProvider.create())
@@ -239,7 +247,7 @@ public void ExportEndpoints() {
239247
@Tag("IntegrationTest")
240248
@Order(14)
241249
public void SendEmailMessage() {
242-
assertDoesNotThrow(() -> SendEmailMessage.sendEmail(pinpoint, subject, existingApplicationId, senderAddress, toAddress));
250+
assertDoesNotThrow(() -> SendEmailMessage.sendEmail(pinpointEmailClient, subject, senderAddress, toAddress));
243251
System.out.println("SendEmailMessage test passed");
244252
}
245253

0 commit comments

Comments
 (0)