当前位置: 首页 > 面试题库 >

阅读从GMail发送的邮件

班玉堂
2023-03-14
问题内容

我正在使用JavaMail在Android应用程序中阅读邮件。我试图涵盖所有组合,即在“自定义服务器” /“ Gmail ID” /“ Live
ID”上发送/接收的邮件。

从GMail WITH
Attachment发送的某些邮件中出现问题。我可以收到附件,但是内容返回javax.mail.internet.MimeMultipart@44f2e698

这是用于接收和阅读消息的代码

    Properties props = System.getProperties();
    props.setProperty("mail.store.protocol", "imap");

    try {
     /* Create the session and get the store for read the mail. */
     Session session = Session.getInstance(props, null);
     Store store = session.getStore("imaps");
     store.connect("imap.gmail.com", Username, Password);

     /* Mention the folder name which you want to read. */
     Folder inbox = store.getFolder("INBOX");
     System.out.println("No of Unread Messages : " + inbox.getUnreadMessageCount());

     /* Open the inbox using store. */
     inbox.open(Folder.READ_ONLY);

     Message messages[] = inbox.getMessages();       
     Log.d("Inbox", "Message Count: "+inbox.getMessageCount());

     for (int i = messages.length - 1 ; i > 0; --i) {
         Log.i("ContentType", "ContentType: "+messages[i].getContentType());

         Object msgContent = messages[i].getContent();

         String content = "";

         /* Check if content is pure text/html or in parts */            
         if (msgContent instanceof Multipart) {

             Multipart multipart = (Multipart) msgContent;

             Log.e("BodyPart", "MultiPartCount: "+multipart.getCount());

             for (int j = 0; j < multipart.getCount(); j++) {

              BodyPart bodyPart = multipart.getBodyPart(j);

              String disposition = bodyPart.getDisposition();

              if (disposition != null && (disposition.equalsIgnoreCase("ATTACHMENT"))) { // BodyPart.ATTACHMENT doesn't work for gmail
                  System.out.println("Mail have some attachment");

                  DataHandler handler = bodyPart.getDataHandler();
                  System.out.println("file name : " + handler.getName());                                 
                }
              else { 
                  System.out.println("Content: "+bodyPart.getContent());
                  content= bodyPart.getContent().toString();
                }
            }
         }
         else                
             content= messages[i].getContent().toString();

我对有问题的邮件的了解:

  • getFrom 还返回名称,即以这种格式出现FirstName LastName <emailID@gmail.com>

  • MultiPart包含2个BodyPart:

    • BodyPart 1将内容返回为 javax.mail.internet.MimeMultipart@44f2e698

    • BodyPart 2返回正确的附件名称


问题答案:

BodyPart 1将内容返回为javax.mail.internet.MimeMultipart@44f2e698

尝试在MimeMultiPart上调用getBodyPart

这可能会返回一个MimeBodyPart,您可以在http://docs.oracle.com/javaee/5/api/javax/mail/internet/MimeBodyPart.html#content上
调用getContent()



 类似资料:
  • 我已经在Gmail中的Check mail from other accounts(使用POP3)和Send mail as(使用TLS在587端口通过mail.mydomain.com安全连接发送邮件)下设置了我的cpanel电子邮件地址 看着Roundcube,我可以看到里面有收到的邮件,但没有发送的邮件——尽管Gmail是通过我的域服务器发送的。 有没有办法查看通过Gmail收发的邮件?

  • 问题内容: 我正在使用javamail,但无法从Gmail电子邮件中获取HTML。我有以下内容: 上面所有方法都可以,但是我无法打印或获取实际的HTML或文本电子邮件。我只是得到某种InputStream,如何轻松处理以获得原始的电子邮件HTML? 我也尝试遍历消息,但这并没有使我走得太远: } 谢谢大家的帮助。 问题答案: 该对象包含电子邮件的正文。您需要阅读整个流,才能阅读整个消息。例如,该S

  • 我有一个Glassfish v3应用程序可以发送电子邮件。多年来它一直运行良好,但从7月2日开始,它在java.net.UnknownHostException中失败了。 下面请找到我的JavaMail配置和Glassfish日志条目。 任何想法都将不胜感激。 JavaMail会话配置 邮件主机:imap.gmail.com 默认用户:mailrobot-se@s****x.se 默认返回地址:m

  • 问题内容: 我正在从Java应用程序向Gmail帐户发送邮件。我曾经使用过Java Mail API,并且运行良好。但是是否可以在不使用Java中的邮件API的情况下发送电子邮件? 我的意思是仅使用套接字: 但它不起作用,它不会发送邮件。谁能告诉我可能是什么问题? 问题答案: 这是一个很好的例子: -> http://www.java2s.com/Code/Java/Network-Protoco

  • 我有发送邮件与谷歌SMTP和最新版本的PHPMailer的问题。这里有很多问题,但是答案对我不起作用。我使用免费托管与免费子域。这是我的标准PHP代码发送电子邮件从文档: 我得到了这个错误: .... 2017-06-03 15:15:33服务器- 如果将与端口一起使用,我会看到相同的错误。 在我的电子邮件帐户2中,工厂身份验证处于和处于。 我真的不知道该怎么办。

  • 我用竹子来让我的网站访问者填写并发送一份联系表。 我创建了一个服务帐户 我授予它全域权限 我添加了以下范围:https://www.googleapis.com/auth/gmail.addons.current.action.compose https://www.googleapis.com/auth/gmail.addons.current.message.metadatahttps://w