Envio de E-Mail [API Commons (Jakarta Apache)]

7 respostas
Calvin

Boa tarde !

No projeto que estou trabalhando existe uma funcionalidade de enviar e-mail e para isso escolhi o API Commons do projeto Jakarta, porém não estou conseguindo enviar o email…

Abaixo está o meu código.

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;

public class EmailSimples {

	public static void main(String[] args) {

		SimpleEmail email = new SimpleEmail();

		try {
			
			email.setHostName("192.168.0.3");
			email.addTo("[email removido]", "Destinatario");
			email.setFrom("[email removido]", "Remetente");
			email.setSubject("Assunto de Teste");
			email.setMsg("Menssagem de texto de teste.");
			
			email.send();

		} catch (EmailException e) {
			System.err.print("...Erro:\n\t" + e.getMessage() + "\n\n");
			e.printStackTrace();
		}

	}

}

Mensagem de erro:

...Erro:
	Sending the email to the following server failed : 192.168.0.3:25

org.apache.commons.mail.EmailException: Sending the email to the following server failed : 192.168.0.3:25
	at org.apache.commons.mail.Email.sendMimeMessage(Email.java:873)
	at org.apache.commons.mail.Email.send(Email.java:898)
	at EmailSimples.main(EmailSimples.java:18)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: 192.168.0.3, port: 25;
  nested exception is:
	java.net.ConnectException: Connection refused: connect
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
	at javax.mail.Service.connect(Service.java:275)
	at javax.mail.Service.connect(Service.java:156)
	at javax.mail.Service.connect(Service.java:105)
	at javax.mail.Transport.send0(Transport.java:168)
	at javax.mail.Transport.send(Transport.java:98)
	at org.apache.commons.mail.Email.sendMimeMessage(Email.java:863)
	... 2 more
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(Unknown Source)
	at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
	at java.net.PlainSocketImpl.connect(Unknown Source)
	at java.net.SocksSocketImpl.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:232)
	at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189)
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1250)
	... 9 more

Observação:
Utilizo o eclipse como IDE, e os jars activation.jar e commons-email-1.0.jar estão adicionados no Java Build Path corretamente.

Obrigado pela atenção.

7 Respostas

P

Cara, pela exception lançada o problema é com seu servidor smtp.
Verifique o IP e a porta.

<blockquote>

nested exception is:

java.net.ConnectException: Connection refused: connect

at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282)

at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)

at javax.mail.Service.connect(Service.java:275)</blockquote>
Calvin

Antes de mais nada,
obrigado pela atenção prestada.

Pior que o ip e a porta estão corretas, afirmo isso porque o mozilla thunderbird (aplicativo concorrente do outLook) está com esse ip apontando para a porta 25, que é a padrão.

Saberia me dizer se eu tenho que fazer alguma configuração no meu servidor?!

Observação:
Servidor utiliza SO Linux Debian.

Grato.

andredeividi

ola eu uso essa api para enviar
email para mim quando ocorre uma exception no sistema

sendo assim segue o font
das 2 classe que uso

1 classe com o nome ExceptionEmail


import java.util.Properties;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

public class ExceptionEmail {

public static void  email(String tela,String metodo,Exception erro) {
    //Properties - objeto responsável por armazenar as propriedades
Properties props = new Properties();
    //Protocolo utilizado SMTP
    props.put("mail.transport.protocol", "smtp");
    //Indica que necessita de autenticação para acessar o servidor
    props.put("mail.smtp.auth", "true"); 
    //Servidor de SMTP
    props.put("mail.smtp.host", "stmt.gmail.com");

    //Session - objeto que ira realizar a conexão com o servidor
    /*Como há necessidade de autenticação é criada uma instancia
     * da classe JMAuthenticator que é responsável por solicitar e
     * retornar o usuário e senha para autenticação */
    Session session = Session.getDefaultInstance(props, new JMAuthenticator());
    //Habilita o LOG das ações executadas durante o envio do email
    //session.setDebug(true);

    //Objeto que contém a mensagem
    Message msg = new MimeMessage(session);

            try {
                    //Setando o destinatário
                    msg.setRecipient(Message.RecipientType.TO, new InternetAddress("[email removido]"));
                    //Setando a origem do email
                    msg.setFrom(new InternetAddress("[email removido]"));
                    //Setando o assunto
                    msg.setSubject("assunto "+tela);
                    //Setando o conteúdo/corpo do email
                    msg.setText("ola como vai");

            } catch (Exception e) {
                    e.printStackTrace();
           }
            try {
                    //Envio do email
                    Transport.send(msg);
            } catch (Exception e) {
                    e.printStackTrace();
            }
}</blockquote>

2 classe com nome JMAuthenticator

import javax.mail.Authenticator;

import javax.mail.PasswordAuthentication;

import javax.swing.JOptionPane;

import javax.swing.JPasswordField;

/* O objeto extende Authenticator que é a super classe

  • especialista em autenticação
    
    */
    
    public class JMAuthenticator extends Authenticator {
    
    public synchronized PasswordAuthentication getPasswordAuthentication(){
    
    String usuario = null, senha = null;
    
    //É criada um JPanel e inserido no ConfirmDialog
    
    usuario = "jose";
     	senha = "123456";
     /*PasswordAuthentication é o objeto responsável por transportar
      * as informações de autenticação
      */
     return new PasswordAuthentication(usuario,senha);
    

    }
    }

Espero que te ajude valeu

abraço

Calvin

Muito obrigado pela atenção,

Ainda não pude testar porque não estou no meu trabalho no momento.
Mas assim que efetuar os testes do um retorno sobre o resultado!

Até em breve …

Luiz.java

é preciso baixar api java para envio de emails!!!
sem ela nada funciona.

Luiz.java

ALGUEM TEM A API JAVA"PARA ENVIO DE E-MAIL" PARA ME PASSAR !?!?!?!?!?

ramilani12

http://java.sun.com/products/javamail/downloads/index.html

Criado 9 de novembro de 2006
Ultima resposta 9 de out. de 2008
Respostas 7
Participantes 5