Usate direttamente il programma sendmail:
open(SENDMAIL, "|/usr/lib/sendmail -oi -t -odq")
or die "Impossibile aprire sendmail: $!\n";
print SENDMAIL <<"EOF";
From: Mittente <io\@host>
To: Destinatario <tu\@altrohost>
Subject: Un oggetto significativo
Il corpo del messaggio va qui dopo una linea vuota.
Puo` essere lungo quante linee desiderate.
EOF
close(SENDMAIL) or warn "sendmail non si e` chiuso correttamente";
L'opzione -oi impedisce a sendmail di intepretare come "fine del
messaggio" una linea contenente un singolo punto. L'opzione -t indica
di usare l'header per decidere a chi va spedito il messaggio, e -odq
indica di mettere il messaggio nella coda. Quest'ultima opzione significa
che il vostro messaggio non sarà spedito subito, dunque omettetela
se desiderate una spedizione immediata.
In alternativa, alcune vie meno convenienti includono la chiamata a mail
(a volte denominato mailx) direttamente, o semplicemente l'apertura della
porta 25 al fine di intrattenere una intima conversazione con il server SMTP
remoto, probabilmente sendmail.
Oppure potreste usare il modulo CPAN Mail::Mailer:
use Mail::Mailer;
$mailer = Mail::Mailer->new();
$mailer->open({ From => $indirizzo_mittente,
To => $indirizzo_destinatario,
Subject => $oggetto,
})
or die "Non posso aprire: $!\n";
print $mailer $body;
$mailer->close();
Il modulo Mail::Internet usa Net::SMTP, che è meno Unix-centrico di
Mail::Mailer, ma anche meno affidabile. Evitate i comandi SMTP puri. Ci
sono molte ragioni per servirsi di un agente di trasporto della posta
come sendmail. Queste includono le code, i record MX, e la sicurezza.
|