Open Jacobvu84 opened 5 years ago
package com.vsee; import java.util.List import java.util.regex.Matcher import java.util.regex.Pattern import javax.mail.Authenticator; import javax.mail.BodyPart import javax.mail.Folder; import javax.mail.Message; import javax.mail.Multipart import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Store; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import com.kms.katalon.core.annotation.Keyword import com.kms.katalon.core.util.KeywordUtil public class MailBox { @Keyword def GetLinkInMailBox() { Properties properties = System.getProperties(); properties.setProperty("mail.store.protocol", "imap"); properties.setProperty("mail.imap.host", "imap.gmail.com"); properties.setProperty("mail.imap.port", "993"); properties.setProperty("mail.imap.auth", "true"); properties.setProperty("mail.imap.ssl.enable", "true"); properties.setProperty("mail.imap.socketFactory.class", javax.net.ssl.SSLSocketFactory.class.getName()); properties.setProperty("mail.imap.socketFactory.fallback", "false"); Session session = Session.getDefaultInstance(properties, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("jacobvu@gmail.com", "tellmethetrust"); } }); Store store = session.getStore(); store.connect(); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); KeywordUtil.logInfo("#[" + folder.getFullName() + "]"); Message[] messages = folder.getMessages(); for (Message message : messages) { String from = ""; InternetAddress[] addresses = (InternetAddress[]) message.getFrom(); for (InternetAddress address : addresses) { from += address.getAddress(); } KeywordUtil.logInfo(" + from: " + from); KeywordUtil.logInfo(" + Subject: " + message.getSubject()); KeywordUtil.logInfo(" + Time: " + message.getSentDate()); String result = ""; if(message instanceof MimeMessage) { Object contentObject = message.getContent(); if(contentObject instanceof Multipart) { BodyPart clearTextPart = null; BodyPart htmlTextPart = null; Multipart content = (Multipart)contentObject; int count = content.getCount(); for(int i=0; i<count; i++) { BodyPart part = content.getBodyPart(i); if(part.isMimeType("text/plain")) { clearTextPart = part; break; } else if(part.isMimeType("text/html")) { htmlTextPart = part; } } if(clearTextPart!=null) { result = (String) clearTextPart.getContent(); } else if (htmlTextPart!=null) { String html = (String) htmlTextPart.getContent(); result = Jsoup.parse(html).text(); } } else if (contentObject instanceof String) // a simple text message { result = (String) contentObject; } else // not a mime message { KeywordUtil.logInfo("notme part or multipart {0}",message.toString()); result = null; } } KeywordUtil.logInfo(" + result: " + result); Pattern linkPattern = Pattern.compile("\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", Pattern.CASE_INSENSITIVE|Pattern.DOTALL); //Pattern EmailPattern = Pattern.compile("([a-z0-9_.-]+)@([a-z0-9_.-]+[a-z])", Pattern.CASE_INSENSITIVE|Pattern.DOTALL); Matcher matcher = linkPattern.matcher(result); List<String> links = new ArrayList<String>(); while (matcher.find()) { links.add(matcher.group(0)); } KeywordUtil.logInfo(links.get(0)); return links.get(0); } } }