Enviar E-mail Com Aplicativo Desktop

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("vp.maciel@yahoo.com.br", "Vicente"); // destinatário
		email.setFrom("vpmaciel@gmail.com", "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();
	}

}
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

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

[quote=paulo_1981][code]
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("vp.maciel@yahoo.com.br", "Vicente"); // destinatário
	email.setFrom("vpmaciel@gmail.com", "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();
}

}
[/code][/quote]

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.

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

A porta está correta.

da uma olhada

[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);

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

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.

[quote=paulo_1981][code]

	email.setAuthentication("vpmaciel", "senha");

[/code][/quote]

Experimenta colocar no username o email completo.

[quote=pmlm][quote=paulo_1981][code]

	email.setAuthentication("vpmaciel", "senha");

[/code][/quote]

Experimenta colocar no username o email completo.[/quote]

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

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

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.

Resolvido.

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

Funcionou em outro provedor de internet.

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