Je souhaite envoyer un message à plusieurs destinataires à l'aide de la méthode suivante ::
message.addRecipient(Message.RecipientType.TO, String arg1);
OR
message.setRecipients(Message.RecipientType.TO,String arg1);
Mais une confusion est que dans Second argument, Comment transmettre plusieurs adresses comme:
message.addRecipient(Message.RecipientType.CC, "[email protected],[email protected],[email protected]");
OR
message.addRecipient(Message.RecipientType.CC, "[email protected];[email protected];[email protected]");
Je peux envoyer un message en utilisant d'autres méthodes aussi, mais je veux savoir le but de la méthode ci-dessus . Si je ne peux pas l'utiliser (jusqu'à présent, je n'ai pas de réponse pour l'exigence ci-dessus), alors quelle est la nécessité de cette méthode être dans la messagerie API.
Si vous appelez addRecipient
plusieurs fois, le destinataire indiqué sera ajouté à la liste des destinataires de l'heure indiqué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 en même temps, vous devez utiliser setRecipients
ou addRecipients
et lui fournir un tableau d'adresses.
Address[] cc = new Address[] {InternetAddress.parse("[email protected]"),
InternetAddress.parse("[email protected]"),
InternetAddress.parse("[email protected]")};
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("[email protected],[email protected],[email protected]"));
Salut à tous ce code fonctionne pour moi s'il vous plaît essayer avec cela pour envoyer un 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);
Utilisez simplement la méthode message.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 bien avec une seule adresse aussi
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]"));
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));
Donc… cela a pris plusieurs mois, mais quand même… Vous pouvez envoyer un courrier électronique à plusieurs destinataires en utilisant les séparateurs ',' et
message.setRecipients(Message.RecipientType.CC, "[email protected],[email protected],[email protected]");
est ok Au moins dans JavaMail 1.4.5
InternetAddress.Parse 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]";
Si strict est vrai, beaucoup (mais pas toutes) des règles de syntaxe RFC822 pour les courriels sont appliquées.
msg.setRecipients(Message.RecipientType.CC,
InternetAddress.parse(to, true));
Parse virgule/liste séparée par des espaces. Couper un peu de mou. Nous autorisons également la liste séparée par espaces, ainsi que les formats de courrier électronique non valides.
msg.setRecipients(Message.RecipientType.BCC,
InternetAddress.parse(toCommaAndSpaces, false));
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];
Si vous voulez envoyer en tant que Cc en utilisant MimeMessageHelper
List<String> emails= new ArrayList();
email.add("email1");
email.add("email2");
for (String string : emails) {
message.addCc(string);
}
Même chose que vous pouvez utiliser pour ajouter plusieurs destinataires.
Format d'adresse de messagerie Internet ( RFC 822
)
(,)
comma séquence d'adresses séparées
javax.mail - 1.4.7 parse( String[] )
n'est pas autorisé. Nous devons donc donner une séquence d'adresses séparées par des virgules dans InternetAddress
objects. Les adresses doivent suivre la syntaxe RFC822.
String toAddress = "[email protected],[email protected]";
InternetAddress.parse( toAddress );
(;)
séquence d'adresses séparées par des points-virgules « Si le groupe de la liste d'adresses est fourni avec un séparateur sous la forme ";" convertissez ensuite en tableau String en utilisant la méthode split pour utiliser la fonction suivante.
String[] addressList = { "[email protected]", "[email protected]" };
String toGroup = "[email protected];[email protected]";
String[] addressList2 = toGroup.split(";");
setRecipients(message, addressList);
public static void setRecipients(Message message, Object addresslist) throws AddressException, MessagingException {
if ( addresslist instanceof String ) { // CharSequence
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse( (String) addresslist ));
} else if ( addresslist instanceof String[] ) { // String[] « Array with collection of Strings/
String[] toAddressList = (String[]) addresslist;
InternetAddress[] mailAddress_TO = new InternetAddress[ toAddressList.length ];
for (int i = 0; i < toAddressList.length; i++) {
mailAddress_TO[i] = new InternetAddress( toAddressList[i] );
}
message.setRecipients(Message.RecipientType.TO, mailAddress_TO);
}
}
Exemple complet:
public static Properties getMailProperties( boolean addExteraProps ) {
Properties props = new Properties();
props.put("mail.transport.protocol", MAIL_TRNSPORT_PROTOCOL);
props.put("mail.smtp.Host", MAIL_SERVER_NAME);
props.put("mail.smtp.port", MAIL_PORT);
// Sending Email to the GMail SMTP server requires authentication and SSL.
props.put("mail.smtp.auth", true);
if( ENCRYPTION_METHOD.equals("STARTTLS") ) {
props.put("mail.smtp.starttls.enable", true);
props.put("mail.smtp.socketFactory.port", SMTP_STARTTLS_PORT); // 587
} else {
props.put("mail.smtps.ssl.enable", true);
props.put("mail.smtp.socketFactory.port", SMTP_SSL_PORT); // 465
}
props.put("mail.smtp.socketFactory", SOCKETFACTORY_CLASS);
return props;
}
public static boolean sendMail(String subject, String contentType, String msg, Object recipients) throws Exception {
Properties props = getMailProperties( false );
Session mailSession = Session.getInstance(props, null);
mailSession.setDebug(true);
Message message = new MimeMessage( mailSession );
message.setFrom( new InternetAddress( USER_NAME ) );
setRecipients(message, recipients);
message.setSubject( subject );
String htmlData = "<h1>This is actual message embedded in HTML tags</h1>";
message.setContent( htmlData, "text/html");
Transport transport = mailSession.getTransport( MAIL_TRNSPORT_PROTOCOL );
transport.connect(MAIL_SERVER_NAME, Integer.valueOf(MAIL_PORT), USER_NAME, PASSWORD);
message.saveChanges(); // don't forget this
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
Utilisation d'Appache
SimpleEmail
-commons-email-1.3.1
Exemple: email.addTo( addressList );
public static void sendSimpleMail() throws Exception {
Email email = new SimpleEmail();
email.setSmtpPort(587);
DefaultAuthenticator defaultAuthenticator = new DefaultAuthenticator( USER_NAME, PASSWORD );
email.setAuthenticator( defaultAuthenticator );
email.setDebug(false);
email.setHostName( MAIL_SERVER_NAME );
email.setFrom( USER_NAME );
email.setSubject("Hi");
email.setMsg("This is a test mail ... :-)");
//email.addTo( "[email protected]", "Yash" );
String[] toAddressList = { "[email protected]", "[email protected]" }
email.addTo( addressList );
email.setTLS(true);
email.setStartTLSEnabled( true );
email.send();
System.out.println("Mail sent!");
}
Vous pouvez utiliser la méthode n-numéro de destinataire 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);
moyen facile de faire
String[] listofIDS={"[email protected]","[email protected]"};
for(String cc:listofIDS){
message.addRecipients(Message.RecipientType.CC,InternetAddress.parse(cc));
}