Solved

Javamail: What is the function of the "mail.pop3.timeout" and "mail.pop3.connectiontimeout" properties in plain Engish?

Posted on 2014-09-06
5
455 Views
Last Modified: 2014-09-06
I'm working with a legacy app that downloads POP3 emails with javamail.  Despite reading the docs, I'm not sure I completely understand the purpose of these two properties.

mail.pop3.connectiontimeout
mail.pop3.timeout

Can anyone explain what they do in plain english and provide a real world example of when they might be used?

TIA
0
Comment
Question by:_agx_
  • 2
  • 2
5 Comments
 
LVL 26

Accepted Solution

by:
dpearson earned 500 total points
Comment Utility
mail.pop3.connectiontimeout is how long you are willing to wait to make an initial connection to the POP3 mail server.  E.g. If you set this to 30 secs, then if you try to connect to a POP3 server and get no response inside 30 seconds, you'll give up and return an error.

mail.pop3.timeout is after you have connected to the mail server, how long you are willing to wait to get data back as you are reading mail messages.  So again if you set it 20 seconds, this means after you ask to read an email if you don't get a response inside of 20 seconds, you'll give up an report an error.

The practical choice is between responsiveness (how quickly do you report an error when there's a problem) against how forgiving you are of slow servers/networks.

If you were implementing an internal mail server for use in a corporate setting, it might be fine to have 15 sec timeouts - because that's really slow in a commercial environment and so if it takes that long you can give up and show an error because it's not likely just being slow.  But if you were connecting to a globally accessible server from potentially anywhere in the world, you might set the timeouts to 3 mins, because e.g. connecting to the US from India or China can often be very slow.

Does that help explain things?

Doug
0
 
LVL 52

Author Comment

by:_agx_
Comment Utility
Thanks, that's a clear explanation. I was thinking "mail.pop3.timeout" might be an overall timeout, similar to a session timeout in a web app.
0
 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
Let's say you've got a new hosting provider and you want to test whether their mail server is working ok. You write a program that tries to connect to it every 5 minutes and check the number of mails in your inbox. So you used a scheduled task. There a two stages of connection

a. connecting to the mail server with a TCP/IP socket
b. implementing the protocol when you've connected to get the count of the messages in your inbox

So you do a. and you try to connect to the server. It doesn't connect and seems down. But how long are you going to wait until you've decided it IS down and mark that attempt as a fail? That time is actually set by mail.pop3.connectiontimeout. After that time, an exception will be thrown that you can catch and mark the attempt as a failed connection.
In the next scenario you DO connect but there seem to be problems waiting for the greeting from the server. Again - how long do you wait? That time is set by mail.pop3.timeout
0
 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
An uncharacteristically long answer from me - result - it took far too long ;)
0
 
LVL 52

Author Comment

by:_agx_
Comment Utility
CEHJ - Thanks for the response. I closed this one so fast, I didn't even see it until later :)
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

For customizing the look of your lightweight component and making it look lucid like it was made of glass. Or: how to make your component more Apple-ish ;) This tip assumes your component to be of rectangular shape and completely opaque. (COD…
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now