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, "[email protected],[email protected],[email protected]");
OU
message.addRecipient(Message.RecipientType.CC, "[email protected];[email protected];[email protected]");
Je peux également envoyer un message en utilisant d'autres méthodes, mais je veux connaître le but de la méthode ci-dessus. Si je ne peux pas l'utiliser(car jusqu'à présent, je n'ai pas de réponse à l'exigence ci-dessus), alors quel est le besoin pour que cette méthode soit dans l'API mail.
10 answers
Si vous invoquez addRecipient
plusieurs fois, il ajoutera le destinataire donné à la liste des destinataires de l'heure donnée (TO, CC, BCC)
Par exemple:
message.addRecipient(Message.RecipientType.CC, InternetAddress.parse("[email protected]"));
message.addRecipient(Message.RecipientType.CC, InternetAddress.parse("[email protected]"));
message.addRecipient(Message.RecipientType.CC, InternetAddress.parse("[email protected]"));
Ajoutera les 3 adresses à CC
Si vous souhaitez ajouter toutes les adresses à la fois, vous devez utiliser setRecipients
ou addRecipients
, et de lui fournir un tableau d'adresses de
Address[] cc = new Address[] {InternetAddress.parse("[email protected]"),
InternetAddress.parse("[email protected]"),
InternetAddress.parse("[email protected]")};
message.addRecipients(Message.RecipientType.CC, cc);
Vous pouvez aussi utiliser InternetAddress.parse
pour analyser une liste d'adresses
message.addRecipients(Message.RecipientType.CC,
InternetAddress.parse("[email protected],[email protected],[email protected]"));
Salut à tous ce code fonctionne pour moi, veuillez essayer avec cela pour envoyer du courrier à plusieurs destinataires
private String recipient = "[email protected] ,[email protected] ";
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);
Essayez de cette façon:
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]"));
String address = "[email protected],[email protected]";
InternetAddress[] iAdressArray = InternetAddress.parse(address);
message.setRecipients(Message.RecipientType.CC, iAdressArray);
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));
Utilisez simplement le message de méthode.setRecipients avec plusieurs adresses séparées par des virgules:
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected],[email protected],[email protected]"));
message.setRecipients(Message.RecipientType.CC, InternetAddress.parse("[email protected],[email protected],[email protected]"));
Fonctionne très bien avec une seule adresse aussi
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]"));
Adresse Internet.Analyser est va être votre ami! Voir l'exemple travaillé ci-dessous:
String to = "[email protected], [email protected], [email protected]";
String toCommaAndSpaces = "[email protected] [email protected], [email protected]";
- Analyser une liste d'adresses e-mail séparées par des virgules. Il faut être strict. Nécessite une liste séparée par des virgules.
-
Si strict est vrai, beaucoup (mais pas toutes) des règles de syntaxe RFC822 pour les e-mails sont appliquées.
msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(to, true));
-
Analyser la liste séparée par des virgules/espaces. Coupe un peu de mou. Nous autorisons également la liste des espaces séparés, ainsi que les formats de courrier électronique invalides.
msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(toCommaAndSpaces, false));
Donc ... cela a pris plusieurs mois, mais quand même ... Vous pouvez envoyer des e-mails à plusieurs destinataires en utilisant le', ' comme séparateur et
message.setRecipients(Message.RecipientType.CC, "[email protected],[email protected],[email protected]");
Est ok. Au moins dans JavaMail 1.4.5
String[] mailAddressTo = new String[3];
mailAddressTo[0] = emailId_1;
mailAddressTo[1] = emailId_2;
mailAddressTo[2] = "[email protected]";
InternetAddress[] mailAddress_TO = new InternetAddress[mailAddressTo.length];
for (int i = 0; i < mailAddressTo.length; i++)
{
mailAddress_TO[i] = new InternetAddress(mailAddressTo[i]);
}
message.addRecipients(Message.RecipientType.TO, mailAddress_TO);ress_TO = new InternetAddress[mailAddressTo.length];
Vous pouvez utiliser n-nombre de bénéficiaires méthode ci-dessous:
String to[] = {"[email protected]"} //Mail id you want to send;
InternetAddress[] address = new InternetAddress[to.length];
for(int i =0; i< to.length; i++)
{
address[i] = new InternetAddress(to[i]);
}
msg.setRecipients(Message.RecipientType.TO, address);
Si vous voulez envoyer en Cc en utilisant MimeMessageHelper
List<String> emails= new ArrayList();
email.add("email1");
email.add("email2");
for (String string : emails) {
message.addCc(string);
}
Même vous pouvez utiliser pour ajouter plusieurs destinataires.