How To Check Mail Validation in Selenium WebDriver? How To Check Mail Validation in Selenium WebDriver? selenium selenium

How To Check Mail Validation in Selenium WebDriver?


Here is the working solution for your problem. It uses JAVAX MAIL API and JAVA code.It does a lot more, so remove the code that u don't need.

  public GmailUtils(String username, String password, String server, EmailFolder     emailFolder) throws Exception {    Properties props = System.getProperties();    props.setProperty("mail.store.protocol", "imap");    props.setProperty("mail.imaps.partialfetch", "false");    props.put("mail.imap.ssl.enable", "true");    props.put("mail.mime.base64.ignoreerrors", "true");    Session session = Session.getDefaultInstance(props, null);    Store store = session.getStore("imap");    store.connect("imap.gmail.com", 993, "<your email>", "<your password>");    Folder folder = store.getFolder(emailFolder.getText());    folder.open(Folder.READ_WRITE);    System.out.println("Total Messages:" + folder.getMessageCount());    System.out.println("Unread Messages:" + folder.getUnreadMessageCount());    messages = folder.getMessages();    for (Message mail : messages) {        if (!mail.isSet(Flags.Flag.SEEN)) {            System.out.println("***************************************************");            System.out.println("MESSAGE : \n");            System.out.println("Subject: " + mail.getSubject());            System.out.println("From: " + mail.getFrom()[0]);            System.out.println("To: " + mail.getAllRecipients()[0]);            System.out.println("Date: " + mail.getReceivedDate());            System.out.println("Size: " + mail.getSize());            System.out.println("Flags: " + mail.getFlags());            System.out.println("ContentType: " + mail.getContentType());                            System.out.println("Body: \n" + getEmailBody(mail));            System.out.println("Has Attachments: " + hasAttachments(mail));        }    }}public boolean hasAttachments(Message email) throws Exception {    // suppose 'message' is an object of type Message    String contentType = email.getContentType();    System.out.println(contentType);    if (contentType.toLowerCase().contains("multipart/mixed")) {        // this message must contain attachment        Multipart multiPart = (Multipart) email.getContent();        for (int i = 0; i < multiPart.getCount(); i++) {            MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(i);            if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) {                System.out.println("Attached filename is:" + part.getFileName());                MimeBodyPart mimeBodyPart = (MimeBodyPart) part;                String fileName = mimeBodyPart.getFileName();                String destFilePath = System.getProperty("user.dir") + "\\Resources\\";                File fileToSave = new File(fileName);                mimeBodyPart.saveFile(destFilePath + fileToSave);                // download the pdf file in the resource folder to be read by PDFUTIL api.                PDFUtil pdfUtil = new PDFUtil();                String pdfContent = pdfUtil.getText(destFilePath + fileToSave);                System.out.println("******---------------********");                System.out.println("\n");                System.out.println("Started reading the pdfContent of the attachment:==");                System.out.println(pdfContent);                System.out.println("\n");                System.out.println("******---------------********");                Path fileToDeletePath = Paths.get(destFilePath + fileToSave);                Files.delete(fileToDeletePath);            }        }        return true;    }    return false;}public String getEmailBody(Message email) throws IOException, MessagingException {    String line, emailContentEncoded;    StringBuffer bufferEmailContentEncoded = new StringBuffer();    BufferedReader reader = new BufferedReader(new InputStreamReader(email.getInputStream()));    while ((line = reader.readLine()) != null) {        bufferEmailContentEncoded.append(line);    }    System.out.println("**************************************************");    System.out.println(bufferEmailContentEncoded);    System.out.println("**************************************************");    emailContentEncoded = bufferEmailContentEncoded.toString();    if (email.getContentType().toLowerCase().contains("multipart/related")) {        emailContentEncoded = emailContentEncoded.substring(emailContentEncoded.indexOf("base64") + 6);        emailContentEncoded = emailContentEncoded.substring(0, emailContentEncoded.indexOf("Content-Type") - 1);        System.out.println(emailContentEncoded);        String emailContentDecoded = new String(new Base64().decode(emailContentEncoded.toString().getBytes()));        return emailContentDecoded;    }    return emailContentEncoded;}


I would suggest you to use Nada email api which are disposable email addresses and very easy to get the content.

Check the examples here.

http://www.testautomationguru.com/selenium-webdriver-email-validation-with-disposable-email-addresses/