Aplicação java que envia e-mail [Resolvido]

Estou usando o seguinte método para enviar email:

[code]public void sendEmail() {
String from = “exemplo@exemplo.com.br”;
String to1 = “exemplo@exemplo.com.br”;
String to2 = “exemplo@exemplo.com.br”;
String to3 = “exemplo@exemplo.com.br”;
try {
SmtpClient client = new SmtpClient(“10.1.1.1”);
client.from(from);
client.to(to1);
client.to(to2);
client.to(to3);
PrintStream msg = client.startMessage();
msg.println(“to: “+ to1+”; “+to2+”; “+to3+ “;”);
msg.println(“Subject:Send Email JAVA”);
msg.print(”\r\n”);
msg.println(“Esse é um exemplo de um email java para mais de um destinatário\n”);
msg.println(“Teste”);
client.closeServer();
} catch (IOException e) {
System.out.println(“error” + e);
}

}[/code]

Mais quando compilo não dá erro mais aparece uns Warnig:

nit: deps-jar: Created dir: L:\CDV\build\classes Compiling 2 source files to L:\CDV\build\classes L:\CDV\src\cdv\Tela_Principal_Cliente.java:18: warning: sun.net.smtp.SmtpClient is Sun proprietary API and may be removed in a future release import sun.net.smtp.SmtpClient; L:\CDV\src\cdv\Tela_Principal_Cliente.java:2946: warning: sun.net.smtp.SmtpClient is Sun proprietary API and may be removed in a future release SmtpClient client = new SmtpClient("10.1.1.1"); L:\CDV\src\cdv\Tela_Principal_Cliente.java:2946: warning: sun.net.smtp.SmtpClient is Sun proprietary API and may be removed in a future release SmtpClient client = new SmtpClient("10.1.1.1"); Note: L:\CDV\src\cdv\Tela_Principal_Cliente.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. 3 warnings compile: Building jar: L:\CDV\dist\CDV.jar Copy libraries to L:\CDV\dist\lib. To run this application from the command line without Ant, try: java -jar "L:\CDV\dist\CDV.jar" jar: CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos)

O que pode ser, e percebi outra coisa as vezes trava, quando vai enviar o email, o que pode ser???

Você está usando uma API, que apesar de estar presente no java, não foi desenvolvida com o intuito de ser disponibilizada para usuários comuns.

É isto que o warning está lhe dizendo - A API que você está utilizando é proprietária da SUN e poderá se tornar indisponível nas próximas versões do java sem qualquer aviso, haja vista que ela não tem como propósito ser utilizada por usuários comuns.

Acho que você deveria usar o javamail para enviar email.

Tem como vc me dar um idéia de como usar a classe javamail, ou passar um metodo parecido com esse, mais usando javamail?

T+++

Você poderia começar por este tutorial que está disponível aqui no GUJ mesmo.
Quando precisar de coisas mais avançadas, faça uma rápida pesquisa no google - tem muito material sobre isso disponível.

Tudo bem Vinicius?

Segue duas APIs de envio de e-mail que fiz uns exemplos.

API JavaMail: http://www.guj.com.br/posts/list/87637.java
API CommonsMail (Recomendo): http://www.guj.com.br/posts/list/104645.java

Qualquer dúvida posta ai.

[]'s,
Gabriel.

gabrielmassote,
É o seguinte cara, segui seu tuto http://www.guj.com.br/posts/list/104645.java, deu certo mais ele está mandando somente a ultima linha da msg, o que pode ser???

[code]public void enviar_email(){
SimpleEmail email = new SimpleEmail();

     try {  
    email.setDebug(true);  
    email.setHostName("172.19.32.23");  
    //email.setAuthentication("seu_nome_de_usuario","sua_senha");  
    //email.setSSL(true);  
    email.addTo("VOGundim@serragrande.com.br"); //pode ser qualquer um email  
    email.setFrom("VOGundim@serragrande.com.br"); //aqui necessita ser o email que voce fara a autenticacao  
    email.setSubject("Teste");  
    email.setMsg("Mensagem Testando");  
    email.setMsg("Mensagem Testando 2");
  email.send();  

     } catch (EmailException e) {  

   System.out.println(e.getMessage());  

   }   

} [/code]

Estou usando servidor exchange, como tinha falado só chega a ultima linha

Mensagem Testando 2

a Mensagem Testando 1 não chega, o que pode ser?

Tudo bem Vinicius?

É que nesse caso você está sobrescrevendo a mensagem através do método setMsg() que toda hora que for chamado substitui o valor da mensagem.

Uma alternativa seria a seguinte:


String msg = new String();
msg.append("Mensagem 1");
msg.append("\nMensagem 2");

email.setMsg(msg);

Não fiz na prática aqui, mas é ± isso. Só faz o teste por ai para ver se não tem erro de compilação e etc.

