Não envia email?! JavaMail?

Java

09/04/2009

Estou usando o Commons-email do projeto jakarta!! [url]https://www.devmedia.com.br/articles/viewcomp.asp?comp=3306[/url] Estou tentando mandar email p/ o gmail e no método email.send(); para e não acontece mais nada!! Alguem pode me ajudar!! Sabe o que esta acontecendo? Logo abaixo o código. ------------------------- [color=red]import org.apache.commons.mail.EmailException; import org.apache.commons.mail.SimpleEmail; public class EmailSimples { /** * ADELCI JÚNIOR * @param args * @throws EmailException */ public static void main(String[] args) { SimpleEmail email = new SimpleEmail(); try { email.setHostName("smtp.gmail.com"); // o servidor SMTP para envio do e-mail email.setSmtpPort(465); email.addTo("armjunior@gmail.com", "JUNIOR");//destinatário email.setFrom("armjunior@gmail.com", "EU MESMO"); // remetente email.setSubject("Mensagem de Teste"); // assunto do e-mail email.setMsg("Teste de Email utilizando commons-email"); //conteudo do e-mail [color=green]email.send(); //envia o e-mail[/color] System.out.println("Mensagem enviada!"); } catch (EmailException e) { System.err.print(e.getMessage()); } } }[/color]
Adelci Junior

Adelci Junior

Curtidas 0

Respostas

Edney Imme

Edney Imme

09/04/2009

Ola. Provavelmente pra usar o smtp.gmail voce devera se autenticar. Veja as rotinas de autenticacao disponiveis neste pacote que isso ira resolver o seu problema. Tem q verificar tbem no gmail qual o processo de autenticacao necessário.
GOSTEI 0
Edney Imme

Edney Imme

09/04/2009

Ola.Complementando o que coloquei acima If you need to authenticate to your SMTP server, you can call the setAuthentication(userName,password) method before sending your email. This will create an instance of DefaultAuthenticator which will be used by the JavaMail API when the email is sent. Your server must support RFC2554 in order for this to work. You can perform a more complex authentication method such as displaying a dialog box to the user by creating a subclass of the javax.mail.Authenticator object. You will need to override the getPasswordAuthentication() method where you will handle collecting the user's information. To make use of your new Authenticator class, use the Email.setAuthenticator method. http://jakarta.apache.org/commons/email/userguide.html
GOSTEI 0
Adelci Junior

Adelci Junior

09/04/2009

Antes do método email.send() coloquei o email.setAuthentication("armjunior", "xxxxxxx"); Mas não deu certo! O xxxxxx e a senha do email!
GOSTEI 0
Edney Imme

Edney Imme

09/04/2009

ola. nao é so isso. De uma olhada na web, tem alguns artigo q ensinam como fazer autenticacao no gmail,. da uma googleada q vc vai achar. Infelizmente nao tenho acesso total a web dai nao posso te ajudar. Blz
GOSTEI 0
Adelci Junior

Adelci Junior

09/04/2009

Beleza, vou dar uma procurada!! Valeu!!
GOSTEI 0
Edney Imme

Edney Imme

09/04/2009

ola. da uma olhada neste link http://www.javafree.org/javabb/viewtopic.jbb?page=1&t=859104#lastPost aqui tem um cara com uma rotina de envio legal pra vc olhar.
GOSTEI 0
Edney Imme

Edney Imme

09/04/2009

Procura por SendMail.java :getout:
GOSTEI 0
Marcos Anderson

Marcos Anderson

09/04/2009

Boa noite, pessoal, Desculpa ressussitar o fórum, mas estou com um problema chato na hora de enviar email pela Commons Email. Peguei o código do site da apache, para evitar erros, porém continuo recebendo erros. Então só posso supor que seja da minha rede. Porém sou uma negação em redes e nem sei por onde começar a procurar (embora eu já tenha visto que não estou usando proxy). Bem, aqui está meu código e mais abaixo os erros. Segue o link de onde peguei o código: http://commons.apache.org/proper/commons-email//userguide.html Código:
public void SendNewsEmail(User user, News news){
		
		try{
	
		Email email = new SimpleEmail();
		email.setHostName("smtp.googlemail.com");
		email.setSmtpPort(465);
		email.setAuthenticator(new DefaultAuthenticator(USER, PASS));
		email.setSSLOnConnect(true);
		email.setFrom(USER);
		email.setSubject(Constants.subjectNewsEmail+user.getFirstName());
		email.setMsg(user.getFirstName()+"\n\n"+news.getDescriptionEmail());
		email.addTo(user.getEmail());
		email.send();

		
		}catch(EmailException e){
			e.printStackTrace();
		}
	}
