# HG changeset patch # User František Kučera # Date 1294233616 -3600 # Node ID 6f7d2cc5380eb3b18ee53be0c367f75351dc10c8 # Parent 218a80f12411c1c85aad5cbb004c0df820de189f #7 Parametrizovatelné zprávy diff -r 218a80f12411 -r 6f7d2cc5380e java/Postak/src/cz/frantovo/postak/hack/Individuální.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java/Postak/src/cz/frantovo/postak/hack/Individuální.java Wed Jan 05 14:20:16 2011 +0100 @@ -0,0 +1,92 @@ +package cz.frantovo.postak.hack; + +import cz.frantovo.postak.HromadnaZprava; +import cz.frantovo.postak.InternetAddressKomu; +import cz.frantovo.postak.Nastaveni; +import cz.frantovo.postak.Postak; +import java.io.BufferedReader; +import java.io.FileReader; +import javax.mail.internet.InternetAddress; + +/** + *

+ * Toto je jakýsi „skript“ pro zvláštní případy, kdy potřebujeme poslat hromadný e-mail, + * ale každý příjemce má dostat jiný text. + * Resp. text každého e-mailu je parametrizován – dosazením jedné hodnoty za zástupný symbol. + *

+ * + *

+ * Text zprávy načteme ze souboru, stejně jako seznam příjemců a příslušných parametrů. + * Ostatní údaje se nastavují pomocí konstant níže. + *

+ * + *

+ * Nápady na vylepšení (TODO): + *

+ * + * + *

+ * Pozor na poměrně intenzivní SMTP komunikaci – posílá se tolik e-mailů, kolik je příjemců, + * ne jako u klasických hromadných zpráv, kde e-mail má řádové 500 nebo 1000 příjemců + * (a rozdělí se až na serveru). + *

+ */ +public class Individuální { + + private static final String SERVER = "localhost"; + private static final int PORT = 2525; + /** Soubor obsahující text e-mailu */ + private static final String TEXT_EMAILU = "/tmp/email.txt"; + /** Slovo v textu zprávy, které bude nahrazeno parametrem */ + private static final String TEXT_EMAILU_ZÁSTUPNÝ_SYMBOL = ""; + /** Soubor obsahující seznam příjemců (e-mailových adres) a parametrů, které se dosadí do textu */ + private static final String PŘÍJEMCI = "/tmp/emaily.csv"; + private static final String PŘÍJEMCI_ODDĚLOVAČ = "\t"; + private static final String PŘEDMĚT = "Předmět e-mailu"; + private static final String ODESÍLATEL_ADRESA = "test@example.com"; + private static final String ODESÍLATEL_JMÉNO = "Jméno Příjmení"; + + + + public static void main(String[] args) throws Exception { + /** Inicializace nastavení a pošťáka */ + Nastaveni nastavení = new Nastaveni(); + nastavení.setPostovniServer(SERVER); + nastavení.setPostovniPort(PORT); + Postak pošťák = new Postak(nastavení); + + /** Načteme text zprávy ze souboru */ + BufferedReader emailTxt = new BufferedReader(new FileReader(TEXT_EMAILU)); + StringBuilder text = new StringBuilder(); + while (emailTxt.ready()) { + text.append(emailTxt.readLine()); + text.append("\n"); + } + + /** Načteme příjemce a jejich parametry ze souboru… */ + BufferedReader příjemci = new BufferedReader(new FileReader(PŘÍJEMCI)); + while (příjemci.ready()) { + String[] řádka = příjemci.readLine().split(PŘÍJEMCI_ODDĚLOVAČ); + String email = řádka[0]; + String kód = řádka[1]; + /** …a pošleme jim e-mail */ + odešliEmail(pošťák, text.toString(), email, kód); + } + } + + private static void odešliEmail(Postak pošťák, String textZprávy, String emailPříjemce, String parametr) throws Exception { + System.out.println("Posíláme e-mail – příjemce: " + emailPříjemce + " + parametr: " + parametr); + HromadnaZprava zpráva = new HromadnaZprava(); + zpráva.setPredmet(PŘEDMĚT); + zpráva.setOdesilatel(new InternetAddress(ODESÍLATEL_ADRESA, ODESÍLATEL_JMÉNO)); + zpráva.getPrijemci().add(new InternetAddressKomu(emailPříjemce, null)); + /** Parametrizujeme text zprávy */ + textZprávy = textZprávy.replaceAll(TEXT_EMAILU_ZÁSTUPNÝ_SYMBOL, parametr); + zpráva.setText(textZprávy); + pošťák.odesli(zpráva); + } +}