Javamail與Jsoup整合
開發需求:通過第三方獲取各郵箱內容
主要jar包:jsoup.jar-1.6.0.jar,javax.mail-1.5.0.jar
說明:
1.測試目標爲163或126網易郵箱,功能實現且數據無誤;QQ郵箱存在SSL加密,需手動設置。
2.三方登陸需要開啓郵箱的POP3(發送還需要開啓SMTP)功能。
3.程序中的密碼爲開啓POP3時設置的密碼,不是郵箱登陸密碼。
4.不同郵箱的服務器屬性不同,百度一下就有。
網易郵箱開啓POP3截圖:
代碼:
public class SendTest {
@Test
public void test() throws MessagingException, IOException {
//配置pop3服務器屬性
String pop3Server = "pop.163.com";
String protocol = "pop3";
String user = "15021234103";
String pwd = "lucky123";
//創建具有連接信息的properties對象
Properties props = new Properties();
props.setProperty("mail.store.protocol", protocol);
props.setProperty("mail.pop3.host", pop3Server);
//使用properties對象獲取session對象
Session session = Session.getInstance(props);
// session.setDebug(true);
//利用session對象獲取store對象,並鏈接pop3服務器
Store store = session.getStore();
store.connect(pop3Server,user,pwd);
//獲得郵箱內的郵件夾folder對象,只讀
Folder folder = store.getFolder("inbox");
folder.open(Folder.READ_ONLY);
//獲得郵件夾folder內所有郵件messages對象
Message[] messages = folder.getMessages();
int mailCounts = messages.length;
System.out.println("共有"+mailCounts+"封郵件");
for(int i=0;i<mailCounts;i++){
String subject = messages[i].getSubject();
String from = (messages[i].getFrom()[0]).toString();
System.out.println("第"+(i+1)+"封郵件的主題:"+subject);
System.out.println("第"+(i+1)+"封郵件的發件人地址:"+from);
//System.out.println("是否打開該郵件(yes/no)?:");
/*
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
if("yes".equalsIgnoreCase(input)){
messages[i].writeTo(System.out);
}*/
System.out.println("start!");
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent("內容", "text/plain;charset=GB2312");
messageBodyPart.setDataHandler(messages[0].getDataHandler());
// System.out.println(messageBodyPart.getContent());
String domtemp = (String) messageBodyPart.getContent();
//System.out.println(domtemp);
System.out.println("-----------------------------------");
Document dom = Jsoup.parse(domtemp);
Elements strongs = dom.select("div");
for(Element strong:strongs){
System.out.println(strong.text());
}
System.out.println("over!-----------------------------");
}
folder.close(false);
store.close();
}
}
效果圖: