在gmail-api中获取发件人邮件 [英] Get sender mail in gmail-api

查看:102
本文介绍了在gmail-api中获取发件人邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图通过gmail-api开发人员指南来弄清楚它.gmail-api中的消息部分不包含有关发件人的任何详细信息,感谢帮助.

I am trying to figure it out went through gmail-api developer guide.The message part in gmail-api does not contain any detail about sender any help is appreciated thanks.

推荐答案

好吧,我终于做到了.获取消息有效负载,然后从有效负载循环中通过名称为"from"的标头获取标头

Ok I finally did it.Get message payload and then get headers from payload loop through the headers with name "from"

header格式的格式为header = [name:"somename" value:"somevalue"]

format of header is of the form header=[name:"somename" value:"somevalue"]

这是我的代码,希望它对某人有帮助

here is my code hope it helps someone

private List<MessageReader> getDataFromApi() throws IOException {
            String user = "me";
            List<MessageReader> labels = new ArrayList<MessageReader>();
            ListMessagesResponse listResponse = mActivity.mService.users().messages().list(user).setQ(query).execute();
            //int i=0;
            for (Message label : listResponse.getMessages()) {
                Message m =  mActivity.mService.users().messages().get(user, label.getId()).execute();
                String a =""; 
                try{
                    List<MessagePart> parts  =m.getPayload().getParts();
                    List<MessagePartHeader> headers = m.getPayload().getHeaders();
                    MessageReader mreader = readParts(parts);
                    mreader.setDate(m.getInternalDate());
                    for(MessagePartHeader header:headers){
                        String name = header.getName();
                        if(name.equals("From")||name.equals("from")){
                            mreader.setSender(header.getValue());
                            break;
                        }
                    }
                    labels.add(mreader);
                 }catch(Exception e){
                     a+="The following error occurred:\n" +
                                e.getMessage();
                    }

            }
            return labels;//extractData(labels);
        }


private MessageReader readParts(List<MessagePart> parts){
        MessageReader mreader = new MessageReader();
        int cnt =0;
        for(MessagePart part:parts){

            try{

                String mime = part.getMimeType();           
                if(mime.contentEquals("text/plain")){
                    String s = new String(Base64.decodeBase64(part.getBody().getData().getBytes()));
                    mreader.setText(s);
                }else if(mime.contentEquals("text/html")){
                    String s = new String(Base64.decodeBase64(part.getBody().getData().getBytes()));
                    mreader.setHtml(s);

                }else if(mime.contentEquals("multipart/alternative")){
                    List<MessagePart> subparts  =part.getParts();
                    MessageReader subreader = readParts(subparts);
                    mreader.setText(subreader.getText());
                    mreader.setHtml(subreader.getHtml());
                }else if(mime.contentEquals("application/octet-stream")){
                    cnt++;
                    mreader.setNo_of_files(cnt);
                }

            }catch(Exception e){
                // get file here

            }

        }
        return mreader;
    }





public class MessageReader {

    private String text;
    private String html;
    int no_of_files;
    private String sender;
    private long date;
    // file data to be made


    public String getSender() {
        return sender;
    }
    public void setSender(String sender) {
        this.sender = sender;
    }
    public long getDate() {
        return date;
    }

    public void setDate(long date) {
        this.date = date;
    }
    public String getText() {
        return text;
    }
    public void setText(String text) {
        this.text = text;
    }
    public String getHtml() {
        return html;
    }
    public void setHtml(String html) {
        this.html = html;
    }
    public int getNo_of_files() {
        return no_of_files;
    }
    public void setNo_of_files(int no_of_files) {
        this.no_of_files = no_of_files;
    }



}

这篇关于在gmail-api中获取发件人邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