我试图使用AWS v2 2.17.235的模板发送电子邮件。我已经创建了模板,并在这里阅读了至少20页的文档。在6小时的时间里,我没有找到一个例子,也没有找到任何有用的东西,检查文档,多次阅读每一篇文章。
我可以发送其他电子邮件只是很好,但我想使用模板前进。再次,我已经创建了模板,我可以得到模板,等等。所有这些都没有帮助,我需要使用我创建的模板发送电子邮件。下面是我的代码
try (
SesV2Client client = SesV2Client.builder()
.region(Region.US_EAST_1)
.build()) {
Template template = Template.builder().templateName("SiteUpdateTemplate").templateData(TEMPLATE_DATA).build();
EmailContent emailContent = EmailContent.builder().template(Template.builder().templateName("SiteUpdateTemplate").templateData(TEMPLATE_DATA).build()).build();
GetEmailTemplateRequest getEmailTemplateRequest = GetEmailTemplateRequest.builder().templateName("SiteUpdateTemplate").build();
GetEmailTemplateResponse getEmailTemplateResponse = client.getEmailTemplate(getEmailTemplateRequest);
SendEmailRequest request = SendEmailRequest.builder()
.configurationSetName(CONFIGSET)
.fromEmailAddress(FROM)
.listManagementOptions(ListManagementOptions.builder().contactListName(CONTACT_LIST).topicName(TOPIC_SITE_UPDATES).build())
.fromEmailAddressIdentityArn(IDENTITYARN)
.feedbackForwardingEmailAddress(FROM)
.feedbackForwardingEmailAddressIdentityArn(IDENTITYARN)
.destination(Destination.builder().toAddresses("test@gmail.com").build())
//
.content(emailContent)
有人能给我举个例子或者指向一个有我需要的信息的地方吗?
编辑
在我看来,这似乎是唯一可行的方法,如果我能以某种方式获得模板的ARN,只有没有办法获得我所知道的模板的ARN。
编辑2
我需要更具体,所以我要添加一些额外的细节。我想,基于我所看到的,我可能提前得出了一个错误的结论。当我使用模板发送电子邮件时,
老实说,我现在甚至不知道该怎么做。没有失败,电子邮件从来没有收到,我发送的电子邮件增加了我在AWS控制台发送的数量。我没有收到这57封邮件中的一封
发布于 2022-08-03 18:47:46
这是你的解决办法。首先,按照SES DEV指南中的主题创建一个模板:
随后,我创建了一个模板,如下所示:
下面是您使用此模板发送电子邮件的Java V2代码。注意,您只需要在创建模板对象时引用模板名。
更新
WHen发送带有模板的电子邮件-您必须指定模板中使用的所有变量。在SES DEV指南中创建的示例模板使用了2个变量:
{
"Template": {
"TemplateName": "MyTemplate",
"SubjectPart": "Greetings, {{name}}!",
"HtmlPart": "<h1>Hello {{name}},</h1><p>Your favorite animal is {{favoriteanimal}}.</p>",
"TextPart": "Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}."
}
}
这意味着在定义favoriteanimal模板对象时,需要在代码中同时指定名称和。如果您没有指定模板中的所有变量- SES不发送电子邮件,在这里讨论。
https://aws.amazon.com/premiumsupport/knowledge-center/ses-resolve-emails-not-delivered/
Java代码:
package com.example.sesv2;
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sesv2.model.Destination;
import software.amazon.awssdk.services.sesv2.model.EmailContent;
import software.amazon.awssdk.services.sesv2.model.SendEmailRequest;
import software.amazon.awssdk.services.sesv2.model.SesV2Exception;
import software.amazon.awssdk.services.sesv2.SesV2Client;
import software.amazon.awssdk.services.sesv2.model.Template;
/**
* Before running this AWS SDK for Java (v2) example, set up your development environment, including your credentials.
*
* For more information, see the following documentation topic:
*
* https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
*/
public class SendEmailTemplate {
public static void main(String[] args) {
final String usage = "\n" +
"Usage:\n" +
" <sender> <recipient> <subject> \n\n" +
"Where:\n" +
" template - the name of the email template" +
" sender - An email address that represents the sender. \n"+
" recipient - An email address that represents the recipient. \n" ;
if (args.length != 3) {
System.out.println(usage);
System.exit(1);
}
String templateName = "MyTemplate";
String sender = "<Enter sender>" ; //args[0];
String recipient = "<Enter recipient>" ; // ; args[1];
Region region = Region.US_EAST_1;
SesV2Client sesv2Client = SesV2Client.builder()
.region(region)
.credentialsProvider(ProfileCredentialsProvider.create())
.build();
send(sesv2Client, sender, recipient, templateName);
}
// snippet-start:[ses.java2.sendmessage.sesv2.main]
public static void send(SesV2Client client,
String sender,
String recipient,
String templateName
){
Destination destination = Destination.builder()
.toAddresses(recipient)
.build();
Template myTemplate = Template.builder()
.templateName(templateName)
.templateData("{\n" +
" \"name\": \"Jason\"\n," +
" \"favoriteanimal\": \"Cat\"\n" +
"}")
.build();
EmailContent emailContent = EmailContent.builder()
.template(myTemplate)
.build();
SendEmailRequest emailRequest = SendEmailRequest.builder()
.destination(destination)
.content(emailContent)
.fromEmailAddress(sender)
.build();
try {
System.out.println("Attempting to send an email through Amazon SES " + "using the AWS SDK for Java...");
client.sendEmail(emailRequest);
System.out.println("email based on a template was sent");
} catch (SesV2Exception e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
}
}
在我运行这段代码之后--我收到了基于模板的电子邮件:
https://stackoverflow.com/questions/73225343
复制相似问题