Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 使用回复链从电子邮件正文中提取地址和收件人地址-JavaMail Api。_Email_Parsing_Jakarta Mail - Fatal编程技术网

Email 使用回复链从电子邮件正文中提取地址和收件人地址-JavaMail Api。

Email 使用回复链从电子邮件正文中提取地址和收件人地址-JavaMail Api。,email,parsing,jakarta-mail,Email,Parsing,Jakarta Mail,我试图从安然数据集中提取内容。我想我会尝试使用Javamail Api,因为它很容易解析。然而,我是Javamail新手,我在网上查阅了一些资料 我能够创建文件的mimessage对象并提取各种字段。getContent()能够给我正文中的内容 我想做的是从正文中提取出from和to地址。我不知道该怎么做 我读过关于创建多部分对象并试图从中提取的内容 使用javax.mail.Message.getContent()获取消息的内容。这 应在类型为的对象中返回整个消息的内容 javax.mail.

我试图从安然数据集中提取内容。我想我会尝试使用Javamail Api,因为它很容易解析。然而,我是Javamail新手,我在网上查阅了一些资料

我能够创建文件的mimessage对象并提取各种字段。getContent()能够给我正文中的内容

我想做的是从正文中提取出from和to地址。我不知道该怎么做

我读过关于创建多部分对象并试图从中提取的内容

  • 使用javax.mail.Message.getContent()获取消息的内容。这 应在类型为的对象中返回整个消息的内容 javax.mail.Multipart

  • 使用java.mail.Multipart上的方法检索 信息。这应该封装在类型为的对象中 javax.mail.BodyPart

  • 使用javax.mail.BodyPart上的方法检索 您感兴趣的信息的特定部分

  • 在我的案例中指定的Mime类型不是多部分。但是,当我尝试上述方法时,我在线程“main”java.lang.ClassCastException中得到了一个异常:java.lang.String不能转换为javax.mail.Message“

    我该怎么办


    下面是我试图解析的文件的内容

    Message-ID: <16159836.1075855377439.JavaMail.evans@thyme>
    Date: Fri, 7 Dec 2001 10:06:42 -0800 (PST)
    From: heather.dunton@enron.com
    To: k..allen@enron.com
    Subject: RE: West Position
    Mime-Version: 1.0
    Content-Type: text/plain; charset=us-ascii
    Content-Transfer-Encoding: 7bit
    X-From: Dunton, Heather </O=ENRON/OU=NA/CN=RECIPIENTS/CN=HDUNTON>
    X-To: Allen, Phillip K. </O=ENRON/OU=NA/CN=RECIPIENTS/CN=Pallen>
    X-cc: 
    X-bcc: 
    X-Folder: \Phillip_Allen_Jan2002_1\Allen, Phillip K.\Inbox
    X-Origin: Allen-P
    X-FileName: pallen (Non-Privileged).pst
    
    
    Please let me know if you still need Curve Shift.
    
    Thanks,
    Heather
     -----Original Message-----
    From:   Allen, Phillip K.  
    Sent:   Friday, December 07, 2001 5:14 AM
    To: Dunton, Heather
    Subject:    RE: West Position
    
    Heather,
    
    Did you attach the file to this email?
    
     -----Original Message-----
    From:   Dunton, Heather  
    Sent:   Wednesday, December 05, 2001 1:43 PM
    To: Allen, Phillip K.; Belden, Tim
    Subject:    FW: West Position
    
    Attached is the Delta position for 1/16, 1/30, 6/19, 7/13, 9/21
    
    
     -----Original Message-----
    From:   Allen, Phillip K.  
    Sent:   Wednesday, December 05, 2001 6:41 AM
    To: Dunton, Heather
    Subject:    RE: West Position
    
    Heather,
    
    This is exactly what we need.  Would it possible to add the prior day for each of the dates below to the pivot table.  In order to validate the curve shift on the dates below we also need the prior days ending positions.
    
    Thank you,
    
    Phillip Allen
    
     -----Original Message-----
    From:   Dunton, Heather  
    Sent:   Tuesday, December 04, 2001 3:12 PM
    To: Belden, Tim; Allen, Phillip K.
    Cc: Driscoll, Michael M.
    Subject:    West Position
    
    
    Attached is the Delta position for 1/18, 1/31, 6/20, 7/16, 9/24
    
    
    
     << File: west_delta_pos.xls >> 
    
    Let me know if you have any questions.
    
    
    Heather
    
    消息ID:
    日期:2001年12月7日星期五10:06:42-0800(太平洋标准时间)
    发件人:希瑟。dunton@enron.com
    致:k。。allen@enron.com
    主题:RE:西部位置
    Mime版本:1.0
    内容类型:文本/纯文本;字符集=美国ascii码
    内容传输编码:7bit
    X-From:希瑟,邓顿
    X-To:Allen,Phillip K。
    X-cc:
    X-bcc:
    X文件夹:\Phillip\u Allen\u Jan2002\u 1\Allen,Phillip K.\Inbox
    X-原点:艾伦-P
    X文件名:pallen(非特权).pst
    如果您仍然需要曲线移动,请告诉我。
    谢谢
    希瑟
    -----原始消息-----
    发件人:艾伦,菲利普K。
    发送时间:2001年12月7日星期五上午5:14
    致:邓顿,希瑟
    主题:RE:西部位置
    希瑟,
    您是否将该文件附加到此电子邮件中?
    -----原始消息-----
    发件人:邓顿,希瑟
    发送日期:2001年12月5日星期三下午1:43
    致:艾伦,菲利普K。;贝尔登,蒂姆
    主题:FW:西部位置
    附件是1/16、1/30、6/19、7/13、9/21的三角位置
    -----原始消息-----
    发件人:艾伦,菲利普K。
    发送时间:2001年12月5日星期三上午6:41
    致:邓顿,希瑟
    主题:RE:西部位置
    希瑟,
    这正是我们需要的。是否可以将以下每个日期的前一天添加到透视表中。为了验证以下日期的曲线移动,我们还需要前几天的结束位置。
    非常感谢。
    菲利普·艾伦
    -----原始消息-----
    发件人:邓顿,希瑟
    发送日期:2001年12月4日星期二下午3:12
    致:蒂姆·贝尔登;艾伦,菲利普K。
    抄送:德里斯科尔,迈克尔M。
    主题:西部阵地
    附件是1/18、1/31、6/20、7/16、9/24的三角洲位置
    > 
    如果你有任何问题,请告诉我。
    希瑟
    

    这是我使用的代码:

    private void mailParser() throws IOException, MessagingException {
        File mailFiles = new File("/xxx/xx/xx/x/x/inbox/1");
        String host = "host.com";
        Properties properties = System.getProperties();
    
        properties.setProperty("mail.smtp.host", host);
        Session session = Session.getDefaultInstance(properties);
    
        MimeMessage email = null;
        try {
            FileInputStream fis = new FileInputStream(mailFiles);
            email = new MimeMessage(session, fis);
    
            //Message ID
            System.out.println("message id: " + email.getMessageID());
    
            //Date
            System.out.println("sent date : " + email.getSentDate());
    
            //From
            Address[] add = email.getFrom();
            if (add != null) {
                for (int i = 0; i < add.length; i++) {
                    System.out.println("FROM  : " + add[i].toString());
                }
    
            //Subject
            System.out.println("\nsubject: " + email.getSubject());
    
            //TO
            if (email.getRecipients(Message.RecipientType.TO) != null) {
                for( Address emails: email.getRecipients(Message.RecipientType.TO)){
                System.out.println("\nrecipients to: " + Arrays.asList(email.getRecipients(Message.RecipientType.TO)));
            }
    
            //CC 
            if (email.getRecipients(Message.RecipientType.CC) != null) {
                  for( Address emails: email.getRecipients(Message.RecipientType.CC)){   
                System.out.println("\nrecipients cc: " + Arrays.asList(email.getRecipients(Message.RecipientType.CC)));
            }
    
            //BCC
            if (email.getRecipients(Message.RecipientType.BCC) != null) {
                  for( Address emails: email.getRecipients(Message.RecipientType.BCC)){
                System.out.println("\nrecipients bcc: " + Arrays.asList(email.getRecipients(Message.RecipientType.BCC)));
            }
    
            //Content type
            System.out.println("contetnt type: " + email.getContentType());
    
            //Content Encoding
            System.out.println("encoding: " + email.getEncoding());
    
            //Content of email
            Message message = (Message) email.getContent();
    
            if(message instanceof MimeMessage)
            {
            MimeMessage m = (MimeMessage)message;
            Object contentObject = m.getContent();
            if(contentObject instanceof Multipart)
            {
                BodyPart clearTextPart = null;
                Multipart content = (Multipart)contentObject;
                int count = content.getCount();
                for(int i=0; i<count; i++)
                {
                    BodyPart part =  content.getBodyPart(i);                 
                        clearTextPart = part;
                        break;
                }
    
                if(clearTextPart!=null)
                {
                   String result = (String) clearTextPart.getContent();
                    System.out.println(result);
                }
    
    
            }
    
            System.out.println("Content of email" + email.getContent().toString());
        } catch (MessagingException e) {
            throw new IllegalStateException("illegal state issue", e);
        } catch (FileNotFoundException e) {
            throw new IllegalStateException("file not found issue issue: " + mailFiles.getAbsolutePath(), e);
        }
    }
    
    private void mailParser()抛出IOException、MessaginException{
    File mailFiles=新文件(“/xxx/xx/xx/x/x/inbox/1”);
    字符串host=“host.com”;
    Properties=System.getProperties();
    setProperty(“mail.smtp.host”,host);
    Session Session=Session.getDefaultInstance(属性);
    mimessage email=null;
    试一试{
    FileInputStream fis=新的FileInputStream(邮件文件);
    电子邮件=新MIMESSAGE(会话,fis);
    //消息ID
    System.out.println(“消息id:+email.getMessageID());
    //日期
    System.out.println(“发送日期:+email.getSentDate());
    //从
    地址[]添加=email.getFrom();
    如果(添加!=null){
    对于(int i=0;i对于(int i=0;i您看到的是对邮件回复的回复,其中原始邮件文本和一些标题信息作为新文本包含在回复邮件中。就MIME而言,原始邮件的文本显示在回复邮件中,就像您自己键入的一样,就像tex的任何其他部分一样回复信息的t。“原始信息”