2016-05-11 2 views
0

Ich muss E-Mails mit Java senden und läuft auf ein Problem, das ich nicht reparieren kann. Ich erhalte die folgende Fehlermeldung:Mail-Client blockiert von spamhaus

javax.mail.SendFailedException: Ungültige Adressen; verschachtelte Ausnahme ist: com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 Dienst nicht verfügbar; Client [xx.xx.xx.xx] blockiert mit zen.spamhaus.org

Der Teil Ich verstehe nicht, ist, über die IP-Adresse maskiert als xx.xx.xx.xx tatsächlich Adresse meiner Entwicklung Computer öffentliche IP ist und nicht verbunden an den Mailserver, den ich irgendwie benutze.

Der Mailserver ist mein eigener, ich kann Mail über alle anderen Kanäle senden, die ich ausprobiert habe (node.js App, E-Mail-Client, ...) und der Server ist in keiner gesperrten Liste.

Der Code ich benutze ist die folgende:

public class SendMailExample { 

    public void sendMail(String smtpHost,String username,String password,String senderAddress,String recipientsAddress,String subject,String text){ 
     MailAuthenticator auth = new MailAuthenticator(username, password); 
     Properties properties = new Properties(); 
     properties.put("mail.smtp.host", smtpHost); 
     properties.put("mail.smtp.auth", "true"); 
     Session session = Session.getDefaultInstance(properties, auth); 

     try { 
      Message msg = new MimeMessage(session); 

      msg.setFrom(new InternetAddress(senderAddress)); 
      msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(
        recipientsAddress, false)); 
      msg.setSubject(subject); 
      msg.setText(text); 
      msg.setHeader("Test", "Test"); 
      msg.setSentDate(new Date()); 
      Transport.send(msg); 

     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    class MailAuthenticator extends Authenticator { 
     // more code - I think unrelated 
    } 

    public static void main(String[] args) { 
     String username = "[email protected]"; 
     String password = "pass"; 
     String senderAddress ="[email protected]"; 
     String recipientsAddress = "[email protected]"; 
     String subject = "Test"; 
     String text = "text"; 
     String smtpHost = "smtp.myMailServer.com"; 
     new SendMailExample().sendMail(smtpHost, username, password, senderAddress, recipientsAddress, subject, text); 
    } 
} 
+0

Versuchen Sie, eine Netzwerküberwachung zu erhalten, um zu sehen, ob Sie wirklich mit der internen Adresse des Mailservers verbunden sind. – gfelisberto

+0

Der E-Mail-Server verwendet möglicherweise den angegebenen Computernamen, und bei der Reverse-Suche wird die öffentliche IP-Adresse zurückgegeben. – Konrad

Antwort

0

es wurde gelöst durch die folgende Veränderung:

Hinzugefügt:

properties.put("mail.smtp.starttls.enable", "true"); 

Zum Bauteileigenschaften und statt

Transport.send(msg); 

Ich verwende jetzt