JavaMail not retrieving messages (I know they're there!!)

Hi,

I can connect to my account via pop3 (see snippet below) just fine. However, message array must be empty, as immediately kicks out of for loop (i.e., message.length = 0, presumably..). I am certain there are emails in the inbox of the account. Any ideas/insights are greatly appreciated. Thanks.

// Create empty properties

Properties props = new Properties();

// Get session

Session session = Session.getDefaultInstance(props,

null);

try {

// Get the store

Store store = session.getStore("pop3");

store.connect(host, username, password);

// Get folder

Folder folder = store.getFolder("INBOX");

folder.open(Folder.READ_ONLY);

// Get directory

Message message[] = folder.getMessages();

for (int i=0, n=message.length; i<n; i++) {

System.out.println(i + ": " +

message.getFrom()[0]

+ "\t" + message.getSubject());

}>

[967 byte] By [tclota] at [2007-10-2 18:50:50]
# 1

As a test, from the same program I was able to send to the mailbox. However, this has not provided any useful insights, as I still am getting an empty message array when reading. I would be exceptionally grateful for any insights, as I have not fixed the problem.

Also, I have confirmed that I can the folder (the Folder object I create for reading), because the folder.exists() value returns "true". Here is the updated program with the writing test at the beginning and non-working reading part at the end:

import java.util.Properties;

import javax.mail.Session;

import javax.mail.Store;

import javax.mail.Folder;

import javax.mail.Message;

import javax.mail.Transport;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.InternetAddress;

public class MailService {

static String host = "192.168.1.174";

static String username = "Tim.Clotworthy@trim.demoapps.com";

static String password = "$M0thii9";

static String from = "JavaMail";

static String to = "Tim.Clotworthy@trim.demoapps.com";

/**

* @param args

*/

public static void main(String[] args) {

// Get system properties

Properties props = System.getProperties();

// Setup mail server

props.put("mail.smtp.host", host);

// Get session

Session session = Session.getDefaultInstance(props, null);

// Define message

MimeMessage message = new MimeMessage(session);

try{

message.setFrom(new InternetAddress(from));

message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

message.setSubject("Hello JavaMail");

message.setText("Welcome to JavaMail");

// Send message

Transport.send(message);

} catch(Exception e){

e.printStackTrace();

}

// Create empty properties

//Properties props = new Properties();

// Get session

//Session session = Session.getDefaultInstance(props, null);

try {

// Get the store

Store store = session.getStore("pop3");

store.connect(host, username, password);

String dfolder = store.getDefaultFolder().getFullName();

// Get folder

Folder folder = store.getFolder("INBOX");

//folder.open(Folder.READ_ONLY);

folder.open(Folder.READ_WRITE);

int count = folder.getMessageCount();

String fname = folder.getFullName();

String name = folder.getName();

// Get directory

Message Rmessage[] = folder.getMessages();

for (int i=0, n=Rmessage.length; i<n; i++) {

System.out.println(i + ": " +

Rmessage.getFrom()[0]

+ "\t" + Rmessage.getSubject());

}

// Close connection

folder.close(false);

store.close();

} catch(Exception e){e.printStackTrace();}

}

}>

tclota at 2007-7-13 20:13:47 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...
# 2
ok, i fig'rd it out. No further assistance needed. Have a great weekend.
tclota at 2007-7-13 20:13:47 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...
# 3

I have tried above code in jsp but its giving me following error

So plz help me how to resolve it

D:\Tomcat 4.1\work\Standalone\localhost\examples\jsp\emailsendfroms\RecvMailFrom_jsp.java:19: expected

import ;

^

D:\Tomcat 4.1\work\Standalone\localhost\examples\jsp\emailsendfroms\RecvMailFrom_jsp.java:76: session is already defined in _jspService(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)

Session session = Session.getDefaultInstance(props, null);

^

An error occurred at line: 14 in the jsp file: /jsp/emailsendfroms/RecvMailFrom.jsp

Generated servlet error:

D:\Tomcat 4.1\work\Standalone\localhost\examples\jsp\emailsendfroms\RecvMailFrom_jsp.java:106: cannot resolve symbol

symbol : variable folder

location: class org.apache.jsp.RecvMailFrom_jsp

folder.close(false);

^

An error occurred at line: 14 in the jsp file: /jsp/emailsendfroms/RecvMailFrom.jsp

Generated servlet error:

D:\Tomcat 4.1\work\Standalone\localhost\examples\jsp\emailsendfroms\RecvMailFrom_jsp.java:107: cannot resolve symbol

symbol : variable store

location: class org.apache.jsp.RecvMailFrom_jsp

store.close();

^

4 errors

at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:120)

at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:293)

