Não envia email?! JavaMail?

8 respostas
A

Estou usando o Commons-email do projeto jakarta!!

http://www.devmedia.com.br/articles/viewcomp.asp?comp=3306

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 {

/**
 * @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("[email removido]", "JUNIOR");//destinatário
		email.setFrom("[email removido]", "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]

8 Respostas

F

arm.jr:
Estou usando o Commons-email do projeto jakarta!!

http://www.devmedia.com.br/articles/viewcomp.asp?comp=3306

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 {

/**
 * @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("[email removido]", "JUNIOR");//destinatário
		email.setFrom("[email removido]", "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]


Qual a mensagem de erro ?

T

Para usar o gmail é bem mais complicado; procure aqui no GUJ um tópico onde resolvo este problema.

prop.put (“mail.smtp.host”, “smtp.gmail.com”);

prop.put(“mail.smtp.auth”, “true”);

prop.put(“mail.debug”, “true”);

prop.put(“mail.smtp.debug”, “true”);

prop.put(“mail.mime.charset”, “ISO-8859-1”);

prop.put(“mail.smtp.port”, “465”);

prop.put (“mail.smtp.starttls.enable”, “true”);

prop.put (“mail.smtp.socketFactory.port”, “465”);

prop.put (“mail.smtp.socketFactory.fallback”, “false”);

prop.put (“mail.smtp.socketFactory.class”, “javax.net.ssl.SSLSocketFactory”);

Parece que funciona direitinho (com o JDK 5.0; veja se funciona com versões anteriores (pode ser que não funcione porque versões anteriores não suportam direito o SSL.)

A

Peguei um exemplo aqui, testei mas esta dando erro!

Código

[color=darkred]
package JavaMail;

import java.security.Security;
import java.util.Properties;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

public class GoogleTest {

private static final String SMTP_HOST_NAME = "smtp.gmail.com";

private static final String SMTP_PORT = "465";

private static final String emailMsgTxt = "Teste";

private static final String emailSubjectTxt = "Testando o email!";

private static final String emailFromAddress = "[email removido]";

private static final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

private static final String[] sendTo = { "[email removido]" };

public static void main(String args[]) throws Exception {

	Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

	new GoogleTest().sendSSLMessage(sendTo, emailSubjectTxt, emailMsgTxt,
			emailFromAddress);
	System.out.println("Sucessfully Sent mail to All Users");
}

public void sendSSLMessage(String recipients[], String subject,
		String message, String from) throws MessagingException {
	boolean debug = true;

	Properties props = new Properties();
	props.put("mail.smtp.host", SMTP_HOST_NAME);
	props.put("mail.smtp.auth", "true");
	props.put("mail.debug", "true");
	props.put("mail.smtp.port", SMTP_PORT);
	props.put("mail.smtp.socketFactory.port", SMTP_PORT);
	props.put("mail.smtp.socketFactory.class", SSL_FACTORY);
	props.put("mail.smtp.socketFactory.fallback", "false");
	

	Session session = Session.getDefaultInstance(props,
			new javax.mail.Authenticator() {

				protected PasswordAuthentication getPasswordAuthentication() {
					return new PasswordAuthentication("armjunior", "armjr51");
				}
			});

	session.setDebug(debug);

	Message msg = new MimeMessage(session);
	InternetAddress addressFrom = new InternetAddress(from);
	msg.setFrom(addressFrom);

	InternetAddress[] addressTo = new InternetAddress[recipients.length];
	for (int i = 0; i &lt recipients.length; i++) {
		addressTo[i] = new InternetAddress(recipients[i]);
	}
	msg.setRecipients(Message.RecipientType.TO, addressTo);

	msg.setSubject(subject);
	msg.setContent(message, "text/plain");
	Transport.send(msg);
}

}

[/color]

ERRO

[color=red]

DEBUG: JavaMail version 1.4ea

DEBUG: java.io.FileNotFoundException: C:\Program Files\Java\jre\lib\javamail.providers (The system cannot find the file specified)

DEBUG: !anyLoaded

DEBUG: not loading resource: /META-INF/javamail.providers

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: !anyLoaded

DEBUG: not loading resource: /META-INF/javamail.address.map

DEBUG: java.io.FileNotFoundException: C:\Program Files\Java\jre\lib\javamail.address.map (The system cannot find the file specified)

DEBUG: setDebug: JavaMail version 1.4ea

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 "<a href="http://smtp.gmail.com">smtp.gmail.com</a>", port 465, isSSL false

Exception in thread "main" javax.mail.MessagingException: Could not connect to SMTP host: <a href="http://smtp.gmail.com">smtp.gmail.com</a>, port: 465;

nested exception is:

java.net.ConnectException: Connection timed out: connect

at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282)

at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)

at javax.mail.Service.connect(Service.java:297)

at javax.mail.Service.connect(Service.java:156)

at javax.mail.Service.connect(Service.java:105)

at javax.mail.Transport.send0(Transport.java:168)

at javax.mail.Transport.send(Transport.java:98)

at JavaMail.GoogleTest.sendSSLMessage(GoogleTest.java:74)

at JavaMail.GoogleTest.main(GoogleTest.java:34)

Caused by: java.net.ConnectException: Connection timed out: connect

at java.net.PlainSocketImpl.socketConnect(Native Method)

at java.net.PlainSocketImpl.doConnect(Unknown Source)

at java.net.PlainSocketImpl.connectToAddress(Unknown Source)

at java.net.PlainSocketImpl.connect(Unknown Source)

at java.net.SocksSocketImpl.connect(Unknown Source)

at java.net.Socket.connect(Unknown Source)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)

at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(Unknown Source)

at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:232)

at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:163)

at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1250)

… 8 more

[/color]

T

Seu exemplo não tem o " prop.put (“mail.smtp.starttls.enable”, “true”); " que é o segredo da coisa.

Além disso, você deve estar com problemas de conexão por algum motivo.

A

Amigo, beleza, esta enviando tudo certo!!

Agora estou tentando aqui, usar o POP para receber o email.
Nessa parte . prop.put (… ) o que eu coloco para acessar o POP?

Vc tem algum exemplo ai?

R

Nao precisa de 80% desse codigo ai. A trick eh usar “smtps”, e nao “smtp”:

Properties p = new Properties();

p.put("mail.smtps.host", "smtp.gmail.com");
p.put("mail.smtps.auth", "true");
p.put("mail.smtps.port", "465");

Transport t = session.getTransport("smtps");
t.connect("smtp.gmail.com", "[email removido]", "senha");

t.sendMessage(msg, new Address[] { new InternetAddress("[email removido]") })

Soh isso.

Rafael

A

Valeu cara! Show de bola, bem simples mesmo!!

Agora você sabe usar o POP para receber mensagens?! E simples assim também?!

B

Não to conseguindo enviar um email.... com esse código:

imports...

public class EnviarEmail {
    
    public static void main(String args[]) {
      
        try {
            Properties p = new Properties();
           
            Session session = Session.getInstance(p, null);
            MimeMessage msg = new MimeMessage(session);
            
            // Destino e email enviador
            msg.setFrom(new InternetAddress("[email removido]"));
            msg.setRecipient(Message.RecipientType.TO, new InternetAddress("[email removido]"));
            
            // data de envio
            msg.setSentDate(new Date());
            
            // Assunto e texto da mensagem
            msg.setSubject("assunto");
            msg.setText("texto da mensagem");
            
            Transport t = session.getTransport("smtps");
            t.connect("smtp.yahoo.com", "[email removido]", "minhasenha");
            t.send(msg);
 
            
        } catch (AddressException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
    
}

Me deem uma luz ai... Vlw

Criado 26 de outubro de 2006
Ultima resposta 7 de nov. de 2006
Respostas 8
Participantes 5