JavaMail eviando para qualquer email

5 respostas
andredeividi

Ola

to fazendo uns teste aqui com essa api
e não esta enviando emails para outro dominio do email configurado.

email config [email removido]

os emails [email removido] são enviados corretamente
mas se o email for @gmail.com ou outro dominio, não vai e nem da erro.

alguem tem a soluçao?

obrigado

5 Respostas

T

Aponte para um servidor de email de verdade, que possa mandar emails para qualquer lugar e possa fazer conexões para a Internet.
Apontar para “localhost” normalmente chama o Microsoft SMTP Server (disponível em máquinas Windows NT/2000/2003) ou o sendmail (se for uma máquina Linux), e normalmente ambos não estão devidamente configurados.

andredeividi

@empresa.com.br é um email de verdade.

substituindo @empresa.com.br para @gmail.com

so consigo enviar para emails do dominio @gmail.com

andredeividi

o email @empresa.com.br é um exemplo que estou colocando para inlustrar a configuração aqui no codigo verdadeiro e outra coisa
esse email é da locaweb.

public static void  email(String texto)  throws MessagingException {
        //Properties - objeto responsável por armazenar as propriedades
        Properties props = new Properties();
        //Protocolo utilizado SMTP
        props.put("mail.transport.protocol", "smtp");
        //Indica que necessita de autenticação para acessar o servidor
        props.put("mail.smtp.auth", "true");
        //Servidor de SMTP
        props.put("mail.smtp.host", "webmail.empresa.com.br");
        
        
      
        Session session = Session.getDefaultInstance(props, new autenticacao());
        //Habilita o LOG das ações executadas durante o envio do email
        //session.setDebug(true);
        
        //Objeto que contém a mensagem
        Message msg = new MimeMessage(session);
        
        try {
            //Setando o destinatário
            msg.setRecipient(Message.RecipientType.TO, new InternetAddress("[email removido]"));
            //Setando a origem do email
            msg.setFrom(new InternetAddress("[email removido]"));
            //Setando o assunto
            msg.setSubject("Leitura de ");
            //Setando o conteúdo/corpo do email
            msg.setText(texto);
            

            
            System.out.println("Email Enviado");
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            //Envio do email
            Transport.send(msg);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

classe de autenticação

public class autenticacao extends Authenticator {
	public synchronized PasswordAuthentication getPasswordAuthentication(){
		String usuario = null, senha = null;
		//É criada um JPanel e inserido no ConfirmDialog
		
			usuario = "[email removido]";
			senha = "123456";
		/*PasswordAuthentication é o objeto responsável por transportar
		 * as informações de autenticação
		 */
		return new PasswordAuthentication(usuario,senha);
	}
}
ramilani12

mas e o seu SMTP como esta configurado?

smtp.empresa.com.br ?
bielmenezes

Antes de enviar o email para outros dominios você precisa se autenticar no servidor de email que está usando, utilizando a mesma senha de autenticação que você usa para configurar o outlook por exemplo.

Faça um teste:

Session sessao = null;
    
    Properties props = new Properties();
    props.put("mail.transport.protocol", "smtp" );
    props.put("mail.smtp.host", SERVIDOR_SMTP );
    props.put("mail.stmp.port", "465" );
    props.put("mail.smtp.auth", "true" );
    props.put("mail.smtp.ssl", "true" );
    props.put("mail.smtp.ehlo", "true" );
    
    sessao = Session.getDefaultInstance(props, new Autenticador(USER, SENHA));
    sessao.setDebug(true); 
    transport = (SMTPTransport) sessao.getTransport("smtp" );
    transport.connect();

CLASSE AUTENTICADOR:

public class Autenticador extends Authenticator{

private String user;
private String senha;

public Autenticador() {
    
}

public Autenticador(String user, String senha){
    this.user = user;
    this.senha = senha;
}

public PasswordAuthentication getPasswordAuthentication(){
    return new PasswordAuthentication(user,senha);
}

}

ps:Com a instrução sessao.setDebug(true); você poderá observar no console se a autenticaçao e a conexao com o servidor foram bem sucedidas.

Criado 19 de junho de 2007
Ultima resposta 19 de jun. de 2007
Respostas 5
Participantes 4