Ola
to fazendo uns teste aqui com essa api
e não esta enviando emails para outro dominio do email configurado.
email config nome@empresa.com.br
os emails teste@empresa.com.br 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
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.
@empresa.com.br é um email de verdade.
substituindo @empresa.com.br para @gmail.com
so consigo enviar para emails do dominio @gmail.com
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.
[code]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("andre@softin.com.br"));
//Setando a origem do email
msg.setFrom(new InternetAddress("webmail@empresa.com.br"));
//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();
}
}[/code]
classe de autenticação
[code]public class autenticacao extends Authenticator {
public synchronized PasswordAuthentication getPasswordAuthentication(){
String usuario = null, senha = null;
//É criada um JPanel e inserido no ConfirmDialog
usuario = "nome@empresa.com.br";
senha = "123456";
/*PasswordAuthentication é o objeto responsável por transportar
* as informações de autenticação
*/
return new PasswordAuthentication(usuario,senha);
}
}[/code]
mas e o seu SMTP como esta configurado?
smtp.empresa.com.br ?
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.