#!/usr/bin/perl
# Načte text zprávy a seznam adres a rozešle zprávu všem adresám ze seznamu.
# (c) 2006 Dan Zeman <zeman@ufal.mff.cuni.cz>
# Licence: GNU GPL

# Použití: rozeslat.pl seznam_adres.txt predmet text_zpravy.txt
# Text zprávy musí být v kódování UTF-8.
# Seznam adres musí obsahovat na každém řádku právě jednu adresu.

use utf8;
use open ":utf8";
use Encode;

my $soubor_adresy = $ARGV[0];
my $predmet = $ARGV[1];
my $soubor_zprava = $ARGV[2];

# Načíst text zprávy.
open(ZPRAVA, $soubor_zprava) or die("Nelze cist $soubor_zprava: $!\n");
while(<ZPRAVA>)
{
    $zprava .= $_;
}
close(ZPRAVA);
# Načíst seznam adres.
open(SEZNAM, $soubor_adresy) or die("Nelze cist $soubor_adresy: $!\n");
while(<SEZNAM>)
{
    s/\r?\n$//;
    # Abychom odstranili duplikáty, budeme si adresy ukládat do hashe, ne do pole.
    $adresy{$_}++;
}
close(SEZNAM);
# Rozeslat zprávu na všechny adresy.
foreach my $adresa (sort(keys(%adresy)))
{
    print STDERR ("Odesila se na adresu $adresa\n");
    poslat_zpravu($adresa, $predmet, $zprava);
}



#------------------------------------------------------------------------------
# Odešle zprávu na zadanou adresu.
#------------------------------------------------------------------------------
sub poslat_zpravu
{
    my $adresat = shift;
    my $predmet = shift;
    my $text = shift;
    my $sendmail = "/usr/lib/sendmail";
    if(! -e $sendmail)
    {
        die("Nenalezen $sendmail.\n");
    }
    if($adresat !~ m/\@/)
    {
        print STDERR ("Varovani: Adresa neobsahuje zavinac, preskakuji ji.\n");
    }
    # Odstranit případnou diakritiku z předmětu.
    $predmet =~ tr/ÁČĎÉĚÍŇÓŘŠŤÚŮÝŽáčďéěíňóřšťúůýžß/ACDEEINORSTUUYZacdeeinorstuuyzs/;
    $predmet = encode("ascii", $predmet);
    my $mail;
    $mail .= "From: Vojta Skřivan <vojtaskrivan\@seznam.cz>\n";
    $mail .= "Reply-to: klara\@hrejsi.cz\n";
    $mail .= "To: $adresat\n";
#    $mail .= "Cc: klara\@hrejsi.cz\n";
    $mail .= "Subject: $predmet\n";
    $mail .= "Content-Type: text/plain; charset=\"utf-8\"\n";
    $mail .= "Content-Transfer-Encoding: 8bit\n\n";
    $mail .= $text;
    # Odeslat zprávu.
    open(SENDMAIL, "|$sendmail -oi -t") or print "Nemůžu otevřít rouru do $sendmail: $!\n";
    print SENDMAIL ($mail);
    close(SENDMAIL);
    # Na disk uložit kopii odeslané zprávy.
    open(KOPIE, ">zprava-pro-$adresat.txt");
    print KOPIE ($mail);
    close(KOPIE);
}
