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: * 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: }