[]'s.

Deu erro ai no append, o que poderia vir no lugar???

Valeuuu pela força!

Mals vinicius.

Segue o código certo agora : ).
Era StringBuffer no lugar de String.


StringBuffer msg = new StringBuffer();
msg.append("Mensagem 1");
msg.append("\nMensagem 2");

email.setMsg(msg);

[]'s.

Lembrem-se de utilizar StringBuilder no lugar de StringBuffer sempre que possível, haja vista que os métodos de StringBuffer são todos “synchronized”, o que, em geral, é dispensável.

No caso dele acho que não faz tanta diferença. Mas quando tiver muitas manipulações na String é valido.

Mas, bem lembrado rod. Valeu.

[]'s.

gabrielmassote,

Saiu em branco o corpo da msg, olhe o código, o que tá errado?

[code]public void enviar_email(){
SimpleEmail email = new SimpleEmail();

     try {  
    StringBuffer msg = new StringBuffer();
    email.setDebug(true);  
    email.setHostName("172.19.32.23");  
    //email.setAuthentication("seu_nome_de_usuario","sua_senha");  
    //email.setSSL(true);  
    email.addTo("VOGundim@serragrande.com.br"); //pode ser qualquer um email  
    email.setFrom("VOGundim@serragrande.com.br"); //aqui necessita ser o email que voce fara a autenticacao  
    email.setSubject("Teste"); 
    msg.append("Mensagem Testando 1");  
    msg.append("Mensagem Testando 2");
  email.send();  

     } catch (EmailException e) {  

   System.out.println(e.getMessage());  

   }   

} [/code]

Valeu pela força…

Tudo bem vinicius?

Então, preste atenção aonde você está dando append, você está apenas adicionando conteúdo a variável “msg” e não ao e-mail. O que falta é você colocar email.setMsg(msg); e depois enviar com email.send();

tente aii!!

[]'s.

Olha verifiquei lá vi onde estava errado, mais é os seguinte quando chamo msg fica com um só sobre ele, tipo que não tem a variável criada, segue o código:

public void enviar_email(){

[code] SimpleEmail email = new SimpleEmail();

     try {  
    StringBuilder msg = new StringBuilder();
    email.setDebug(true);  
    email.setHostName("172.19.32.23");  
    //email.setAuthentication("seu_nome_de_usuario","sua_senha");  
    //email.setSSL(true);  
    email.addTo("VOGundim@serragrande.com.br"); //pode ser qualquer um email  
    email.setFrom("VOGundim@serragrande.com.br"); //aqui necessita ser o email que voce fara a autenticacao  
    email.setSubject("Teste"); 
   msg.append("Mensagem Testando 1");  
   msg.append("Mensagem Testando 2"); 
   email.setMsg(msg); //erro aqui no msg
   email.send();
   JOptionPane.showMessageDialog(null, "Email enviado com sucesso");

     } catch (EmailException e) {  

   System.out.println(e.getMessage());  

   }   

} [/code]

o que pode ser???

A única coisa que preciso agora é colocar mais de uma linha no corpo do email só isso, acho que não está muito difícil, estou tentando aqui se alguem tiver alguma dica, ficarei agradecido.

Obrigado pela atenção.

E ae vinicius,

O erro está ocorrendo pois o método .setMsg() só suporta String e StringBuilder possui uma “conversão” para String.

...
email.setMsg(msg.toString()); 
email.send(); 
...

Abraços!

Gabriel,

Valeu pelos posts cara ajudou pra caramba, fiz uma outra coisa que fuincionou sei que não é a melhor forma mais eu fiz e deu certo, segue o código abaixo:

[code]public void enviar_email(){
SimpleEmail email = new SimpleEmail();

try {
StringBuffer msg = new StringBuffer();
email.setDebug(true);
email.setHostName(“172.19.32.23”);
//email.setAuthentication(“seu_nome_de_usuario”,“sua_senha”);
//email.setSSL(true);
email.addTo(“VOGundim@serragrande.com.br”); //pode ser qualquer um email
email.setFrom(“VOGundim@serragrande.com.br”); //aqui necessita ser o email que voce fara a autenticacao
email.setSubject(“Teste”);
msg.append(“Mensagem Testando 1\n”);
msg.append(“Mensagem Testando 2”);
email.setMsg(""+msg); //aqui que estava dando o erro coloquei (""+msg), e deu certo kkk
email.send();
JOptionPane.showMessageDialog(null, “Email enviado com sucesso”);

     } catch (EmailException e) {  

   System.out.println(e.getMessage());  

   }   

} [/code]

Mais vou seguir o que vc me disse já testei e deu certo!!!
Valeuuu, obrigado pela atenção

Pode ser também hahah

Faz do outro jeito que fica mais elegante rs

Bom trabalho ai.

[]'s