franta-hg@9: package cz.frantovo.postak.hack;
franta-hg@9:
franta-hg@9: import cz.frantovo.postak.HromadnaZprava;
franta-hg@9: import cz.frantovo.postak.InternetAddressKomu;
franta-hg@9: import cz.frantovo.postak.Nastaveni;
franta-hg@9: import cz.frantovo.postak.Postak;
franta-hg@9: import java.io.BufferedReader;
franta-hg@9: import java.io.FileReader;
franta-hg@9: import javax.mail.internet.InternetAddress;
franta-hg@9:
franta-hg@9: /**
franta-hg@9: *
franta-hg@9: * Toto je jakýsi „skript“ pro zvláštní případy, kdy potřebujeme poslat hromadný e-mail,
franta-hg@9: * ale každý příjemce má dostat jiný text.
franta-hg@9: * Resp. text každého e-mailu je parametrizován – dosazením jedné hodnoty za zástupný symbol.
franta-hg@9: *
franta-hg@9: *
franta-hg@9: *
franta-hg@9: * Text zprávy načteme ze souboru, stejně jako seznam příjemců a příslušných parametrů.
franta-hg@9: * Ostatní údaje se nastavují pomocí konstant níže.
franta-hg@9: *
franta-hg@9: *
franta-hg@9: *
franta-hg@9: * Nápady na vylepšení (TODO):
franta-hg@9: *
franta-hg@9: *
franta-hg@9: * - Umožnit zadat více než jeden parametr
franta-hg@9: * - Načítat nastavení (server, port atd.) ze souboru (jako to dělá SuperPošťák)
franta-hg@9: * - Zapracovat do GUI SuperPošťáka
franta-hg@9: *
franta-hg@9: *
franta-hg@9: *
franta-hg@9: * Pozor na poměrně intenzivní SMTP komunikaci – posílá se tolik e-mailů, kolik je příjemců,
franta-hg@9: * ne jako u klasických hromadných zpráv, kde e-mail má řádové 500 nebo 1000 příjemců
franta-hg@9: * (a rozdělí se až na serveru).
franta-hg@9: *
franta-hg@9: */
franta-hg@9: public class Individuální {
franta-hg@9:
franta-hg@9: private static final String SERVER = "localhost";
franta-hg@9: private static final int PORT = 2525;
franta-hg@9: /** Soubor obsahující text e-mailu */
franta-hg@9: private static final String TEXT_EMAILU = "/tmp/email.txt";
franta-hg@9: /** Slovo v textu zprávy, které bude nahrazeno parametrem */
franta-hg@9: private static final String TEXT_EMAILU_ZÁSTUPNÝ_SYMBOL = "";
franta-hg@9: /** Soubor obsahující seznam příjemců (e-mailových adres) a parametrů, které se dosadí do textu */
franta-hg@9: private static final String PŘÍJEMCI = "/tmp/emaily.csv";
franta-hg@9: private static final String PŘÍJEMCI_ODDĚLOVAČ = "\t";
franta-hg@9: private static final String PŘEDMĚT = "Předmět e-mailu";
franta-hg@9: private static final String ODESÍLATEL_ADRESA = "test@example.com";
franta-hg@9: private static final String ODESÍLATEL_JMÉNO = "Jméno Příjmení";
franta-hg@9:
franta-hg@9:
franta-hg@9:
franta-hg@9: public static void main(String[] args) throws Exception {
franta-hg@9: /** Inicializace nastavení a pošťáka */
franta-hg@9: Nastaveni nastavení = new Nastaveni();
franta-hg@9: nastavení.setPostovniServer(SERVER);
franta-hg@9: nastavení.setPostovniPort(PORT);
franta-hg@9: Postak pošťák = new Postak(nastavení);
franta-hg@9:
franta-hg@9: /** Načteme text zprávy ze souboru */
franta-hg@9: BufferedReader emailTxt = new BufferedReader(new FileReader(TEXT_EMAILU));
franta-hg@9: StringBuilder text = new StringBuilder();
franta-hg@9: while (emailTxt.ready()) {
franta-hg@9: text.append(emailTxt.readLine());
franta-hg@9: text.append("\n");
franta-hg@9: }
franta-hg@9:
franta-hg@9: /** Načteme příjemce a jejich parametry ze souboru… */
franta-hg@9: BufferedReader příjemci = new BufferedReader(new FileReader(PŘÍJEMCI));
franta-hg@9: while (příjemci.ready()) {
franta-hg@9: String[] řádka = příjemci.readLine().split(PŘÍJEMCI_ODDĚLOVAČ);
franta-hg@9: String email = řádka[0];
franta-hg@9: String kód = řádka[1];
franta-hg@9: /** …a pošleme jim e-mail */
franta-hg@9: odešliEmail(pošťák, text.toString(), email, kód);
franta-hg@9: }
franta-hg@9: }
franta-hg@9:
franta-hg@9: private static void odešliEmail(Postak pošťák, String textZprávy, String emailPříjemce, String parametr) throws Exception {
franta-hg@9: System.out.println("Posíláme e-mail – příjemce: " + emailPříjemce + " + parametr: " + parametr);
franta-hg@9: HromadnaZprava zpráva = new HromadnaZprava();
franta-hg@9: zpráva.setPredmet(PŘEDMĚT);
franta-hg@9: zpráva.setOdesilatel(new InternetAddress(ODESÍLATEL_ADRESA, ODESÍLATEL_JMÉNO));
franta-hg@9: zpráva.getPrijemci().add(new InternetAddressKomu(emailPříjemce, null));
franta-hg@9: /** Parametrizujeme text zprávy */
franta-hg@9: textZprávy = textZprávy.replaceAll(TEXT_EMAILU_ZÁSTUPNÝ_SYMBOL, parametr);
franta-hg@9: zpráva.setText(textZprávy);
franta-hg@9: pošťák.odesli(zpráva);
franta-hg@9: }
franta-hg@9: }