2014-11-11 19 views
6

L'e-mail ottiene i messaggi solo all'ultimo indirizzo e-mail nell'array String[] to. Ho intenzione di inviare a tutti gli indirizzi email aggiunti alla matrice. Come posso fare quel lavoro?Come inviare un'e-mail a più destinatari in primavera

public void sendMail(String from, String[] to, String subject, String msg, List attachments) throws MessagingException { 

    // Creating message 
    sender.setHost("smtp.gmail.com"); 
    MimeMessage mimeMsg = sender.createMimeMessage(); 
    MimeMessageHelper helper = new MimeMessageHelper(mimeMsg, true); 
    Properties props = new Properties(); 
    props.put("mail.smtp.starttls.enable", "true"); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.port", "425"); 

    Session session = Session.getDefaultInstance(props, null); 

    helper.setFrom(from); 

    helper.setTo(to); 

    helper.setSubject(subject); 
    helper.setText(msg + "<html><body><h1>hi welcome</h1><body></html", true); 

    Iterator it = attachments.iterator(); 

    while (it.hasNext()) { 
     FileSystemResource file = new FileSystemResource(new File((String) it.next())); 
     helper.addAttachment(file.getFilename(), file); 
    } 

    // Sending message 
    sender.send(mimeMsg); 
} 
+1

Supponendo che il metodo corretto viene richiamato (il 'Setto (String [])' uno) dovrebbe funzionare. Quello che non capisco è il motivo per cui si impostano le proprietà di sessione e l'host in questo metodo, che dovrebbe essere nella configurazione. –

risposta

9

utilizzare un elenco separato da virgole di indirizzi:

helper.setTo(to1,to2,to3....); 
+1

Il secondo metodo non funziona (con valori separati da virgole all'interno della stringa). – naXa

+0

@naXa Perché la pensi così? – Jens

+3

L'ho appena provato. E ottengo 'AddressException: Illegal address'. – naXa

-3
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
     <property name="host" value="smtp.ccc.corp"/> 
     <property name="port" value="25"/> 
     <property name="javaMailProperties"><props> 
     <prop key="mail.smtp.sendpartial">true</prop> 
     </props></property> 
</bean> 

impostare mail.smtp.sendpartial vero. Sono sicuro che funzioni per voi

0

Penso che un approccio migliore sia dichiarare l'attributo "a" come array nel file spring.xml, passare valori e utilizzare il metodo setTo(string[]) come suggerito da Deinum nel commento. Processo è definire 'a' nel file XML come

<property name="to"> 
    <array> 
    <value>[email protected]</value> 
    <value>[email protected]</value> 
    </array> 
</property> 

Ora generare il metodo setter getter per questo array contenente l'indirizzo del destinatario multipla e passarlo a setTo(String[]) metodo: -

helper.setTo(to); 
3

L'approccio migliore è per creare un array contenente l'indirizzo di più destinatari.

MimeMessageHelper helper = new MimeMessageHelper(message, true); 
    helper.setTo(String[] to); 
0

Si può provare questo, invece di

helper.setTo(to); 

String multipleEmailIds = "[email protected], [email protected]" 
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(multipleEmailIds)); 
Problemi correlati