如何使用 AWS SDK 发送带有发件人姓名的电子邮件?

克沙夫拉姆·库杜瓦

我目前正在使用 AWS SDK 发送邮件:

  // from: [email protected]
  public void sendMail(String from, String to, String subject, String htmlBody) {
    LOGGER.info(String.format("Sending Mail from: %s, to: %s, with subject: %s", from, to, subject));
    try {
      AWSCredentials credentials = new BasicAWSCredentials(awsAccessKey, awsSecret);
      AmazonSimpleEmailService client = AmazonSimpleEmailServiceClientBuilder.standard()
              .withRegion(Regions.AP_SOUTH_1).withCredentials(new AWSStaticCredentialsProvider(credentials))
              .build();

      SendEmailRequest request = new SendEmailRequest().withDestination(new Destination().withToAddresses(to))
              .withMessage(new Message()
                      .withBody(new Body().withHtml(new Content().withCharset("UTF-8").withData(htmlBody)))
                      .withSubject(new Content().withCharset("UTF-8").withData(subject)))
              .withSource(from);

      client.sendEmail(request);
    } catch (Exception e) {
      LOGGER.error(String.format("Error while sending email: %s", e.getMessage()));
      throw new IllegalArgumentException(MessageEnum.FAILED_TO_SEND_AN_EMAIL.name());
    }
  }

该方法工作正常,但电子邮件发送为: 当前版本

但我希望以发件人姓名发送电子邮件,以便它可以显示为: 预期版本

有没有人知道如何发送包含发件人姓名的电子邮件?任何帮助表示赞赏。

伊万·瓦西列维奇

如果您查看文档,SendEmailRequest您会发现它支持在电子邮件中定义友好名称的标准方式:

source - 发送电子邮件的电子邮件地址。此电子邮件地址必须通过 Amazon SES 单独验证,或来自已通过 Amazon SES 验证的域。有关验证身份的信息,请参阅 Amazon SES 开发人员指南。如果您代表另一个用户发送并且已被发送授权策略允许这样做,则您还必须指定 SourceArn 参数。有关发送授权的更多信息,请参阅 Amazon SES 开发人员指南。Amazon SES 不支持 SMTPUTF8 扩展,如 RFC6531 中所述。因此,源电子邮件地址的本地部分(@ 符号之前的电子邮件地址部分)可能仅包含 7 位 ASCII 字符。如果地址的域部分(@ 符号之后的部分)包含非 ASCII 字符,它们必须使用 Punycode 进行编码,如 RFC3492 中所述。发件人名称(也称为友好名称)可能包含非 ASCII 字符。这些字符必须使用 MIME 编码字语法进行编码,如 RFC 2047 中所述。MIME 编码字语法使用以下形式:=?charset?encoding?encoded-text?=。

因此该字符串应如下所示: John Doe <[email protected]>

InternetAddress可以用于此,但您需要注意SendEmailRequest具有 forfrom参数的编码限制

request.withSource((new InternetAddress("[email protected]", "Your Name")).toString());

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用NodeJs aws-sdk更改电子邮件的发件人名称

使用python发送带有发件人和收件人标头的电子邮件

如何在已知收件人但发件人更改的情况下发送带有颤动的电子邮件?

AWS SES SDK发送带有附件的电子邮件

如何在使用Outlook时使用yahoo帐户发送电子邮件,以便发件人姓名不仅是我的电子邮件地址

如何从联系表中获取电子邮件发件人的姓名-Laravel Mail

Laravel如何配置发件人姓名而不是电子邮件地址

如何在电子邮件正文中输入发件人姓名

如何从Gitlab电子邮件中更改发件人姓名

如何通过mime-mail-ses发送具有正确的“发件人”名称的电子邮件?

使用自定义发件人:字段发送电子邮件

未在使用JavaMail API发送的电子邮件中设置发件人

使用mail命令发送电子邮件时指定发件人

设置“发件人”时,msmtp无法使用php发送电子邮件

如何跟踪电子邮件发件人的实际IP?

如何获得发件人的电子邮件地址?

如何欺骗发件人电子邮件地址?

使用 aws ses sdk(Java) 从亚太地区(孟买)发送电子邮件

如何使用mailx发送电子邮件,以便“发件人”和“收件人”正确显示在电子邮件中?

使用 MS Exchange Graph API Java SDK 发送带有投票按钮的交换电子邮件

带有多个帐户设置的Outlook 2016在回复或转发邮件时使用错误的“发件人”电子邮件

如果“收件人”和“发件人”标头是垃圾邮件发送者的电子邮件地址,我如何收到这封电子邮件?

作为发件人,使用 API 或标头,是否可以检测电子邮件是否是使用 Gmail 的“计划发送”发送的?

使用Amazon AWS SMTP发送带有附件的电子邮件

如何将Google脚本发件人电子邮件发送到[email protected]

PHPMailer使用SMTP身份验证发送电子邮件,但Gmail仍声称无法验证发件人

使用另一个“发件人”标头从laravel发送电子邮件

Cognos在启动时会将测试电子邮件发送到通知默认发件人。如何停止或更改此电子邮件?

TypeError:在node.js中使用aws-sdk发送电子邮件时,密钥必须是缓冲区