98 votes

Envoyer du courrier à plusieurs destinataires en Java

Je veux envoyer un message à plusieurs destinataires en utilisant la méthode suivante :

message.addRecipient(Message.RecipientType.TO, String arg1);

Ou

message.setRecipients(Message.RecipientType.TO,String arg1);

Mais une confusion est que dans le deuxième argument, comment passer plusieurs adresses comme :

message.addRecipient(Message.RecipientType.CC, "abc@abc.com,abc@def.com,ghi@abc.com");

Ou message.addRecipient(Message.RecipientType.CC, "abc@abc.com;abc@def.com;ghi@abc.com") ;

Je peux aussi envoyer un message en utilisant d'autres méthodes, mais je veux savoir à quoi sert la méthode ci-dessus.

Si je ne peux pas l'utiliser (car jusqu'à présent, je n'ai pas obtenu de réponse à cette exigence), pourquoi cette méthode doit-elle être intégrée à l'API de messagerie ?

132voto

Aviram Segal Points 6055

Si vous invoquez addRecipient plusieurs fois, il ajoutera le destinataire donné à la liste des destinataires de l'heure donnée (TO, CC et BCC ).

Par exemple :

message.addRecipient(Message.RecipientType.CC, InternetAddress.parse("abc@abc.com"));
message.addRecipient(Message.RecipientType.CC, InternetAddress.parse("abc@def.com"));
message.addRecipient(Message.RecipientType.CC, InternetAddress.parse("ghi@abc.com"));

Il ajoutera les trois adresses à CC.


Si vous souhaitez ajouter toutes les adresses en une seule fois, vous devez utiliser la fonction setRecipients o addRecipients et lui fournir un tableau d'adresses

Address[] cc = new Address[] {InternetAddress.parse("abc@abc.com"),
                               InternetAddress.parse("abc@def.com"),
                               InternetAddress.parse("ghi@abc.com")};
message.addRecipients(Message.RecipientType.CC, cc);

Vous pouvez également utiliser InternetAddress.parse pour analyser une liste d'adresses :

message.addRecipients(Message.RecipientType.CC,
                      InternetAddress.parse("abc@abc.com,abc@def.com,ghi@abc.com"));

29voto

G.K Points 301

Ce code fonctionne pour moi. Veuillez essayer avec ceci pour envoyer des messages à plusieurs destinataires.

private String recipient = "yamabs@gmail.com ,priya@gmail.com ";
String[] recipientList = recipient.split(",");
InternetAddress[] recipientAddress = new InternetAddress[recipientList.length];
int counter = 0;
for (String recipient : recipientList) {
    recipientAddress[counter] = new InternetAddress(recipient.trim());
    counter++;
}
message.setRecipients(Message.RecipientType.TO, recipientAddress);

19voto

Leyo Points 171

Il suffit d'utiliser la méthode message.setRecipients avec plusieurs adresses séparées par des virgules :

message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("abc@abc.com,abc@def.com,ghi@abc.com"));

message.setRecipients(Message.RecipientType.CC, InternetAddress.parse("abc@abc.com,abc@def.com,ghi@abc.com"));

Cela fonctionne bien aussi avec une seule adresse :

message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("abc@abc.com"));

11voto

ThePCWizard Points 1700

Vous pouvez avoir plusieurs adresses séparées par une virgule

if (cc.indexOf(',') > 0)
    message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));   
else
    message.setRecipient(Message.RecipientType.CC, new InternetAddress(cc));

11voto

user3734721 Points 121

Essayez de cette façon :

message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("mail3@mail.com"));
String address = "mail@mail.com,mail2@mail.com";
InternetAddress[] iAdressArray = InternetAddress.parse(address);
message.setRecipients(Message.RecipientType.CC, iAdressArray);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X