使用JavaMailSender向多个人发送个性化邮件

时间:2019-10-01 08:38:59

标签: java javamail

我想使用javamailsender以个性化的称呼向多个人发送邮件。

  

收件人:Abc,xyz

     

邮件内容:

     

嗨Abc,...

我能够将邮件发送给多个人,但是无法找到一种方法来替换可用于收件人姓名的占位符。

1 个答案:

答案 0 :(得分:3)

我认为您想要实现的目标存在一些矛盾。根据您的问题,假设其他人会收到一封电子邮件,其中包含“收件人:”列表,其中显示了多个收件人,例如至:Abc,xyz。但是,他们每个人的电子邮件内容都显示了自己的姓名...

结果将如下图所示:

enter image description here

我认为这只能在客户端(接收方)实现,而不能通过服务器(发送方)上的API实现。

如果您确实希望在发件人一方拥有某些控制权,那么您没有其他选择,但是只能发送几次电子邮件,具体取决于您想要多少收件人。

以下是供参考的示例:

private JavaMailSender emailSender;

public void sendSimpleMessage() {

    String[] multipleRecepients = new String[] {"ABC", "xyz"};
    String subject = " This is Email subject";

    String text = "Hi {0} ,\r\n Nice to reach you through email.";
    MessageFormat mf = new MessageFormat(text);


    for (int i = 0 ; i < multipleRecepients.length; i++) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo(multipleRecepients[i]);
        message.setSubject(subject); 
        message.setText(mf.format(new Object[] {multipleRecepients[i]}));
        emailSender.send(message);
    }

}

备注:

对于上述示例代码,请勿尝试将multipleRecepients数组放入setTo(...)[即message.setTo(multipleRecepients)]方法直接。否则,每个收件人都会收到不属于他/她的副本(称呼是另一个收件人的名字)。