root/java/Postak/src/cz/frantovo/postak/hack/Individuální.java @ 9:6f7d2cc5380e

Revision 9:6f7d2cc5380e, 3.6 KB (checked in by František Kučera <franta-hg@…>, 13 years ago)

#7 Parametrizovatelné zprávy

Line 
1package cz.frantovo.postak.hack;
2
3import cz.frantovo.postak.HromadnaZprava;
4import cz.frantovo.postak.InternetAddressKomu;
5import cz.frantovo.postak.Nastaveni;
6import cz.frantovo.postak.Postak;
7import java.io.BufferedReader;
8import java.io.FileReader;
9import javax.mail.internet.InternetAddress;
10
11/**
12 * <p>
13 * Toto je jakýsi „skript“ pro zvláštní případy, kdy potřebujeme poslat hromadný e-mail,
14 * ale každý příjemce má dostat jiný text.
15 * Resp. text každého e-mailu je parametrizován – dosazením jedné hodnoty za zástupný symbol.
16 * </p>
17 *
18 * <p>
19 * Text zprávy načteme ze souboru, stejně jako seznam příjemců a příslušných parametrů.
20 * Ostatní údaje se nastavují pomocí konstant níže.
21 * </p>
22 *
23 * <p>
24 * Nápady na vylepšení (TODO):
25 * </p>
26 * <ul>
27 * <li>Umožnit zadat více než jeden parametr</li>
28 * <li>Načítat nastavení (server, port atd.) ze souboru (jako to dělá SuperPošťák)</li>
29 * <li>Zapracovat do GUI SuperPošťáka</li>
30 * </ul>
31 *
32 * <p>
33 * Pozor na poměrně intenzivní SMTP komunikaci – posílá se tolik e-mailů, kolik je příjemců,
34 * ne jako u klasických hromadných zpráv, kde e-mail má řádové 500 nebo 1000 příjemců
35 * (a rozdělí se až na serveru).
36 * </p>
37 */
38public class Individuální {
39
40        private static final String SERVER = "localhost";
41        private static final int PORT = 2525;
42        /** Soubor obsahující text e-mailu */
43        private static final String TEXT_EMAILU = "/tmp/email.txt";
44        /** Slovo v textu zprávy, které bude nahrazeno parametrem */
45        private static final String TEXT_EMAILU_ZÁSTUPNÝ_SYMBOL = "<nahradit>";
46        /** Soubor obsahující seznam příjemců (e-mailových adres) a parametrů, které se dosadí do textu */
47        private static final String PŘÍJEMCI = "/tmp/emaily.csv";
48        private static final String PŘÍJEMCI_ODDĚLOVAČ = "\t";
49        private static final String PŘEDMĚT = "Předmět e-mailu";
50        private static final String ODESÍLATEL_ADRESA = "test@example.com";
51        private static final String ODESÍLATEL_JMÉNO = "Jméno Příjmení";
52
53
54
55        public static void main(String[] args) throws Exception {
56                /** Inicializace nastavení a pošťáka */
57                Nastaveni nastavení = new Nastaveni();
58                nastavení.setPostovniServer(SERVER);
59                nastavení.setPostovniPort(PORT);
60                Postak pošťák = new Postak(nastavení);
61
62                /** Načteme text zprávy ze souboru */
63                BufferedReader emailTxt = new BufferedReader(new FileReader(TEXT_EMAILU));
64                StringBuilder text = new StringBuilder();
65                while (emailTxt.ready()) {
66                        text.append(emailTxt.readLine());
67                        text.append("\n");
68                }
69
70                /** Načteme příjemce a jejich parametry ze souboru… */
71                BufferedReader příjemci = new BufferedReader(new FileReader(PŘÍJEMCI));
72                while (příjemci.ready()) {
73                        String[] řádka = příjemci.readLine().split(PŘÍJEMCI_ODDĚLOVAČ);
74                        String email = řádka[0];
75                        String kód = řádka[1];
76                        /** …a pošleme jim e-mail */
77                        odešliEmail(pošťák, text.toString(), email, kód);
78                }
79        }
80
81        private static void odešliEmail(Postak pošťák, String textZprávy, String emailPříjemce, String parametr) throws Exception {
82                System.out.println("Posíláme e-mail – příjemce: " + emailPříjemce + " + parametr: " + parametr);
83                HromadnaZprava zpráva = new HromadnaZprava();
84                zpráva.setPredmet(PŘEDMĚT);
85                zpráva.setOdesilatel(new InternetAddress(ODESÍLATEL_ADRESA, ODESÍLATEL_JMÉNO));
86                zpráva.getPrijemci().add(new InternetAddressKomu(emailPříjemce, null));
87                /** Parametrizujeme text zprávy */
88                textZprávy = textZprávy.replaceAll(TEXT_EMAILU_ZÁSTUPNÝ_SYMBOL, parametr);
89                zpráva.setText(textZprávy);
90                pošťák.odesli(zpráva);
91        }
92}
Note: See TracBrowser for help on using the browser.