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

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:

[code]/*

  • 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 = "meumail@gmail.com";

    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 = "meumail@gmail.com";

    // Add List of Email address to who email needs to be sent to
    private static final String[] emailList = { "meumail@gmail.com" };

    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);
      }
      }
      }[/code]

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.[quote]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)[/quote]

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

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

No seu Properties, tente colocar mais estas linhas:

props.put("mail.smtp.user", "email@gmail.com"); 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

Fala pessoal. Valeu mesmo. Consegui graças a vocês com as seguintes propriedades setadas abaixo:[quote]props.put(“mail.transport.protocol”, “smtp”);
props.put(“mail.smtp.starttls.enable”,“true”);
props.put(“mail.smtp.host”, “gmail-smtp.l.google.com”);
props.put(“mail.smtp.auth”, “true”);
props.put(“mail.smtp.user”, "meumail@gmail.com");
props.put(“mail.smtp.host”, “gmail-smtp.l.google.com”);
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”);[/quote]Sem essa galera do guj eu não ia longe. Fallow!!! :wink:

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

[quote=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??[/quote]

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.

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: