Enviando email usando a Api java mail

26 respostas
V

Pessoal estou tentando enviar um email de recuperação de senhas para os meus usuários eu tenho uma conta de email na localWeb e estou tetando utilizar está conta para o envio do email enfim. Principal problema é que a minha aplicação não envia o email e nem apresenta nenhum erro acredito que problema esteja nos parâmetros de configuração da conta local web nesse arquivo properties. Segue abaixo o código e agradeço a ajuda eu segui todos os passos do tutorial aqui do forúm.

public static void enviarEmail(String nome, String login, String email,
			String senha) {

		Properties propriedadesSMT = new Properties();

		propriedadesSMT.put("mail.smtp.host", "smtp.localweb.com.br");
		//propriedadesSMT.put("mail.smtp.port", "465");

		javax.mail.Session session = javax.mail.Session.getDefaultInstance(
				propriedadesSMT, null);
		MimeMessage msg = new MimeMessage(session);

		try {
			msg.setFrom(new InternetAddress("[email removido]"));
			msg.setRecipient(Message.RecipientType.TO, new InternetAddress(email));

			msg.setSentDate(new Date());

			msg.setSubject("Recuperação de Senha SimuladoOnline");

			msg.setText("Olá " + nome,"Você solicitou a recuperação de senha para acesso "+
					    "a sua conta do sistema simuladoOnline abaixo senhe seu Login e Senha. /n"
						+ "Login:" + login + "/n" + "Senha:"
						+ senha);

		} catch (AddressException e) {
			
			e.printStackTrace();

		} catch (MessagingException e) {

			e.printStackTrace();
		}

	}

}

26 Respostas

mauricionarcizo

cara, não está faltando enviar?? Transport.send(msg);

V

Tá me passando erro realmente falatava enviar.

Could not connect to SMTP host: smtp.localweb.com.br, port: 25;nested exception is:

mauricionarcizo

cara voce está tentando usar o artigo daqui do GUJ né, porem eu tambem utilizei e não consegui enviar por aquele artigo… eu busquei em outros sites e encontrei um que deu certo, se quiser eu te passo o código fonte aqui pelo GUJ mesmos, é só pedir…

V

Sim cara por favor me passa o código que você têm.

mauricionarcizo

opa cara desculpa a demora, agora que voltei do almoço... segue abaixo o código...

import java.io.File;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.MultiPartEmail;
import org.apache.commons.mail.SimpleEmail;

 public class EnviandoEmail {

    public void enviarEmail() {
        SimpleEmail email = new SimpleEmail();
        try {
            email.setDebug(true);
            email.setHostName("smtp.gmail.com");
            email.setAuthentication("teunomedeusuario", "tua senha");
            email.setSSL(true);
            email.addTo("o teu email"); //pode ser qualquer um email
            email.setFrom("email para onde voce quer enviar"); //aqui necessita ser o email que voce fara a autenticacao
            email.setSubject("Teste");
            email.setMsg("Mensagem Testando");
            email.send();

        } catch (EmailException e) {

            System.out.println(e.getMessage());

        }
    }

    public void enviarEmailComArquivo() {
        File f = new File("caminho do arquivo");

        EmailAttachment attachment = new EmailAttachment();
        attachment.setPath(f.getPath()); // Obtem o caminho do arquivo
        attachment.setDisposition(EmailAttachment.ATTACHMENT);
        attachment.setDescription("File");
        attachment.setName(f.getName()); // Obtem o nome do arquivo

        try {
            // Create the email message
            MultiPartEmail email = new MultiPartEmail();
            email.setDebug(true);
            email.setHostName("smtp.gmail.com");
            email.setAuthentication("teunomedeusuario", "tuasenha");
            email.setSSL(true);
            email.addTo("teuemail"); //pode ser qualquer um email
            email.setFrom("qualemailvocequerenviar"); //aqui necessita ser o email que voce fara a autenticacao
            email.setSubject("The file");
            email.setMsg("Enviando Arquivo");

            // add the attachment
            email.attach(attachment);

            // send the email
            email.send();
        } catch (EmailException e) {
            e.printStackTrace();
        }
    }
}

Obs.: Precisa baixar a api do javamail e adicionar o jar nas bilbiotecas do teu projeto

mauricionarcizo

abaixo o link para baixar o javamail, testa ai e me diz se conseguiu…

http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-eeplat-419426.html#javamail-1.4.4-oth-JPR

V

Eu adicionei o jar mail no classpath do projeto mas esses imports.

desse pacote não são encontrados é preciso adicionar também os jars da pasta lib.

org.apache.commons.mail.SimpleEmail

mauricionarcizo

é mesmo eu esqueci de dizer, tu adicionou os jars da pasta lib??

mauricionarcizo

me desculpa olhando os jar que tenho aqui, falta mais um alem daquele que voce baixou do site da Oracle, baixa esse aqui “Commons email”.
http://commons.apache.org/email/download_email.cgi

é isso, agora da certo!

