Не удается определить почтовый сервер IMAP для Gmail

Я делаю приложение на Android, которое извлекает электронные письма из учетных записей Gmail с помощью JavaMail API. Вот мой код:

    Properties props = new Properties();
    props.setProperty("mail.store.protocol", "imaps");
    props.setProperty("mail.imaps.host", mailServer);
    props.setProperty("mail.imaps.port", "993");
    props.setProperty("mail.imaps.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.setProperty("mail.imaps.socketFactory.fallback", "false");
    if (debug) Log.i("check","before session");
    Session imapSession = Session.getDefaultInstance(props,null);
    if (debug) Log.i("check","after session");

Как только код достигает строки imapSession, приложение просто аварийно завершает работу. Другими словами, он никогда не доходит до последней строки. Я пробовал несколько строк mailServer:

imaps.gmail.com
imap.gmail.com
imaps.googlemail.com
imap.googlemail.com

и вроде ничего не работает. Это порт? Я уверен, что добавил правильные разрешения, ошибка в журнале cat в любом случае не упоминает разрешения.

Другой вопрос, где я могу получить такую ​​информацию для Gmail и других почтовых серверов?


person himura    schedule 13.08.2012    source источник


Ответы (1)


Начнем с упрощения. Вы сделали несколько распространенных ошибок JavaMail. Выбросьте свой код и используйте простой код из FAQ JavaMail для подключения в Gmail. Затем воспользуйтесь советами в FAQ JavaMail для отладки любого оставшиеся проблемы. Если у вас все еще есть проблемы, опубликуйте дополнительную информацию здесь.

person Bill Shannon    schedule 13.08.2012
comment
Спасибо ... Пройду по ссылкам и вернусь к вам. Извини, я был занят в эти дни - person himura; 16.08.2012
comment
Итак, мои ошибки были: 1- Session imapSession = Session.getDefaultInstance (props, null); 2- props.setProperty (mail.imaps.socketFactory.class, javax.net.ssl.SSLSocketFactory); что я сделал: 1- может стать проблемой для меня в последнее время, но пока я не думаю, что это проблема, поскольку приложение вылетает с самого первого использования. Но в любом случае лучше использовать .getInstance () ... я прав? 2- я удалил его и установил для mail.smtp.ssl.enable значение true, как предлагает ссылка. Я также удалил: props.setProperty (mail.imaps.socketFactory.fallback, false); - person himura; 23.08.2012
comment
по-прежнему ошибка - вот журнал - E / AndroidRuntime (19029): java.lang.NoClassDefFoundError: javax.mail.Session. . . Я обнаружил, что мне нужно добавить несколько файлов jar, но я их добавил! где я ошибся?! - person himura; 23.08.2012
comment
Что ж, очевидно, вы их неправильно добавили. Это то, что вы имели в виду под тем, что приложение вылетает в исходном сообщении? В любом случае, похоже, что вы столкнулись с проблемой, связанной с Android, и кто-то другой должен вам помочь. Здесь есть много других вопросов об использовании JavaMail с Android, поэтому, возможно, небольшой поиск даст ответ. - person Bill Shannon; 23.08.2012
comment
Я только что починил. кажется, мне пришлось их расставить в определенном порядке! я выполнил этот ответ это сработало, но я не понимаю почему !!? у тебя есть идеи? - person himura; 23.08.2012