Enviar E-mail Com Aplicativo Desktop

15 respostas
vpmaciel1981
import java.net.MalformedURLException;

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

public class CommonsMail {

	public CommonsMail() throws EmailException, MalformedURLException {
		enviaEmailSimples();
	}

	public void enviaEmailSimples() throws EmailException {

		SimpleEmail email = new SimpleEmail();
		email.setHostName("smtp.gmail.com"); // o servidor SMTP para envio do
												// e-mail
		email.addTo("[email removido]", "Vicente"); // destinatário
		email.setFrom("[email removido]", "Vicente Paulo Maciel"); // remetente
		email.setSubject("Teste -> Email simples"); // assunto do e-mail

		email.setMsg("Teste de Email utilizando commons-email"); // conteudo do
																	// e-mail
		email.setAuthentication("vpmaciel", "senha");
		email.setSmtpPort(465);
		email.setSSLOnConnect(true);
		System.out.println("Enviando");
		email.send();
		System.out.println("Pronto.");
	}

	public static void main(String[] args) throws EmailException,
			MalformedURLException {

		new CommonsMail();
	}

}

15 Respostas

vpmaciel1981
Enviando
Exception in thread "main" org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:465
	at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1401)
	at org.apache.commons.mail.Email.send(Email.java:1428)
	at CommonsMail.enviaEmailSimples(CommonsMail.java:27)
	at CommonsMail.<init>(CommonsMail.java:9)
	at CommonsMail.main(CommonsMail.java:34)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
  nested exception is:
	javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)
	at javax.mail.Service.connect(Service.java:317)
	at javax.mail.Service.connect(Service.java:176)
	at javax.mail.Service.connect(Service.java:125)
	at javax.mail.Transport.send0(Transport.java:194)
	at javax.mail.Transport.send(Transport.java:124)
	at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1391)
	... 4 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.ssl.Alerts.getSSLException(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
	at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
	at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
	at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
	at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
	at sun.security.ssl.Handshaker.processLoop(Unknown Source)
	at sun.security.ssl.Handshaker.process_record(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
	at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:549)
	at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:354)
	at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:211)
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1927)
	... 11 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
	at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
	at sun.security.validator.Validator.validate(Unknown Source)
	at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source)
	at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
	at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
	... 23 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.provider.certpath.SunCertPathBuilder.build(Unknown Source)
	at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
	at java.security.cert.CertPathBuilder.build(Unknown Source)
	... 29 more
vpmaciel1981

Não sei onde está o erro já verifiquei tudo.
Alguém pode me ajudar ?

F
paulo_1981:
import java.net.MalformedURLException;

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

public class CommonsMail {

	public CommonsMail() throws EmailException, MalformedURLException {
		enviaEmailSimples();
	}

	public void enviaEmailSimples() throws EmailException {

		SimpleEmail email = new SimpleEmail();
		email.setHostName("smtp.gmail.com"); // o servidor SMTP para envio do
												// e-mail
		email.addTo("[email removido]", "Vicente"); // destinatário
		email.setFrom("[email removido]", "Vicente Paulo Maciel"); // remetente
		email.setSubject("Teste -> Email simples"); // assunto do e-mail

		email.setMsg("Teste de Email utilizando commons-email"); // conteudo do
																	// e-mail
		email.setAuthentication("vpmaciel", "senha");
		email.setSmtpPort(465);
		email.setSSLOnConnect(true);
		System.out.println("Enviando");
		email.send();
		System.out.println("Pronto.");
	}

	public static void main(String[] args) throws EmailException,
			MalformedURLException {

		new CommonsMail();
	}

}

Você está usando o gmail, ele tem um bloqueio próprio. Experimenta acessar o seu gmail e verifica se tem algum e-mail falando que um aplicativo de terceiros tentou acessa-lo. Tive este problema e era isso.

H

eu acho que a porta está errada… da uma confirmada

vpmaciel1981

A porta está correta.

H

da uma olhada

vpmaciel1981

[quote=himorrivel]da uma olhada

O Código está correto e é praticamente o código deste post.

Apenas os métodos de setSSL já estão obsoletos e eu troquei por email.setSSLOnConnect(true);

H

deixando ele “obsoleto” ele funciona, ou tb nao funciona?

vpmaciel1981

Também não funciona.
O pior é que é fundamental este código funcionar para todos que queiram montar uma empresa de desenvolvimento Java.
Nunca pensei que essa tarefa desse tanto trabalho. Mas estou tentando tem que funcionar.

pmlm
paulo_1981:
email.setAuthentication("vpmaciel", "senha");

Experimenta colocar no username o email completo.

vpmaciel1981
pmlm:
paulo_1981:
email.setAuthentication("vpmaciel", "senha");

Experimenta colocar no username o email completo.

Estou achando que o google está bloqueando a tentativa de conexão.

Enviando
Exception in thread "main" org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:465
	at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1401)
	at org.apache.commons.mail.Email.send(Email.java:1428)
	at CommonsMail.enviaEmailSimples(CommonsMail.java:27)
	at CommonsMail.<init>(CommonsMail.java:9)
	at CommonsMail.main(CommonsMail.java:35)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
  nested exception is:
	java.net.SocketException: Connection reset
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)
	at javax.mail.Service.connect(Service.java:317)
	at javax.mail.Service.connect(Service.java:176)
	at javax.mail.Service.connect(Service.java:125)
	at javax.mail.Transport.send0(Transport.java:194)
	at javax.mail.Transport.send(Transport.java:124)
	at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1391)
	... 4 more
Caused by: java.net.SocketException: Connection reset
	at java.net.SocketInputStream.read(Unknown Source)
	at java.net.SocketInputStream.read(Unknown Source)
	at sun.security.ssl.InputRecord.readFully(Unknown Source)
	at sun.security.ssl.InputRecord.read(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
	at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:549)
	at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:354)
	at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:211)
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1927)
	... 11 more
pmlm

Peguei no primeiro exemplo daqui e mudando apenas o meu login/password funcionou!

vpmaciel1981

Vou criar um arquivo arquivo .jar e tentar executar em outros locais com este código.
Acho que é algum problema externo como algum proxy, ou configuração do servidor gmail.

Grato.

Vou continuar tentando.

vpmaciel1981

Resolvido.

O provedor de internet estava barrando o envio de e-mail.

Funcionou em outro provedor de internet.

F

Era o que eu tinha falado mesmo…Tive o mesmo problema quando tentei fazer isto…

Criado 18 de março de 2015
Ultima resposta 31 de mar. de 2015
Respostas 15
Participantes 4