USER e PASS já estão sendo setados de maneira correta. Stack Trace
org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.googlemail.com:465
	at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1401)
	at org.apache.commons.mail.Email.send(Email.java:1428)
	at br.com.sigmaidea.concurso.controller.SendEmail.SendNewsEmail(SendEmail.java:41)
	at br.com.sigmaidea.concurso.model.News.Send(News.java:249)
	at br.com.sigmaidea.concurso.view.Crud.main(Crud.java:138)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.googlemail.com, port: 465;
  nested exception is:
	java.net.SocketException: Software caused connection abort: recv failed
	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: Software caused connection abort: recv failed
	at java.net.SocketInputStream.socketRead0(Native Method)
	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
Também recebi um erro do tipo: Could not connect to SMTP host: smtp.gmail.com, port: 465, response: -1 Grato pela ajuda!!
GOSTEI 0
Edney Imme

Edney Imme

09/04/2009

Aqui tem um exemplo de como enviar email com SimpleEmail: http://noobjava.wordpress.com/2010/05/05/enviar-email-com-commons-mail/
GOSTEI 0
Edney Imme

Edney Imme

09/04/2009

A porta do GMAIL é 587, com a 465 acho que você não vai mais conseguir enviar.
GOSTEI 0
Edney Imme

Edney Imme

09/04/2009

[quote="MarcosAnderson"]Boa noite, pessoal, Desculpa ressussitar o fórum, mas estou com um problema chato na hora de enviar email pela Commons Email. Peguei o código do site da apache, para evitar erros, porém continuo recebendo erros. Então só posso supor que seja da minha rede. Porém sou uma negação em redes e nem sei por onde começar a procurar (embora eu já tenha visto que não estou usando proxy). Bem, aqui está meu código e mais abaixo os erros. Segue o link de onde peguei o código: http://commons.apache.org/proper/commons-email//userguide.html Código:
public void SendNewsEmail(User user, News news){
		
		try{
	
		Email email = new SimpleEmail();
		email.setHostName("smtp.googlemail.com");
		email.setSmtpPort(465);
		email.setAuthenticator(new DefaultAuthenticator(USER, PASS));
		email.setSSLOnConnect(true);
		email.setFrom(USER);
		email.setSubject(Constants.subjectNewsEmail+user.getFirstName());
		email.setMsg(user.getFirstName()+"\n\n"+news.getDescriptionEmail());
		email.addTo(user.getEmail());
		email.send();

		
		}catch(EmailException e){
			e.printStackTrace();
		}
	}
USER e PASS já estão sendo setados de maneira correta. Stack Trace
org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.googlemail.com:465
	at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1401)
	at org.apache.commons.mail.Email.send(Email.java:1428)
	at br.com.sigmaidea.concurso.controller.SendEmail.SendNewsEmail(SendEmail.java:41)
	at br.com.sigmaidea.concurso.model.News.Send(News.java:249)
	at br.com.sigmaidea.concurso.view.Crud.main(Crud.java:138)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.googlemail.com, port: 465;
  nested exception is:
	java.net.SocketException: Software caused connection abort: recv failed
	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: Software caused connection abort: recv failed
	at java.net.SocketInputStream.socketRead0(Native Method)
	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
Também recebi um erro do tipo: Could not connect to SMTP host: smtp.gmail.com, port: 465, response: -1 Grato pela ajuda!!
Fiz um teste com esse código:
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@gmail", "Nome"); //destinatário
email.setFrom("email@gmail.com", "Nome"); // remetente
email.setSubject("Teste -> Email simples"); // assunto do e-mail
email.setMsg("Teste de Email utilizando commons-email"); //conteudo do e-mail
email.setAuthentication("login", "senha");
email.setSmtpPort(465);
email.setSSL(true);
email.setTLS(true);
email.send();
}
e funcionou perfeitamente.
GOSTEI 0
POSTAR