at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:313)

at org.apache.jasper.compiler.Compiler.compile(Compiler.java:324)

at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:474)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:184)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:471)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)

at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)

at java.lang.Thread.run(Thread.java:536)

Shilpa_oct23a at 2007-7-13 20:13:47 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...
# 4

You didn't include your code, so I'm only guessing at what you did wrong.

First, it looks like you did something wrong with an import statement.

Second, it looks like you're going to need to name your Session variable

something other than "session", since that's a pre-defined JSP variable.

Third, it looks like you didn't declare your folder variable.

Fourth, it looks like you didn't declare your stoer variable.

bshannona at 2007-7-13 20:13:47 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...
# 5

Thanks for your reply

I have solved that problem. My code is as below

But still i am facing new problem

I got error after following line so plz help me .

What I have to do for fixing the errors

Store mailstore = mailSession.getStore("ipop3");

*******************************

<%@ page import="java.io.*,javax.mail.Session,javax.mail.Store,javax.mail.Folder.*"%>

<%@ page import="java.util.Properties,javax.mail.Message,javax.mail.Transport"%>

<%@ page import="javax.mail.*,javax.mail.internet.InternetAddress"%>

<%@ page import="javax.mail.internet.*,javax.mail.internet.MimeMessage"%>

<%! protected Folder mailfolder;

protected Store mailstore;

protected Session mailsession;

%>

<%

String host = "192.168.71.64";

String username ="sm1@station3.isecure.com";

String password = "sm1";

// Create empty properties

Properties props = new Properties();

// Get session

//Session session = Session.getDefaultInstance(props, null);

// session = javax.mail.Session.getInstance(props,null);

//session = javax.mail.Session.getInstance(props,null);

javax.mail.Session mailSession = null;

//mailSession = javax.mail.Session.getDefaultInstance(props, null);

mailSession = javax.mail.Session.getInstance(props, null);

out.println("hi");

try

{

// Get the store

try {

Store mailstore = mailSession.getStore("ipop3");

mailstore.connect(host, username, password);

}

catch (NoSuchProviderException e)

{

}

// Get folder

try

{

Folder mailfolder = mailstore.getFolder("INBOX");

mailfolder.open(Folder.READ_ONLY);

}

catch (NoSuchProviderException e)

{

}

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

// Get directory

Message message[] = mailfolder.getMessages();

for (int i = 0, n = message.length; i < n; i++)

{

out.println(message.getFrom()[0] + "\t" + message.getSubject() +"\n");//+ "\t" + message.getDate()+"\n");

}

}

catch(MessagingException mex)

{

mex.printStackTrace();

}

// Close connection

if (mailfolder != null && mailfolder.isOpen())

{

try

{

mailfolder.close(false);

} catch (MessagingException e)

{

//errorHandler.error("[COULDNT_CLOSE_FOLDER]", e,

//mailfolder.getName());

}

}

if (mailstore != null)

{

try

{

mailstore.close();

} catch (MessagingException e)

{

//errorHandler.error("[COULDNT_CLOSE_CONNECTION]", e, host);

}

}

mailfolder=null;

mailstore=null;

%>

Shilpa_oct23a at 2007-7-13 20:13:47 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...
# 6
There is no protocol named "ipop3". You probably meant "pop3".
bshannona at 2007-7-13 20:13:47 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...
# 7

thanks ur reply

I have tried above code using (pop3) protocol also

but it doesnt work

actually I have made linux m/c as server. And linux m/c provide pop3.ipop3,ipop3d services. So I have tried ipop3.

So can u tell me how to see that pop3 service is working on linux m/c

plz rely me as soon as

regard shilpa

Shilpa_oct23a at 2007-7-13 20:13:47 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...
# 8
telnet host 110If that connects, pop3 is working.
bshannona at 2007-7-13 20:13:47 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...