Como enviar e-mail a partir da sua conta do google ou yahoo pelo javamail

6 respostas
faelcavalcanti

Fala pessoal. Não estou conseguindo enviar e-mails de minhas conta do google ou yahoo para eu mesmo. No meu caso estou tentando usar javamail e estive pesquisando pacas. Geralmente alguns dizem que conseguem e mostram o código e posteriormente outros pegam este código e também não estão conseguindo como eu.

Segue abaixo o código exemplo que estou testando:

/*
 * Created on 14/09/2005
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
import java.util.Properties;
 
import javax.mail.Authenticator;
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;
 
/**
 * @author gaucho
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */
public class NewTestGmail {
 
	private static final String SMTP_HOST_NAME = "gmail-smtp.l.google.com";
 
	private static final String SMTP_AUTH_USER = "[email removido]";
 
	private static final String SMTP_AUTH_PWD = "minhasenha";
 
	private static final String emailMsgTxt = "Please visit my project at ";
 
	private static final String emailSubjectTxt = "Order Confirmation Subject";
 
	private static final String emailFromAddress = "[email removido]";
 
	// Add List of Email address to who email needs to be sent to
	private static final String[] emailList = { "[email removido]" }; 
 
	public static void main(String args[]) throws Exception {
		NewTestGmail smtpMailSender = new NewTestGmail();
		smtpMailSender.postMail(emailList, emailSubjectTxt, emailMsgTxt,
				emailFromAddress);
		System.out.println("Sucessfully Sent mail to All Users");
	}
 
	public void postMail(String recipients[], String subject, String message,
			String from) throws MessagingException {
		boolean debug = false;
		java.security.Security
				.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
 
		//Set the host smtp address
		Properties props = new Properties();
		props.put("mail.transport.protocol", "smtp");
		props.put("mail.smtp.starttls.enable","true");
		props.put("mail.smtp.host", SMTP_HOST_NAME);
		props.put("mail.smtp.auth", "true");
 
		Authenticator auth = new SMTPAuthenticator();
		Session session = Session.getDefaultInstance(props, auth);
 
		session.setDebug(debug);
 
		// create a message
		Message msg = new MimeMessage(session);
 
		// set the from and to address
		InternetAddress addressFrom = new InternetAddress(from);
		msg.setFrom(addressFrom);
 
		InternetAddress[] addressTo = new InternetAddress[recipients.length];
		for (int i = 0; i < recipients.length; i++) {
			addressTo[i] = new InternetAddress(recipients[i]);
		}
		msg.setRecipients(Message.RecipientType.TO, addressTo);
 
		// Setting the Subject and Content Type
		msg.setSubject(subject);
		msg.setContent(message, "text/plain");
		Transport.send(msg);
	}
 
	/**
	 * SimpleAuthenticator is used to do simple authentication when the SMTP
	 * server requires it.
	 */
	private class SMTPAuthenticator extends javax.mail.Authenticator {
 
		public PasswordAuthentication getPasswordAuthentication() {
			String username = SMTP_AUTH_USER;
			String password = SMTP_AUTH_PWD;
			return new PasswordAuthentication(username, password);
		}
	}
}

Este código peguei deste link. Também tentei outros e-mails como walla. O curioso é que somente consegui um e-mail da bol. Alguém já passou por isso. Ah sim, segue abaixo o erro que tanto me implica.

Exception in thread "main" javax.mail.SendFailedException: Sending failed;
nested exception is:
class javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first 38sm10234361agd

at javax.mail.Transport.send0(Transport.java:218)
at javax.mail.Transport.send(Transport.java:80)
at tce.util.emailexcecao.NewTestGmail.postMail(NewTestGmail.java:84)
at tce.util.emailexcecao.NewTestGmail.main(NewTestGmail.java:45)

6 Respostas

T

O Google Mail é um cabra safado. Veja como domá-lo:

http://www.guj.com.br/posts/list/35431.java

rockstorm

No seu Properties, tente colocar mais estas linhas:

props.put("mail.smtp.user", "[email removido]"); props.put("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); props.put("mail.debug", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.port", portaSMTP); props.put("mail.smtp.socketFactory.port", portaSMTP); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.socketFactory.fallback", "false");

Geralmente o Gmail (Google) utliza segurança SSL e por isso, tente passar a porta 465 como SMTP

faelcavalcanti
Fala pessoal. Valeu mesmo. Consegui graças a vocês com as seguintes propriedades setadas abaixo:<blockquote>props.put(mail.transport.protocol, smtp);

props.put(mail.smtp.starttls.enable,true);

props.put(mail.smtp.host, <a href="http://gmail-smtp.l.google.com">gmail-smtp.l.google.com</a>);

props.put(mail.smtp.auth, true);

props.put(mail.smtp.user, <a>"[email removido]</a>");		

props.put(mail.smtp.host, <a href="http://gmail-smtp.l.google.com">gmail-smtp.l.google.com</a>);

props.put(mail.smtp.auth, true);

props.put(mail.debug, true);

props.put(mail.smtp.starttls.enable, true);

props.put(mail.smtp.port, 465);

props.put(mail.smtp.socketFactory.port, 465);

props.put(mail.smtp.socketFactory.class, javax.net.ssl.SSLSocketFactory);

props.put(mail.smtp.socketFactory.fallback, false);</blockquote>Sem essa galera do guj eu não ia longe. Fallow!!!  <img src="//https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/w.pngink.png?v=5" title=":wink:" class="emoji" alt=":wink:">
paulopugin

Está dando este erro para mim,
Autenticacao.java:1: package javax.mail does not exist
import javax.mail.Authenticator;

eu tenho o java.mail instalado, mas da esse erro no authenticator, o que pode ser??
onde eu baixo está classe??

victorwss

paulopugin:
Está dando este erro para mim,
Autenticacao.java:1: package javax.mail does not exist
import javax.mail.Authenticator;

eu tenho o java.mail instalado, mas da esse erro no authenticator, o que pode ser??
onde eu baixo está classe??

Problema de classpath.

Ah, e por favor, não ressuscite tópicos antigos (este daqui é de 2007). Ao invés disso, crie um tópico novo.

bebad

eu tenho uma raiva desses babacas que nao respondem a pergunta.
:evil: :evil: :evil:
SE VOCE NAO TEM NADA PRA ESCREVER OU SE NAO SABE RESPONDER A PERGUNTA CORRETAMENTE FICA CALADO. MUITO AJUDA QUEM NAO ATRAPALHA. :evil: :evil: :evil:


Caro paulopugin,

seu problema é que vc precisa adicionar este jar mail-1.4.jar no classpath do eclipse.
vc pode encontrar o jar neste endereço:
http://www.java2s.com/Code/Jar/wsit/Downloadmail14jar.htm

a melhor maneira de resolver é usando o Maven e setando esta dependencia:

javax.activation activation 1.0

Boa sorte.

:wink:

Criado 12 de junho de 2007
Ultima resposta 23 de out. de 2008
Respostas 6
Participantes 6