2011-01-14 3 views
0

내가 [email protected]JavaMail에 1.4.3 메일 보내기하지만 Exchange 2003을

시도 { 속성 P = System.getProperties에 대한 릴레이 할 수 없습니다 (550) 5.7.1()를 받고 계속;

 p.put("mail.smtp.host", "server IP"); 
     p.put("mail.smtp.port", "25"); 
     p.put("mail.debug", "true"); 
     Session s = Session.getDefaultInstance(p); 

     Message msg = new MimeMessage(s); 

     msg.setFrom(new InternetAddress(from)); 

     msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); 

     msg.setSubject(subject); 

     Multipart mp = new MimeMultipart(); 

     BodyPart bp = new MimeBodyPart(); 
     bp.setText(message); 

     mp.addBodyPart(bp); 

     msg.setContent(mp); 

     Transport t = s.getTransport("smtp"); 
     t.send(msg); 
     return 0; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return 1; 
    } 

답변

0

아마도 귀하의 Exchange 서버는 귀하가 제출하는 IP에 대해 중계를 허용하지 않으십니까? 또는 중계하기 전에 인증이 필요할 수 있습니다.

+0

메신저에서 IP 제출이 설정되고 허용됩니다. 인증에 관해서는 관리자는 이메일을 보낼 필요가 없다고 말했다. 나는 틀린 것을 추측한다. 이제 인증을 계속하면 어떨까요? –

+0

흠 ... 아마이 질문을보십시오 http://stackoverflow.com/questions/4337812/javamail-ntlm-authentication-failure NTLM은 보통 교환이 원하는 것입니다. –

1

먼저 교환기 smtp에 로그인해야합니다.

String host = "smtp.gmail.com; 
String username = "user"; 
String password = "passwd"; 
Properties props = new Properties(); 
props.put("mail.smtps.auth", "true"); 
// ... 
MimeMessage msg = new MimeMessage(session); 
// set the message content here 
Transport t = session.getTransport("smtps"); 
try { 
t.connect(host, username, password); 
t.sendMessage(msg, msg.getAllRecipients()); 
} finally { 
t.close(); 
} 

또는

변경하여 Exchange 설정을 사용하여 Exchange 서버의 전원 을 릴레이 로그인없이

허용 응용 프로그램 서버를 보낼 수 있도록 2007 http://msexchangeteam.com/archive/2006/12/28/432013.aspx

관련 문제