Не могу получить почту от Gmail - PullRequest
0 голосов
/ 22 марта 2012

Я пытался получать почту из учетной записи Gmail.Но я не мог этого сделать.Я прочитал все вопросы в Stack Overflow и перепробовал все ответы, но это не сработало.

Вчера я нашел этот сайт: http://groups.google.com/a/googleproductforums.com/forum/#!category-topic/gmail/reading-and-receiving-messages/XD0C4sw9K7U

По данным сайта;больше нет возможности получать почту в Gmail.

Мой первый вопрос:слишком много Java-кода для получения почты из учетной записи Gmail.С этими кодами я могу видеть мой почтовый контент на консоли.Почему мы не можем получать почту в приложении Android?или если мы можем получить почту в приложении для Android.Как мы можем это сделать?

Мой второй вопрос: если я не могу получать почту с учетной записи Gmail, могу ли я получать почту с учетной записи Hotmail или другой учетной записи?

Ответы [ 5 ]

0 голосов
/ 04 июля 2013

http://blogs.wrox.com/files/2013/05/Chapter-8-9781118087299-2.pdf

Вы также узнаете, как использовать протокол HTTP для связи с веб-серверами, чтобы вы могли загружать текстовые и двоичные данные.В последней части этой главы показано, как анализировать файлы XML для извлечения соответствующих частей файла XML - метод, который полезен при доступе к веб-службам.

0 голосов
/ 29 октября 2012

У меня были проблемы с чтением некоторых сообщений Gmail, поэтому я задал вопрос относительно этого здесь .Код в вопросе может быть хорошим рабочим примером для вас.

И да, вы можете читать почту с любого сервера, который поддерживает доступ pop3 или imap.Пример для hotmail, просто измените хост на pop3.live.com и протокол на pop3s.Надеюсь, это поможет !!

0 голосов
/ 22 марта 2012

Вы не сказали, нашли ли вы код в FAQ по JavaMail.В интернете много старого и плохого кода, но известно, что код в FAQ работает.Тем не менее, похоже, что у вас есть код, который работает на консоли, так что, возможно, это специфическая проблема для Android.Всегда трудно понять, что может пойти не так, потому что Android не Java.В FAQ по JavaMail также есть советы по отладке, если вы их не нашли.В частности, трассировка протокола может предоставить информацию, необходимую для других, чтобы помочь вам отладить проблему.

0 голосов
/ 23 марта 2012
String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
Properties pr =  new Properties();
pr.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
pr.setProperty("mail.pop3.socketFactory.fallback", "false");
pr.setProperty("mail.pop3.port",  "995");
pr.setProperty("mail.pop3.socketFactory.port", "995");
pr.put("mail.pop3.host", "pop.gmail.com");
pr.setProperty("mail.store.protocol", "pop3");

            try {
                Session session = Session.getDefaultInstance(pr, null);
                Store store = session.getStore();
                store.connect("username", "password");
                if(store.isConnected()==true)
                {
                System.out.println("Connection is OK");
                }
//              Folder inbox = store.getFolder("INBOX");
                Folder inbox = store.getDefaultFolder().getFolder("INBOX");
                inbox.open(Folder.READ_ONLY);
                Message messages[] = inbox.getMessages();
                for(Message message:messages) 
                {
//              System.out.println(message.getSentDate());
                message.writeTo(System.out);
                }

С этим кодом я могу перейти только к строке "store.connect". На этой линии приложение неожиданно останавливается. Так что я не смог подключиться даже. Использование с mail.jar в Eclipse, Android Project

0 голосов
/ 22 марта 2012

попробуйте этот код

Mail m = new Mail(your email_id), your id password ));
String[] toArr = { send email id };
m.setTo(toArr);
m.setFrom(your email_id);
m.setSubject("Out of subject");
m.setBody("Out Of msg ");
try {
  m.send();
// Log.v("TAg", "send Mail");
} catch (Exception e) {
// Log.e("MailApp", "Could not send email", e);
}

mail.java

public class Mail extends javax.mail.Authenticator {
    private String _user;
    private String _pass;

    private String[] _to;
    private String _from;

    private String _port;
    private String _sport;

    private String _host;

    private String _subject;
    private String _body;

    private boolean _auth;

    private boolean _debuggable;

    private Multipart _multipart;

    public Mail() {
        _host = "smtp.gmail.com"; // default smtp server
        _port = "465"; // default smtp port
        _sport = "465"; // default socketfactory port

        _user = ""; // username
        _pass = ""; // password
        _from = ""; // email sent from
        _subject = ""; // email subject
        _body = ""; // email body

        _debuggable = false; // debug mode on or off - default off
        _auth = true; // smtp authentication - default on

        _multipart = new MimeMultipart();

        // There is something wrong with MailCap, javamail can not find a
        // handler for the multipart/mixed part, so this bit needs to be added.
        MailcapCommandMap mc = (MailcapCommandMap) CommandMap
                .getDefaultCommandMap();
        mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
        mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
        mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
        mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
        mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
        CommandMap.setDefaultCommandMap(mc);
    }

    public Mail(String user, String pass) {
        this();

        _user = user;
        _pass = pass;
    }

    public void setTo(String[] toArr) {
        _to = toArr;
    }

    public void setFrom(String from) {
        _from = from;
    }

    public void setSubject(String subject) {
        _subject = subject;
    }

    /** method will be check email validation **/
    public boolean send() throws Exception {
        Properties props = _setProperties();

        if (!_user.equals("") && !_pass.equals("") && _to.length > 0
                && !_from.equals("") && !_subject.equals("")
                && !_body.equals("")) {
            Session session = Session.getInstance(props, this);

            MimeMessage msg = new MimeMessage(session);

            msg.setFrom(new InternetAddress(_from));

            InternetAddress[] addressTo = new InternetAddress[_to.length];
            for (int i = 0; i < _to.length; i++) {
                addressTo[i] = new InternetAddress(_to[i]);
            }
            msg.setRecipients(MimeMessage.RecipientType.TO, addressTo);

            msg.setSubject(_subject);
            msg.setSentDate(new Date());

            // setup message body
            BodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setText(_body);
            _multipart.addBodyPart(messageBodyPart);

            // Put parts in message
            msg.setContent(_multipart);

            // send email
            Transport.send(msg);

            return true;
        } else {
            return false;
        }
    }

    /** This method(addAttachment) will allow attach the file in mail **/
    public void addAttachment(String filename) throws Exception {
        BodyPart messageBodyPart = new MimeBodyPart();
        DataSource source = new FileDataSource(filename);
        messageBodyPart.setDataHandler(new DataHandler(source));
        messageBodyPart.setFileName(filename);

        _multipart.addBodyPart(messageBodyPart);
    }

    public PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(_user, _pass);
    }

    private Properties _setProperties() {
        Properties props = new Properties();

        props.put("mail.smtp.host", _host);

        if (_debuggable) {
            props.put("mail.debug", "true");
        }

        if (_auth) {
            props.put("mail.smtp.auth", "true");
        }

        props.put("mail.smtp.port", _port);
        props.put("mail.smtp.socketFactory.port", _sport);
        props.put("mail.smtp.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");

        return props;
    }

    // the getters and setters
    public String getBody() {
        return _body;
    }

    public void setBody(String _body) {
        this._body = _body;
    }

    // more of the getters and setters …..
}

и добавить к

  1. mail.jar
  2. activation.jar
...