Ich möchte eine Nachricht mit der folgenden Methode an mehrere Empfänger senden:
message.addRecipient(Message.RecipientType.TO, String arg1);
ODER
message.setRecipients(Message.RecipientType.TO,String arg1);
Eine Verwirrung ist jedoch, dass im zweiten Streit, wie mehrere Adressen übergeben werden sollen, wie:
message.addRecipient(Message.RecipientType.CC, "[email protected],[email protected],[email protected]");
ODER
message.addRecipient(Message.RecipientType.CC, "[email protected];[email protected];[email protected]");
Ich kann eine Nachricht auch mit alternativen Methoden senden, möchte aber den Zweck der obigen Methode kennen. Wenn ich es nicht verwenden kann (da ich bis jetzt keine Antwort auf die oben genannte Anforderung habe), was ist dann die Notwendigkeit für diese Methode, in der Mail-API zu sein.
addRecipient
/setRecipient
mit einer einzelnen Adresse oderaddRecipients
/setRecipients
mit einem Array von Adressenjavax.mail
Version 1.5.5 hatInternetAddress.parse()
diese Rückgabe nichtString
. Alle Analysemethoden geben ein Array zurück und sind daher nicht für geeignetaddRecipient
. Gibt es andere Versionen mit einer solchen Methode?javax.mail
Version1.5.5
oder höher haben, bei der Sie keineInternetAddress.parse()
Single zurückgeben,InternetAddress
sondern nur die, die zurückgibtInternetAddress[]
(Array), können Sie die erste Lösung mit... message.addRecipient(Message.RecipientType.CC, InternetAddress.parse("[email protected]")[0]); ...
([0] ist dort wichtig) verwenden . In der zweiten Lösung:... new Address[] {InternetAddress.parse("[email protected]")[0], ...
Die dritte Lösung sollte ohne Änderungen funktionieren. Natürlich sollte [0] am Ende auf alle Adressen in jeder Lösung angewendet werden.Hallo allerseits, dieser Code funktioniert für mich. Bitte versuchen Sie es damit, um E-Mails an mehrere Empfänger zu senden
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);
quelle
Versuchen Sie Folgendes:
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);
quelle
Verwenden Sie einfach die Methode message.setRecipients mit mehreren durch Kommas getrennten Adressen:
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]"));
funktioniert auch mit nur einer Adresse
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]"));
quelle
Sie können mehrere Adressen durch Komma trennen
if (cc.indexOf(',') > 0) message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc)); else message.setRecipient(Message.RecipientType.CC, new InternetAddress(cc));
quelle
InternetAddress.parse()
für beide verwenden? (Und ja, ich weiß, dass dies 4 Jahre alt ist)setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
sollte funktionieren, auch wenn es nur 1 Adresse gibt. Es ist nur eine persönliche Art zu programmieren, um die Lesbarkeit zu verbessern.Also ... es hat viele Monate gedauert, aber trotzdem ... Sie können E-Mails an mehrere Empfänger senden, indem Sie das ',' als Trennzeichen und verwenden
message.setRecipients(Message.RecipientType.CC, "[email protected],[email protected],[email protected]");
ist in Ordnung. Zumindest in JavaMail 1.4.5
quelle
InternetAddress.Parse wird dein Freund sein! Siehe das Beispiel unten:
String to = "[email protected], [email protected], [email protected]"; String toCommaAndSpaces = "[email protected] [email protected], [email protected]";
Wenn strict wahr ist, werden viele (aber nicht alle) der RFC822- Syntaxregeln für E-Mails erzwungen.
msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(to, true));
Analysieren Sie die durch Kommas / Leerzeichen getrennte Liste. Schneiden Sie etwas locker. Wir erlauben auch eine durch Leerzeichen getrennte Liste sowie ungültige E-Mail-Formate.
msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(toCommaAndSpaces, false));
quelle
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];
quelle
Internet-E-Mail-Adressformat (
RFC 822
)javax.mail - 1.4.7
parse( String[] )
ist nicht erlaubt. Wir müssen alsoInternetAddress
Objekten eine durch Kommas getrennte Folge von Adressen geben . Adressen müssen der RFC822-Syntax folgen.String toAddress = "[email protected],[email protected]"; InternetAddress.parse( toAddress );
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); } }
Vollständiges Beispiel:
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(); }
Beispiel:
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!"); }
quelle
Sie können die folgende n-Nummer des Empfängers verwenden:
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);
quelle
Wenn Sie mit MimeMessageHelper als Cc senden möchten
List<String> emails= new ArrayList(); email.add("email1"); email.add("email2"); for (String string : emails) { message.addCc(string); }
Gleiches können Sie verwenden, um mehrere Empfänger hinzuzufügen.
quelle
Einfacher Weg zu tun
String[] listofIDS={"[email protected]","[email protected]"}; for(String cc:listofIDS) { message.addRecipients(Message.RecipientType.CC,InternetAddress.parse(cc)); }
quelle