Evo ova klasa bi trebala da radi, malo je modifikuj ako imas potrbe i od nje napravi oracle funkciju.
Ovo sam brzinski nasao neki primjer na netu i probao kao stande-alone app i radi ti bi trebao da iskoristis ovu metodu ReceiveMail.receive(java.lang.String, java.lang.String, java.lang.String), a on ce ti vratiti string sa svim mailovima pa onda mozes da ih parsiras kako ti odgovara.
Da napomenem da nisam bas naj sa Oraclom ali sam jednom pisao jednu java proceduru koja je radila ok, ali nije zahtjevala rad sa mrezom i nije toliko dugo trajala.
Da bi ovo radilo potreban ti je JavaMail api to je jedan jar file (mail.jar) koji bi trebao da imas negdje na classpath-u svoga servera.
I vodi racuna da ova funkcija moze malo da potraje, jer ipak se spaja na neki tamo mail server i svlaci mailove.
Mozda se jos neko ukljusi sa malo vise iskustva sa javom i oracle-om pa da da koji dobar savjet.
Code:
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.InternetAddress;
/**
* A simple email receiver class.
*/
public class ReceiveMail {
/**
* Main method to receive messages from the mail server specified as command
* line arguments.
*/
public static void main(String args[]) {
String popServer = "mail.server.com";
String popUser = "username";
String popPassword = "password";
System.out.println(receive(popServer, popUser, popPassword));
}
public static String receive(String popServer, String popUser,
String popPassword) {
Store store = null;
Folder folder = null;
StringBuffer bf = new StringBuffer();
try {
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props, null);
store = session.getStore("pop3");
store.connect(popServer, popUser, popPassword);
folder = store.getDefaultFolder();
if (folder == null)
throw new Exception("No default folder");
folder = folder.getFolder("INBOX");
if (folder == null)
throw new Exception("No POP3 INBOX");
folder.open(Folder.READ_ONLY);
Message[] msgs = folder.getMessages();
for (int msgNum = 0; msgNum < msgs.length; msgNum++) {
bf.append(getMessage(msgs[msgNum]));
bf.append("\n");
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
// -- Close down nicely --
try {
if (folder != null)
folder.close(false);
if (store != null)
store.close();
} catch (Exception ex2) {
ex2.printStackTrace();
}
}
return bf.toString();
}
public static String getMessage(Message message) {
StringBuffer bf = new StringBuffer();
try {
String from = ((InternetAddress) message.getFrom()[0])
.getPersonal();
if (from == null)
from = ((InternetAddress) message.getFrom()[0]).getAddress();
bf.append("FROM: " + from + "\n");
String subject = message.getSubject();
bf.append("SUBJECT: " + subject + "\n");
Part messagePart = message;
Object content = messagePart.getContent();
if (content instanceof Multipart) {
messagePart = ((Multipart) content).getBodyPart(0);
bf.append("[ Multipart Message ]\n");
}
String contentType = messagePart.getContentType();
bf.append("CONTENT:" + contentType + "\n");
InputStream is = messagePart.getInputStream();
BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
String thisLine = reader.readLine();
while (thisLine != null) {
bf.append(thisLine + "\n");
thisLine = reader.readLine();
}
bf.append("-----------------------------\n");
} catch (Exception ex) {
ex.printStackTrace();
}
return bf.toString();
}
}