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]

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 >

ok, i fig'rd it out. No further assistance needed. Have a great weekend.
tclota at 2007-7-13 20:13:47 >

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)
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.
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;
%>
There is no protocol named "ipop3". You probably meant "pop3".
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
telnet host 110If that connects, pop3 is working.