Я хочу отправить сообщение нескольким получателям, используя следующий метод:
message.addRecipient(Message.RecipientType.TO, String arg1);
ИЛИ ЖЕ
message.setRecipients(Message.RecipientType.TO,String arg1);
Но одна путаница заключается в том, что во втором аргументе, как передать несколько адресов, например:
message.addRecipient(Message.RecipientType.CC, "abc@abc.com,abc@def.com,ghi@abc.com");
ИЛИ ЖЕ
message.addRecipient(Message.RecipientType.CC, "abc@abc.com;abc@def.com;ghi@abc.com");
Я также могу отправить сообщение, используя альтернативные методы, но хочу знать цель вышеупомянутого метода. Если я не могу его использовать (поскольку до сих пор у меня нет ответа на указанное выше требование), то зачем этот метод должен быть в почтовом API.
источник
addRecipient
/setRecipient
с одним адресом, либоaddRecipients
/setRecipients
с массивом адресовjavax.mail
версия 1.5.5 не имеетInternetAddress.parse()
такой отдачиString
. Все методы синтаксического анализа возвращают массив и поэтому не подходят дляaddRecipient
. Есть ли другие версии, в которых есть такой метод?javax.mail
версия1.5.5
или выше, когда у вас ее нетInternetAddress.parse()
, она возвращает единственный,InternetAddress
но только тот, который возвращаетInternetAddress[]
(массив), вы можете использовать первое решение, имеющее... message.addRecipient(Message.RecipientType.CC, InternetAddress.parse("abc@def.com")[0]); ...
([0] здесь важно) . Во втором решении:... new Address[] {InternetAddress.parse("abc@abc.com")[0], ...
Третье решение должно работать без изменений. Конечно, [0] в конце должен применяться ко всем адресам в каждом решении.Привет всем, этот код работает для меня, попробуйте использовать его для отправки почты нескольким получателям
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);
источник
Попробуйте так:
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);
источник
Просто используйте метод message.setRecipients с несколькими адресами, разделенными запятыми:
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"));
отлично работает только с одним адресом
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("abc@abc.com"));
источник
У вас может быть несколько адресов, разделенных запятой
if (cc.indexOf(',') > 0) message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc)); else message.setRecipient(Message.RecipientType.CC, new InternetAddress(cc));
источник
InternetAddress.parse()
оба варианта? (И да, я знаю, что этому 4 года)setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
должен работать, даже если есть только 1 адрес. Это просто личный способ программирования для повышения удобочитаемости.Итак ... это заняло много месяцев, но все же ... Вы можете отправлять электронную почту нескольким получателям, используя ',' в качестве разделителя и
message.setRecipients(Message.RecipientType.CC, "abc@abc.com,abc@def.com,ghi@abc.com");
в порядке. По крайней мере, в JavaMail 1.4.5
источник
InternetAddress.Parse станет вашим другом! См. Рабочий пример ниже:
String to = "med@joe.com, maz@frank.com, jezz@jam.com"; String toCommaAndSpaces = "med@joe.com maz@frank.com, jezz@jam.com";
Если strict истинно, применяются многие (но не все) синтаксические правила RFC822 для электронных писем.
msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(to, true));
Разобрать список, разделенный запятыми / пробелами. Немного расслабиться. Мы также разрешаем список, разделенный пробелами, а также недопустимые форматы электронной почты.
msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(toCommaAndSpaces, false));
источник
String[] mailAddressTo = new String[3]; mailAddressTo[0] = emailId_1; mailAddressTo[1] = emailId_2; mailAddressTo[2] = "xyz@gmail.com"; 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];
источник
Формат адреса электронной почты в Интернете (
RFC 822
)javax.mail - 1.4.7
parse( String[] )
не допускается. Таким образом, мы должны указать последовательность адресов вInternetAddress
объектах через запятую . Адреса должны соответствовать синтаксису RFC822.String toAddress = "mail@mail.com,mail2@mail.com"; InternetAddress.parse( toAddress );
String[] addressList = { "mail@mail.com", "mail2@mail.com" }; String toGroup = "mail@mail.com;mail2@mail.com"; 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); } }
Полный пример:
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(); }
Пример:
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( "mail@mail.com", "Yash" ); String[] toAddressList = { "mail@mail.com", "mail2@mail.com" } email.addTo( addressList ); email.setTLS(true); email.setStartTLSEnabled( true ); email.send(); System.out.println("Mail sent!"); }
источник
Вы можете использовать метод n-number получателя ниже:
String to[] = {"a@gmail.com"} //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);
источник
Если вы хотите отправить как Cc, используя MimeMessageHelper
List<String> emails= new ArrayList(); email.add("email1"); email.add("email2"); for (String string : emails) { message.addCc(string); }
То же самое вы можете использовать для добавления нескольких получателей.
источник
Легкий способ сделать
String[] listofIDS={"ramasamygms@gmail.com","ramasamycse94@gmail.com"}; for(String cc:listofIDS) { message.addRecipients(Message.RecipientType.CC,InternetAddress.parse(cc)); }
источник