|
|
|
новичок
      
участник
Last Login: 26.08.2003 22:26
Сообщ.: 8,
Visits: 89
|
|
| Подскажите как отослать HTML с помощю Perl-a, так чтобы когда откроется почта, там была страница HTML-a.
|
|
|
|
|
Supreme 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>
|
|
|
|
|
новичок
      
участник
Last Login: 20.12.2002 9:32
Сообщ.: 1,
Visits: 12
|
|
| непосредственно ручками как отправить понятно, а если надо использовать шаблон, да еще и аттачмент?
|
|
|
|
|
Supreme 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;
разделитель надо определить где-нибудь в начале переменнные, вроде названы понятно Если есть вопросы - отвечу
|
|
|
|