diff -r 000000000000 -r 11879ab34364 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 Tue May 03 19:27:50 2011 +0200
@@ -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):
+ *
+ *
+ * - Umožnit zadat více než jeden parametr
+ * - Načítat nastavení (server, port atd.) ze souboru (jako to dělá SuperPošťák)
+ * - Zapracovat do GUI SuperPošťáka
+ *
+ *
+ *
+ * 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);
+ }
+}