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

Personalized mails to multiple people using JavaMailSender

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

To : Abc,xyz

Mail Content:

Hi Abc, ...

我可以向多人发送邮件,但无法找到替换可用于收件人姓名的占位符的方法。

我觉得你想要实现的是有一些矛盾。根据您的问题,让我们想象不同的人会收到一封电子邮件,其中 "To:" 列表显示多个收件人,例如至:Abc,xyz。然而,他们每个人都有显示自己名字的电子邮件内容......

结果如下图所示:

我认为这只能在客户端(接收方)实现,而无法通过服务器端(发送方)的 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) ]直接方法。否则,每个收件人都会收到一份不属于 him/her 的副本(称呼是另一个收件人的名字)。