2012-04-16 6 views
1

아파치 제임스를 사용하여 이메일을 보내려고하지만 이메일이 전송되지 않습니다. 아래는 제 코드입니다.아파치 제임스를 사용하는 이메일 전송이 작동하지 않습니다.

import java.util.*; 
import javax.mail.*; 
import javax.mail.internet.*; 

public class test { 

    public static void main(String args[]) throws Exception { 

     String user = "test"; 

     String password = "test"; 
     String fromAddress = "[email protected]"; 
     String toAddress = "[email protected]";   
     Properties properties = new Properties();  
     properties.put("mail.smtp.host", "localhost");  
     properties.put("mail.smtp.port", "25");  
     properties.put("mail.smtp.username", user);  
     properties.put("mail.smtp.password", password); 
     properties.put("mail.transport.protocol", "smtp"); 

     Session session = Session.getDefaultInstance(properties, null);  

     try    
     {   
      Message message = new MimeMessage(session);   
      message.setFrom(new InternetAddress(fromAddress));   
      message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toAddress));   
      message.setSubject("Email from our JAMEs");   
      message.setText("hiiiiii!!");   
      Transport.send(message);   
      System.out.println("Email sent");  
     }  
     catch (MessagingException e)  
     {   
      e.printStackTrace();  
     } 
     } 
} 

또한 테스트 사용자 암호를 갖는 테스트 아파치 제임스 첨가된다. 너를 친절하게 나를 도와 달라.

+0

사실'localhost'에서 메일 릴레이를 실행하고 있습니까? – Perception

+1

글쎄, 만약 당신이 이미 알고 있지 않다면 그 대답은 아마도 아니오 일 것이다. 그러나 로컬 호스트 인 포트 25로 telnet으로 테스트 할 수 있습니다. 하나가 실행 중이면 연결할 수 있고 메일 서버의 이름을 인쇄해야합니다. 명령 셸에서 로컬 에코를 사용하도록 설정하십시오. – Perception

+0

또한 예외 전체가 던져지고 있는지 확인하기 위해 전체 주 메서드 주위에 try/catch 절을 넣을 수도 있습니다. –

답변

0

나는 똑같은 문제에 직면했다. 내가 무슨 짓을 : 경로에

  1. 이동 : \ 애플 리케이션 제임스를 \ \ conf의
  2. 열기 편집 진실 같은 거짓에서 파일 이름 '제임스 - fetchmail.xml'
  3. 변경 "패치 메일"에 대한 :
  4. Apache James Server를 다시 시작하십시오.

제임스 메일 서버 2.3.2 원격 관리자 서비스는 일반 시작 : 서버를 시작한 후

  • 당신은 콘솔에 인쇄 된 다음과 같은 메시지를 볼 것이다 (110) SMTP 서비스 시작 : 4555 POP3 서비스는 일반 시작 일반 : 25 NNTP 서비스가 시작됨 : 119 FetchMail이 시작됨

    이제 프로그램을 실행하십시오. 그것은 작동해야합니다! 메일을 수락하기 전에

    이메일 서버가 역방향 DNS 쿼리를 수행

  • +0

    fetchmail을 false에서 true로 변경했지만 오류 553이 여전히 발생했습니다. 5.1.8 보낸 사람 주소의 도메인 이 없습니다 ..... – user1251973

    1

    나는이로 인한 문제를 생각합니다. 그들은 전자 메일이 보낸 도메인과 전자 메일이 실제로 왔는지 확인합니다.

    전자 메일 보낸 사람의 도메인 및 IP가 일치하지 않으면 메일 서버에서 전자 메일이 정크 또는 스팸이라고 생각합니다.

    이메일 서버가 역방향 DNS 쿼리를 보내면 도메인 (로컬 호스트)이 유효한 주소가 아니기 때문에 여기에 IP가 없으며 메일이 스팸 또는 스팸이라고 생각합니다.

    자세한 정보는이를 확인의 경우 : http://wiki.junkemailfilter.com/index.php/Fixing_Reverse_DNS

    0

    당신이 "로컬 호스트"도메인을 추가 했습니까? 그렇지 않으면 도메인을 먼저 추가하고 사용자를 만든 후에

    $ 제임스 - CLI adddomains -h 127.0.0.1 localhost를

    검사 도메인 당신이 제임스를 시작 어떻게,

    $ 제임스 - CLI lisdomains -h 127.0.0.1

    그리고 존재하는 경우? james.bat를 사용 하시겠습니까?