Tenho uma rotina em JSF para mandar email, se eu tiver um e-mail para envio, ok… se eu tiver mais de um email para enviar, ocorre erro.
Exemplo: [email removido] - Roda legal
privatestaticfinalStringHOSTNAME="smtp.email.com.br";privatestaticfinalStringUSERNAME="usuario";privatestaticfinalStringPASSWORD="senha";privatestaticfinalStringEMAILORIGEM="[email removido]";publicstaticSimpleEmailconectaEmail()throwsEmailException{SimpleEmailemail=newSimpleEmail();email.setHostName(HOSTNAME);email.setSmtpPort(25);email.setAuthenticator(newDefaultAuthenticator(USERNAME,PASSWORD));email.setTLS(true);email.setFrom(EMAILORIGEM);returnemail;}publicstaticvoidenviaEmail(EmailMenssagemmensagem)throwsEmailException,SQLException{SimpleEmailemail=newSimpleEmail();email=conectaEmail();email.setSubject(mensagem.getTitulo());email.setMsg(mensagem.getMensagem());email.addTo(mensagem.getDestino());Stringresposta=email.send();if(mensagem.isExibeMsg()){FacesContext.getCurrentInstance().addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,"E-mail enviado com sucesso para: "+mensagem.getDestino(),""));}}
Alguem sabe como posso fazer para usar mais de um email junto??
A menos que eu faça um loop e envie no caso vezes o mesmo email, um para cada destinatario, mas nao gostaria de fazer isso!
Alguma outra sugestão!
Obrigado
J
josivanl
Desculpa Romarcio, mas nao entendi, como que eu poderia transformar o meu EmailMessagem em um array?
Na verdade eu vou estar recebendo uma string, separada por alguma coisa, “;” ou “,” por exemplo, e vou rodar uma função split para quebrar e me retornar em linhas.
Gostaria de estar adicionando essas linhas ou um array ou diretamente no addTo, mas da forma que voce me falou nao consegui entender.
Obrigado
E
entanglement
Ele lhe disse que esta é a declaração:
public Email addTo(String... emails) throws EmailException;
Ou seja, você poderia simplesmente fazer algo como:
Só para completar aqui: nunca mande um email que tenha mais de 4 destinatários simultâneos.
Eu recomendaria mandar cada email com um destinatário só.
Um email com 100 destinatários simultâneos (eu sei que você vai acabar fazendo isso…), além de ser deselegante (e perigoso, no caso de você estar mandando um mesmo email para outros clientes da mesma empresa - porque você está revelando os emails para todos!!!) , costuma ficar preso nos filtros de spam.
É melhor demorar um pouco mais para mandar os emails, que ficar mandando um email com 1000 destinatários e que acabe ficando preso, e que também tenha o problema de você revelar a lista inteira de emails de clientes para todos os clientes …
Não adianta você usar “BCC” em vez de “TO” - um cliente que for um pouco mais esperto vai acabar descobrindo os emails de todos os destinatários com um clique a mais, não é preciso saber escrever programas em Java.
E
entanglement
Só mande emails com vários destinatários se for algo assim:
Ou seja, se for um email do tipo que você realmente precisa mandar com cópia.
Se for uma simples “mala direta”, não faça isso.
J
josivanl
Na verdade vou enviar no maximo 3 emails, que sao emails cadastrados em parametros, para informar alguma coisa errada ou exceções, ou seja, nao vai acontecer sempre nem vai ser enviado para
muita gente, pelo contrario, poucas pessoas e poucas vezes!
Mas muito obrigado pelas digas pessoal, realmente foram todas muito uteis. Vou testar os codigo repassados aqui nos posts
Obrigado
Abraços
E
entanglement
Então entra no caso “poucos destinatários que devem ser avisados porque o sistema está pegando fogo”.
Ok, pode usar o array de strings, gerado por String.split, conforme mostrei acima.
J
josivanl
Bom dia Pessoal,
Estava testando esse codigo, mas infelizmente o addTo so aceita string mesmo, nao consigo fazer com que aceite um array
Como eu disse lá em cima, se for o SimpleEmail do apache, ele possui uma sobrecarga para array de emails, se nao for precisa saber qual api que vc esta usando.
romarcio
josivanl:
Bom dia Pessoal,
Estava testando esse codigo, mas infelizmente o addTo so aceita string mesmo, nao consigo fazer com que aceite um array