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

M

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:

M

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.

M

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

M

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

M

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

M

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.

M

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.

M

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.

M

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??

M

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

M

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.

M

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());   
  
        }   
    }
M
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
M

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

V

Nada brother continua na mesma.

M

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