package org.Webgatherer.ExperimentalLabs.Mail;
import com.google.inject.Guice;
import com.google.inject.Injector;
import org.Webgatherer.ExperimentalLabs.DependencyInjection.DependencyBindingModule;
import org.Webgatherer.Persistence.InputOutput.PersistenceImpl_WriteToFile;
import org.Webgatherer.Utility.RandomSelector;
import org.Webgatherer.Utility.ReadFiles;
import org.Webgatherer.WorkflowExample.Workflows.Base.DataInterpetor.EmailExtractor;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* @author Rick Dane
*/
public class mainSendEmail {
//"/home/user/Dropbox/Rick/WebGatherer/Output/backups/indeed.com/java-san-francisco";
private static final String outputFilePath = "/home/user/Dropbox/Rick/WebGatherer/Output/processed/indeed/emailsSent.txt";
private static final String notSentFilePath = "/home/user/Dropbox/Rick/WebGatherer/Output/processed/indeed/emailsNotSent.txt";
private static final String messagesSubjectFolder = "/home/user/Dropbox/Rick/WebGatherer/Input/emails/jobApplication/subject";
private static final String messagesBodyFolder = "/home/user/Dropbox/Rick/WebGatherer/Input/emails/jobApplication/body";
private static final String attachmentFilePath = "/home/user/Dropbox/Rick/RickDane_Java_SoftwareDeveloper.doc";
private static final String singleFileInputPath = "/home/user/Dropbox/Rick/WebGatherer/Output/emails/extractedEmails.txt";
private static ReadFiles readFiles;
private static List<String> domainsSent = new ArrayList<String>();
private static final int delayBetweenEmails = 30000;
private static boolean onlyDoFirstPage = true;
private static final int minDelay = 90000;
private static final int maxDelay = 260000;
private static RandomSelector randomSelector;
private static boolean blockMultiEmailsToSameDomain = false;
public static void main(String[] args) {
Injector injector = Guice.createInjector(new DependencyBindingModule());
EmailSendReceive emailSendReceive = injector.getInstance(EmailSendReceive.class);
randomSelector = injector.getInstance(RandomSelector.class);
readFiles = injector.getInstance(ReadFiles.class);
RandomSelector randomSelector = injector.getInstance(RandomSelector.class);
EmailExtractor emailExtractor = injector.getInstance(EmailExtractor.class);
List<String> emailSubjects = readFiles.readFilesToCollection(messagesSubjectFolder);
List<String> emailBodies = readFiles.readFilesToCollection(messagesBodyFolder);
//emailSendReceive.configure("Rick Dane", "smtp.gmx.com", "rick_developer@gmx.com", "blient8030", "465");
emailSendReceive.configure("Rick Dane", "smtp.gmail.com", "r.dane1010@gmail.com", "blient8030", "465");
Collection<String> emailAddresses = readFiles.readLinesToList(singleFileInputPath);
for (String curEmail : emailAddresses) {
System.out.println("iteration");
String[] emailSplit = curEmail.split("@");
if (blockMultiEmailsToSameDomain && domainsSent.contains(emailSplit[1])) {
PersistenceImpl_WriteToFile.appendToFile(notSentFilePath, curEmail + "\n");
} else {
String body = emailBodies.get(randomSelector.randomListIndex(emailBodies));
String subject = emailSubjects.get(randomSelector.randomListIndex(emailSubjects));
emailSendReceive.sendEmail(body, subject, curEmail, attachmentFilePath); //curEmail
System.out.println("sending email to: " + curEmail);
PersistenceImpl_WriteToFile.appendToFile(outputFilePath, curEmail + "\n");
domainsSent.add(emailSplit[1]);
try {
int delay = randomSelector.generateRandomNumberInRange(minDelay, maxDelay);
System.out.println("Sleeping for" + delay / 1000 + " seconds");
Thread.sleep(randomSelector.generateRandomNumberInRange(minDelay, maxDelay));
System.out.println("finished sleep");
} catch (InterruptedException e) {
}
}
}
}
}