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("paulo@conseda.com.br", "Destinatario");
email.setFrom("paulo@conseda.com.br", "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.
Cara, pela exception lançada o problema é com seu servidor smtp.
Verifique o IP e a porta.
[quote]
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)[/quote]
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?!
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("pedro@gmail.com.br"));
//Setando a origem do email
msg.setFrom(new InternetAddress("jose@gmail.com.br"));
//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();
}
}[/quote]
/* 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);