Perl, sendmail, html ?
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Perl, sendmail, html ? Expand / Collapse
Автор
Сообщение
05.11.2001 6:51
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 26.08.2003 22:26
Сообщ.: 8, Visits: 89
Подскажите как отослать HTML с помощю Perl-a, так чтобы когда откроется почта, там была страница HTML-a.
Сообщ. #731404
05.11.2001 18:42
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 15.03.2003 7:02
Сообщ.: 88, Visits: 980
Все элементарно!
Берешь и отправляешь сгенерированое ручками тело письма. А что ты там уже нагенеришь, никого особо не колышет. Лишь бы соответствовало стандарту.
Если тебе совсем все просто надо, то выдаешь сендмейлу что-то типа этого:

From: billy@microsoft.com
To: torvaldz@linux.org
Content-Type: text/html

<html>
<h1>LAMER!!!</h1>
</html>
Сообщ. #731547
20.12.2002 9:33
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 20.12.2002 9:32
Сообщ.: 1, Visits: 12
непосредственно ручками как отправить понятно, а если надо использовать шаблон, да еще и аттачмент?
Сообщ. #770297
20.12.2002 14:36
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 13.10.2006 1:31
Сообщ.: 143, Visits: 1 577
это, видимо, вопрос, скорее по спесификации SMTP :)
а для Perl, соответственно, можно использовать
use MIME::Base64 qw(encode_base64);
дальше при посылке письма шлем заголовки

#smtp - здесь открытое соединение.
#У меня это было сделано непосредственно через smtp,
#но можно открывать сеанс с sendmail,
#и вместо datasend просто print
#только при этом стоит почитать побольше по безопасности кода ;)
$smtp->datasend("From: $from");
$smtp->datasend("Subject: $subject");
$smtp->datasend("X-Mailer: MyMail v1b");
$smtp->datasend("MIME-Version: 1.0");
$smtp->datasend("Content-Transfer-Encoding: 8bit");
if (length($atname) > 3) {
#если имеется этач
$smtp->datasend("Content-Type: multipart/mixed; boundary=\"My_Boundary\"");
} else {
$smtp->datasend("Content-Type: text/plain; charset=\"koi8-r\"");
}
if (param("attach")) {
#если имеется этач
$smtp->datasend("This is a multi-part message in MIME format.");
$smtp->datasend("--My_Boundary"); #разделитель - определен в начале
$smtp->datasend("Content-Type: text\/plain");
}
$smtp->datasend(param("mess")); #тут тело письма
if (param("attach")) { # а тут этачмент
$smtp->datasend("--My_Boundary"); #разделитель - определен в начале
$smtp->datasend("Content-Type: application/octet-stream; name=\"$atname\"");
$smtp->datasend("Content-Disposition: attachment; filename=\"$atname\"");
$smtp->datasend("Content-Transfer-Encoding: base64");
while (read(param("attach"), $buf, 60*57)) {
$smtp->datasend(encode_base64($buf));
}
$smtp->datasend("--My_Boundary--");
}
$smtp->dataend();
$smtp->quit;

разделитель надо определить где-нибудь в начале
переменнные, вроде названы понятно
Если есть вопросы - отвечу
Сообщ. #770360
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 10:26