2012-08-08 3 views
0

im сталкивается с некоторыми проблемами с сервером Lotus. Парень, ответственный за сервер, говорит мне, что конфигурация в порядке, но я не могу отправить почту с телом html с его сервером лотоса.javaMail с сервером Lotus

Ошибки я получаю: «554 Реле отклонено по политическим причинам»

Когда я пытался на моем компьютере, я использовал smpt.gmail.com и работал как чемпион. Поэтому я считаю, что это не проблема с кодом, и проблема связана с конфигурацией сервера.

Есть ли проблема с javaMail и Lotus? это общая проблема? (В одном блоге какой-то парень говорил, что не может быть возможным, чтобы отправить HTML, но я не могу поверить, что)

Мой код только в том случае,

public void sendEmail(String toEmailAddr, String subject, String issue) { 
    Properties props = new Properties(); 
    props.put("mail.smtp.host", host); 
    props.put("mail.smtp.port", port); 

    Session mailSession = Session.getDefaultInstance(props); 
    Message simpleMessage = new MimeMessage(mailSession); 

    InternetAddress toAddress = null; 
    InternetAddress toAddress2[] = null; 
    Transport t = null ;  

    try { 
     Multipart mp = new MimeMultipart(); 
     MimeBodyPart htmlPart = new MimeBodyPart(); 
     htmlPart.setContent(issue, "text/html"); 
     mp.addBodyPart(htmlPart); 
     simpleMessage.setContent(mp); 
    } catch (MessagingException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    }  
    try { 
     toAddress = new InternetAddress(toEmailAddr); 
     toAddress2 = new InternetAddress [1]; 
     toAddress2[0] = toAddress;   
    } catch (AddressException e) { 
     // TODO LOG 
     e.printStackTrace(); 
    } 
    try { 
     simpleMessage.setRecipients(RecipientType.TO, toAddress2); 
     simpleMessage.setSubject(subject);   
     t = mailSession.getTransport("smtp");  
     if(userPwd==null) 
      userPwd = ""; 
     t.connect(host, userName, userPwd); 
     t.sendMessage(simpleMessage, simpleMessage.getAllRecipients()); 
    } catch (MessagingException e) { 
     e.printStackTrace(); 
     // TODO LOG 
    }finally{ 
     try { 
      t.close(); 
     } catch (MessagingException e) { 
      // TODO LOG 
     } 
    } 
} 

С уважением.

+0

Вы пытались использовать SMTP-сервер Domino с обычным почтовым клиентом, например, thunderbird? «Сообщение, отклоненное по причинам политики», может означать больше или меньше всего, и это может быть либо неправильная конфигурация, либо преднамеренная настройка. –

+0

Ну, сначала он должен быть с сервером лотоса. его мой первый раз, делая это, так что, если вы можете дать мне некоторую сеть, чтобы прочитать о dominio SMTP, было бы хорошо. –

+0

Можете ли вы прочитать консоль сервера Domino и/или сервер при попытке отправить? Это может привести к более подробным сообщениям об ошибках. –

ответ

3

SMTP на сервере Domino, скорее всего, был настроен так, чтобы разрешать передачу только определенным хостам, поэтому сообщение об ошибке 554 Relay rejected for policy reasons.

Вы должны поговорить с администратором и попросить его изменить конфигурацию, чтобы разрешить ретрансляцию другими хостами. Это настроено в документе конфигурации в разделе «Маршрутизатор/SMTP -> Ограничения и элементы управления -> SMTP Inbound Controls». Более подробную информацию о средствах управления входящим реле SMTP можно найти здесь: http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp?topic=%2Fcom.ibm.help.domino.admin.doc%2FDOC%2FH_SETTING_INBOUND_RELAY_CONTROLS_STEPS.html

+0

реле разрешено. Atm мы можем отправлять письма, пересылающие telnet, но все же имеющие ту же проблему. –

+0

554, как уже объяснил Пер Хенрик, определенно сообщение об ошибке сервера. Попробуйте отправить через Telnet с компьютера, на котором работает ваш код, и использовать отправителя и получателя, который будет использовать ваш код. – leyrer

+0

Согласовано. Это определенно проблема конфигурации сервера. Это отрицание реле. Когда вы подключаетесь через telnet, отправляете ли вы к тому же toEmailAddr? Вы подключаетесь к тому же компьютеру, на котором запущен Java-код? И еще один вопрос: используете ли вы AUTH LOGIN в своей сессии telnet? Кроме того, есть IP-адрес хоста или это DNS-имя? Если это DNS-имя, и ваш сервер имеет несколько IP-адресов, уверены ли вы, что он разрешает IP-адрес внутренней сети вместо внешнего адреса? –

0

Может потребоваться защищенное соединение (SSL). Используйте следующие свойства для подключения почтового сервера, поддерживающего протокол smtp :

properties.put("mail.smtp.socketFactory.port", "SMTP_PORT"); 
    properties.put("mail.smtp.host", "SMTP_SERVER_HOST_NAME_OR_IP"); 
    properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    properties.put("mail.smtp.socketFactory.fallback", "false"); 
Смежные вопросы