2012-04-16 2 views
1

Я пытаюсь отправить электронное письмо с помощью apache james, но электронные письма не отправляются в delievered. Ниже мой код.Отправка электронной почты не работает с использованием Apache James

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();  
     } 
     } 
} 

Также тестовый пользователь добавлен в apache james с паролем. Прошу вас любезно помочь мне в том же.

+0

На самом деле у вас есть почтовое реле, работающее на 'localhost'? – Perception

+1

Ну, если вы еще не знаете, то ответ, вероятно, нет. Но вы можете протестировать по telneting на localhost, порт 25. Если есть один запуск, вы сможете подключиться, и он должен напечатать имя почтового сервера. Убедитесь, что локальное эхо включено в командной оболочке. – Perception

+0

Кроме того, вы можете попробовать поставить предложение try/catch во весь основной метод, чтобы проверить, не выбрасываются ли какие-либо исключения. –

ответ

0

Я столкнулся с той же проблемой. То, что я сделал:

  1. Перейти к пути: \ Apps \ Джеймса \ конф
  2. Открыть для редактирования имени файла 'Джеймса-fetchmail.xml'
  3. Изменить "Fetchmail" от ложного к истине, как:
  4. Перезапустите сервер Apache James.
  5. Вы увидите следующие сообщения, напечатанные на консоли после запуска сервера:
  6. 2.3.2 Service Remote Manager

Джеймс Mail Server запускается обычным: 4555 служба POP3 начала равнина: 110 службы SMTP начала равнина: 25 Начальная установка NNTP: 119 FetchMail Начато

Теперь запустите свою программу. Он должен работать!

+0

Я делал изменения fetchmail от false до true ... но все еще получаю ошибку 553 # 5.1.8 Домен адреса отправителя не существует ..... – user1251973

1

Я думаю, что проблема, вызванная этим:

Серверы электронной почты, прежде чем принимать почту сделать обратный запрос DNS. Они проверяют ip-адрес домена, из которого поступает электронная почта, и ip-адрес, с которого действительно поступает электронное письмо.

Если ip домена и ip отправителя электронной почты не совпадают, почтовые серверы считают, что письмо является нежелательным или спамом.

Здесь, поскольку ваш домен (localhost) не является допустимым адресом, когда сервер электронной почты отправляет обратный запрос DNS, не получает IP-адрес и считает, что ваша почта является нежелательной или спамом.

Для получения дополнительной информации проверить это: http://wiki.junkemailfilter.com/index.php/Fixing_Reverse_DNS

0

вы добавили домен «локальный» ли? Если нет, сначала добавьте домен, а затем создайте пользователей.

$ Джеймс-кли adddomains -h 127.0.0.1 локальный

проверить, если домен существует

$ Джеймс-lisdomains -h CLI 127.0.0.1

И, как вы начали Джеймс? Использование james.bat?

Смежные вопросы