Help needed for reading attachments in JavaMail
i have the following code to read mail, which works fine as long as it is for text mail.
But i need to read the attached mails and save it in a separate folder on the local machine.
how do i go about it. please help.
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
publicclass FetchMail
{
String host =null;
String user=null;
String pswd =null;
public FetchMail(Hashtable hashConfigParams)
{
host = (String)hashConfigParams.get("popServer");
user = (String)hashConfigParams.get("popUser");
pswd = (String)hashConfigParams.get("popPswd");
}
publicvoid receive()throws Exception
{
Store store=null;
Folder folder=null;
try{
Properties props = System.getProperties();
props.setProperty("mail.pop3.socketFactory.class","javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.pop3.socketFactory.fallback","false");
props.setProperty("mail.pop3.port","995");
props.setProperty("mail.pop3.socketFactory.port","995");
Session session = Session.getInstance(props);
store = session.getStore("pop3");
store.connect(host, user, pswd);
folder = store.getDefaultFolder();
if (folder ==null)thrownew Exception("No default folder");
folder = folder.getFolder("INBOX");
if (folder ==null)
{
thrownew Exception("No POP3 INBOX");
}
folder.open(Folder.READ_ONLY);
Message[] msgs = folder.getMessages();
for (int i = 0; i < msgs.length; i++)
{
String subject=msgs[i].getSubject();;
printMessage(msgs[i]);
//msg.invalidate(true);
}
}catch (Exception ex)
{
ex.printStackTrace();
}
finally
{
try
{
if (folder!=null)
folder.close(false);
if (store!=null)
store.close();
}catch (Exception ex2){
ex2.printStackTrace();
}
}
}
publicstaticvoid printMessage(Message message)
{
try{
String body="";
String from = ((InternetAddress)message.getFrom()[0]).getPersonal();
if (from==null)
{
from = ((InternetAddress)message.getFrom()[0]).getAddress();
}
System.out.println("FROM: "+from);
String subject = message.getSubject();
System.out.println("SUBJECT: "+subject);
Part messagePart = message;
Object content=messagePart.getContent();
if (contentinstanceof Multipart)
{
messagePart=((Multipart)content).getBodyPart(0);
}
// -- Get the content type --
String contentType = messagePart.getContentType();
//this the mail is plain mail.. or contain some html
if (contentType.startsWith("text/plain")|| contentType.startsWith("text/html"))
{
//get the mail
BufferedReader reader=new BufferedReader(new InputStreamReader(messagePart.getInputStream()));
//start reading line after line
String b=reader.readLine();
while (b!=null)
{
b=reader.readLine();
body+=b +"\n";
}
/*writingLogs(from + ":" + ((InternetAddress)msgs[i].getFrom()[0]).getAddress(),subject,body);
checkMsg(((InternetAddress)msgs[i].getFrom()[0]).getAddress(),subject,body);
msgs[i].setFlag(Flags.Flag.DELETED, true); //delete the messages
reader.close();*/
}
System.out.println("BODY: \n" + body);
System.out.println("--");
}catch (Exception ex){
ex.printStackTrace();
}
}
publicstaticvoid main(String args[])
{
Hashtable hashObj =new Hashtable();
hashObj.put("popServer","pop.gmail.com");
hashObj.put("popUser","nb123@gmail.com");
hashObj.put("popPswd","******");
try
{
FetchMail objFm =new FetchMail(hashObj);
objFm.receive();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}

