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