How to properly read the custom Header value in the E-mail envolope
<p>I'm writing a java pop3 Client app to Send / Read emails sending invoices to customers.
I'm including a custom header with the invoice number as value during the email send. The code snippet for the same is given below:</p>

<pre><code>                        Message msg = new MimeMessage(session);

            msg.setFrom( new InternetAddress(from));
            InternetAddress [] address = {new InternetAddress(to)};
            InternetAddress [] replyto = {new InternetAddress(from)};
            msg.setRecipients(Message.RecipientType.TO, address);

            msg.setSubject(subject);
            //msg.setSendDate(new Date());
            msg.setReplyTo(replyto );
            msg.setText(messageText);

                   // Header is a string

//msg.setHeader("Custom",header);
            msg.addHeader("Custom",header);


            msg.saveChanges();
            Transport.send(msg);        
</code></pre>

<p>The email scanning code is given below:</p>

<pre><code>        // Create empty properties
        Properties props = new Properties();
        Session session = Session.getDefaultInstance(props, null);
        // Get the store
        Store store = session.getStore("pop3");
        store.connect(host, username, password);
        // Get folder
        POP3Folder folder = (POP3Folder) store.getFolder("INBOX");
        folder.open(Folder.READ_ONLY);      

        Message[] msgs = folder.getMessages();

            // Use a suitable FetchProfile
            FetchProfile fp = new FetchProfile();
            fp.add(UIDFolder.FetchProfileItem.UID);
            fp.add(FetchProfile.Item.ENVELOPE);
            fp.add("Custom");

            folder.fetch(msgs, fp);
            Message msg;

            for (int i = 0; i &lt; msgs.length;  i++)
            {
            String uid = folder.getUID(msgs[i]);
            log.info("UID :" +  uid);

            // if the UID is not available
            if (! uids.IsAvailable(uid)) {
                // Then fetch the message and push it to the array list
                Address[]   addrs;
                Date        dt;
                // Get subject
                String sub  = msgs[i].getSubject();

                // Get from address
                addrs   = msgs[i].getFrom();
                String from = addrs[0].toString();

                // Get send date
                dt = msgs[i].getSentDate();

                // Get the Header
                String [] header = msgs[i].getHeader("Custom");

                log.info("Reached Here 1");

                if (header == null)
                    log.info("Reached Here 4");

                if (header.length&gt; 0 ) {
                    log.info("Reached Here 2");
                    log.info("Header value is " +  header[0]);
                    log.info("Reached Here 3");
                }

                log.info("The values are: " + from + "&amp;" + sub);
                //msgs[i].getHeader(arg0)

                //Get the content of the message
                Part messagePart = msgs[i];
                Object content = messagePart.getContent();

                // -- or its first body part if it is a multipart message --
                if (content instanceof Multipart)
                {
                    messagePart = ((Multipart)content).getBodyPart(0);
                    log.info("This is a Multipart Message");
                }

                // -- Get the content type --
                String contentType = messagePart.getContentType();


                log.info("Retrieving the message content");
                String msgContent = "";
                // -- If the content is plain text, we can print it --
                if (contentType.startsWith("text/plain"))
                //|| contentType.startsWith("text/html")
                {
                    InputStream is = messagePart.getInputStream();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is));

                    String thisLine = reader.readLine();
                    while (thisLine != null)
                    {
                        msgContent += thisLine;
                        thisLine = reader.readLine();
                    }
                }
</code></pre>

<p>But the Header retrieved is null in the following statement.</p>

<pre><code>// Get the Header
String [] header = msgs[i].getHeader("Custom");
</code></pre>

<p>Did I miss anything?
Thank you for your time.</p>
