This week's book giveaway is in the OCMJEA forum.
We're giving away four copies of OCM Java EE 6 Enterprise Architect Exam Guide and have Paul Allen & Joseph Bambara on-line!
See this thread for details.
The moose likes Other JSE/JEE APIs and the fly likes How to properly read the custom Header value in the E-mail envolope Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCM Java EE 6 Enterprise Architect Exam Guide this week in the OCMJEA forum!
JavaRanch » Java Forums » Java » Other JSE/JEE APIs
Bookmark "How to properly read the custom Header value in the E-mail envolope" Watch "How to properly read the custom Header value in the E-mail envolope" New topic
Author

How to properly read the custom Header value in the E-mail envolope

Symphony Rajiv
Greenhorn

Joined: Feb 27, 2012
Posts: 2
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:

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);


The email scanning code is given below:

// 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 < 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");

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

log.info("The values are: " + from + "&" + 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"))
{
InputStream is = messagePart.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String thisLine = reader.readLine();
while (thisLine != null)

{
msgContent += thisLine;
thisLine = reader.readLine();
}
}

But the Header retrieved is null in the following statement.

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

Did I miss anything? Thank you for your time.
Rod Singh
Greenhorn

Joined: Feb 10, 2012
Posts: 16
I would check the value of header in the line:
msg.addHeader("Custom",header);
Symphony Rajiv
Greenhorn

Joined: Feb 27, 2012
Posts: 2
Well the "header" has a valid value.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: How to properly read the custom Header value in the E-mail envolope