Série da semana: Nota fiscal eletrônica na prática

Veja mais

Não envia email?! JavaMail?

09/04/2009

Estou usando o Commons-email do projeto jakarta!! [url]http://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

Respostas

09/04/2009

Edney Imme

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.
Responder Citar

09/04/2009

Edney Imme

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
Responder Citar

09/04/2009

Adelci Junior

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

09/04/2009

Edney Imme

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
Responder Citar

09/04/2009

Adelci Junior

Beleza, vou dar uma procurada!! Valeu!!
Responder Citar

09/04/2009

Edney Imme

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.
Responder Citar

09/04/2009

Edney Imme

Procura por SendMail.java :getout:
Responder Citar

15/03/2013

Marcos Anderson

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!!
Responder Citar

15/03/2013

Edney Imme

Aqui tem um exemplo de como enviar email com SimpleEmail: http://noobjava.wordpress.com/2010/05/05/enviar-email-com-commons-mail/
Responder Citar

15/03/2013

Edney Imme

A porta do GMAIL é 587, com a 465 acho que você não vai mais conseguir enviar.
Responder Citar

16/03/2013

Edney Imme

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.
Responder Citar