V

blz agora tá reconhecendo vou terminar a implementação e falo alguma coisa.

mauricionarcizo

lembrando, caso teu email para qual sera o remetente não for o gmail modifique e coloque o smtp do teu email.

V

cara não dá erro ele executa. Mas na minha caixa de email não chega nada
to tentando enviar do gmail para o hotmail e nada.

mauricionarcizo

tenta enviar para uma outra conta, ou envia do hotmail para o gmail, eu testei agora mesmo denovo e funcionou tudo certinho…
quando está executando não da nenhum erro? aparece as mensagens na saida de envio de mail??
ps. eu ja tive problemas com o hotmail de nao receber o email… quem sabe não é isso…

V

Aparece sim a mensagem na saída do email. Mas quando vou na caixa de email não aparece nada.

mauricionarcizo

estranho, testei agora mesmo enviando do gmail para o hotmail e chegou na hora para mim… tu copiou todo o código que eu te passei??

mauricionarcizo

da uma olhada neste tópico aqui >>> http://www.guj.com.br/java/104645-api-commons-mail—usando-gmail
quem sabe voce consegue

mauricionarcizo

cara eu te disse uma coisa errada acima,

email.addTo("o teu email"); email.setFrom("email para onde voce quer enviar");
porem é o contrario
por exemplo:

email.addTo("[email removido]"); //aqui voce coloca o email para onde quer enviar email.setFrom("[email removido]"); //aqui necessita ser o email que voce fara a autenticacao

V

Funcionou cara vlw hehe agora só falta eu vêr a configuração do meu hostname da localweb hehe vlw.

mauricionarcizo

hehe que bom!!! \0/…
o que estava faltando???

V

Era erro da aplicação mesmo tava enviando o email do receptor nulo(String vazia).

V

Alguém sabe o que é esse bendito erro Sending the email to the following server failed
.Alterei os parâmetros do envio de email para a configuração atual e ainda assim não
funciona com gmail vai na boa mas com esse smtp do localweb não funciona.

public static void enviarEmail(String nome, String emailR,   
            String cpfMatricula, String senha) {   
  
        SimpleEmail email = new SimpleEmail();   
  
        try {   
  
            email.setDebug(true);   
            email.setHostName("smtp.w2mtecnologia.com.br");   
            email.setAuthentication("[email removido]","senha");   
            email.setSSL(true);   
            email.addTo(emailR);   
            email.setFrom("[email removido]");   
  
            email.setSubject("Rescuperação de Senha SimuladoOnline");   
            email.setMsg("Olá, "   
                        + nome+"\n"   
                        + "Estamos enviando conforme solicitação seu Login e senha para acesso ao sistema. \n"   
                        +"\n"+ "Login:" + cpfMatricula+"\n" + "Senha:"   
                        + senha);   
  
            email.send();   
  
        } catch (EmailException e) {   
  
            System.out.println(e.getMessage());   
  
        }   
    }
mauricionarcizo
cara tem algumas coisas que talvez tenha que mudar ao lado eu adicionarei comentarios...
public static void enviarEmail(String nome, String emailR,   
            String cpfMatricula, String senha) {   
  
        SimpleEmail email = new SimpleEmail();   
  
        try {   
  
            email.setDebug(true);   
            email.setHostName("smtp.w2mtecnologia.com.br"); 
            email.setAuthentication("[email removido]","senha");  // na autenticação eu não coloco o @... apenas o nome de usuario no seu caso "simulado" //apenas 
            email.setSSL(true);   
            email.addTo(emailR);   //aqui voce coloca o seu email de remetente no caso "[email removido]".
            email.setFrom("[email removido]");   // aqui você coloca o email de destino no caso a variavel "emailR".
  
            email.setSubject("Rescuperação de Senha SimuladoOnline");   
            email.setMsg("Olá, "   
                        + nome+"\n"   
                        + "Estamos enviando conforme solicitação seu Login e senha para acesso ao sistema. \n"   
                        +"\n"+ "Login:" + cpfMatricula+"\n" + "Senha:"   
                        + senha);   
  
            email.send();   
  
        } catch (EmailException e) {   
  
            System.out.println(e.getMessage());   
  
        }   
    }

é isso tenta agora ai...

V

Continua a mesma bronca cara. Isso é o que aparece no console quando envio o email.

e a última linha é o falied que eu falei. acho q algo de configuração com a host da locaweb mas não sei o que é já pesquisei um bocado mas nada.

DEBUG: JavaMail version 1.4.4
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.w2mtecnologia.com.br", port 465, isSSL false
Sending the email to the following server failed : smtp.w2mtecnologia.com.br:25
mauricionarcizo

então o teu erro está no smtp mesmo… tenta “smtps”

V

Nada brother continua na mesma.

mauricionarcizo

eita… tenta pesquisar qual é o hostname do teu email…

Criado 5 de outubro de 2011
Ultima resposta 5 de out. de 2011
Respostas 26
Participantes 2