Conectar-se a um servidor de email em "localhost" indica que sua máquina tem um programa que faz "relay" de email, como o Microsoft SMTP Service.
Os servidores de email corporativos normalmente recusam emails que foram enviados dessa maneira, via "relay".
(Relay em inglês quer dizer que está sendo feito um "revezamento" - isso era muito comum nos dias mais antigos do email, em que as conexões entre servidores eram feitas por modems muito lentos.
O que ocorria antigamente, naqueles tempos da vovozinha:
Como o servidor guj.com.br e o franz.com não estão conectados à Internet, mas sim indiretamente via modems, é necessário especificar o caminho que a mensagem deve fazer.
Digamos que guj.com.br tenha uma ligação via modem para fapesp.br, e fapesp.br tenha uma ligação via modem para harvard.edu, e harvard.edu tenha uma ligação para franz.com.
Eu teria de especificar o email como:
kafka!fapesp.br!harvard.edu@franz.com --> note a rota que a mensagem tem de fazer, especificada no endereço!
e enviaria o email usando um servidor do guj.com.br, que iria se comunicar com fapesp.br e pôr isso no servidor de email da fapesp.br, onde ele iria ficar acumulado até que conseguisse se conectar com harvard.edu. Aí o harvard.edu, quando tiver tempo, vai conectar-se com o franz.com, para finalmente mandar a mensagem. Que coisa!
Hoje em dia é possível, pela Internet, comunicar-se diretamente com franz.com, e todo esse esquema de "relay" não é mais necessário, e é até perigoso.
Você deve especificar um servidor de email válido.
Se você tem uma conta do sapo.pt, então deve especificar o servidor de SMTP do sapo.pt por exemplo.
Não, para fazer o que vc quer procure por servidores SMTP que aceitem enviar mensagens sem autenticação, a implementação de autenticação nos servidores SMTP foi criada exatamente para evitar o que vc quer fazer.
Ok. alterei o meu codigo para ficar com isto da autenticação mas agora da-me o seguinte erro:
javax.mail.MessagingException: Could not connect to SMTP host: smtp.sapo.pt, port: 2525;
nested exception is:
java.net.ConnectException: Connection timed out: connect
o codigo é o seguinte:
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
public class Main
{
public static void main (String[] args)
{
try
{
postMail ();
}
catch (MessagingException e)
{
System.out.println ("Erro: " + e);
}
}
public static void postMail () throws MessagingException
{
final boolean debug = false;
String user;
String password;
Properties p = new Properties ();
p.put("mail.smtp.user", "dir@sapo.pt");
p.put ("mail.smtp.host", "smtp.sapo.pt");
p.put("mail.smtp.port", "2525");
p.put("mail.smtp.auth", "true");
Authenticator auth = new SMTPAuthenticator ();
Session session = Session.getInstance (p, auth);
session.setDebug (debug);
Message msg = new MimeMessage (session);
Address to = new InternetAddress ();
msg.setSubject ("Mensagem teste");
StringBuffer mensagem = new StringBuffer ();
String message;
String linha;
try
{
mensagem.append ("Ola isto é uma mensagem teste");
message = mensagem.toString ();
msg.setContent (message, "text/html");
to = new InternetAddress ("dir@hotmail.com");
msg.setRecipient (Message.RecipientType.TO, to);
Transport.send (msg);
Thread.sleep (10);
}
catch (Exception e)
{
System.out.println (e);
}
}
public static class SMTPAuthenticator extends Authenticator
{
private String username;
private String password;
public SMTPAuthenticator ()
{
super ();
this.username = "dir@sapo.pt";
this.password = "minhapassword";
}
protected PasswordAuthentication getPasswordAuthentication ()
{
return new PasswordAuthentication (username, password);
}
}
}
O que é que está mal e o que é que é preciso adicionar??
Não posso fazer isso porque o meu Local Relay SMTP Server diz me que existe outro programa qualquer a usar essa porta e por isso não pode usa-la… como eu eu nao sei qual e o tal programa nao posso desliga lo por isso usei esta porta alternativa…
De qualquer forma antes eu conseguia enviar emails para a conta do sapo.pt. Agora, desde que fiz estas alteracoes da autenticação, já nao da…