首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用使用sesv2的模板发送电子邮件

如何使用使用sesv2的模板发送电子邮件
EN

Stack Overflow用户
提问于 2022-08-03 17:18:06
回答 1查看 498关注 0票数 0

我试图使用AWS v2 2.17.235的模板发送电子邮件。我已经创建了模板,并在这里阅读了至少20页的文档。在6小时的时间里,我没有找到一个例子,也没有找到任何有用的东西,检查文档,多次阅读每一篇文章。

我可以发送其他电子邮件只是很好,但我想使用模板前进。再次,我已经创建了模板,我可以得到模板,等等。所有这些都没有帮助,我需要使用我创建的模板发送电子邮件。下面是我的代码

代码语言:javascript
运行
复制
        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控制台中发送的数量。所以,根据这个指标,我想它在技术上确实发送了,或者至少它试图发送?
  • 我有反弹/投诉设置与SQS/SNS堆栈,仍然是空后,电子邮件已发送。

老实说,我现在甚至不知道该怎么做。没有失败,电子邮件从来没有收到,我发送的电子邮件增加了我在AWS控制台发送的数量。我没有收到这57封邮件中的一封

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-03 18:47:46

这是你的解决办法。首先,按照SES DEV指南中的主题创建一个模板:

创建电子邮件模板

随后,我创建了一个模板,如下所示:

下面是您使用此模板发送电子邮件的Java V2代码。注意,您只需要在创建模板对象时引用模板名。

更新

WHen发送带有模板的电子邮件-您必须指定模板中使用的所有变量。在SES DEV指南中创建的示例模板使用了2个变量:

代码语言:javascript
运行
复制
{
  "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代码:

代码语言:javascript
运行
复制
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);
                }
        }
    }

在我运行这段代码之后--我收到了基于模板的电子邮件:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73225343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档