Используя javamail для отправки с hotmail?

У меня работает Gmail и Yahoo, но не Hotmail. Вот что у меня есть, что я делаю не так?

private String mailhost = "smtp.live.com";

    public hotmailSenderActivity(String user, String password) {   
    this.user = user;   
    this.password = password;   

  //This connects to the actual mailserver
    Security.addProvider(new com.provider.JSSEProvider());
    Properties props = new Properties();   
    props.setProperty("mail.transport.protocol", "smtp");   
    props.setProperty("mail.host", mailhost); 
    props.put("mail.smtp.starttls.enable", "true");  
    props.put("mail.smtp.auth", "true");   
    props.put("mail.smtp.port", "587");   
    props.put("mail.smtp.socketFactory.port", "587");   
    props.put("mail.smtp.socketFactory.class",   
            "javax.net.ssl.SSLSocketFactory");   
    props.put("smtp.starttls.enable", "true");
    props.put("mail.smtp.socketFactory.fallback", "false");   
    props.setProperty("mail.smtp.quitwait", "false");   

    session = Session.getDefaultInstance(props, this);  

Я пробовал порт 25 + 587 без SSL. Я пробовал порт 465 с вещами SSL. Адрес электронной почты и пароль верны (я их жестко запрограммировал).

Я не получаю никаких ошибок... Так в чем проблема?

2 ответа

Решение

1) использовать выходные данные отладки:

session.setDebug(true);

2) SMTP-сервер hotmail запускает не-ssl-соединение через порт 25 или 587 и использует starttls после первоначального подключения; таким образом удалить линии

props.put ("mail.smtp.socketFactory.port", "587");
props.put ("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

3) минимальное количество настроек тогда:

    props.setProperty("mail.transport.protocol", "smtp");
    props.setProperty("mail.host", "smtp.live.com");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.auth", "true");

предполагается, что порт равен 25, в противном случае добавьте props.put ("mail.smtp.port", "587");

4) еще приятнее выглядит это:

    ...
    props.put("mail.smtp.starttls.enable", "true");
    Session session = Session.getDefaultInstance(props);
    Transport trans = session.getTransport("smtp");
    trans.connect("smtp.live.com", 25, "user", "pass");

теперь вы подключены, используйте методы транспорта

http://www.oracle.com/technetwork/java/javamail/faq/index.html

Избавьтесь от всего этого, что вам не нужно.

Другие вопросы по тегам