webForumDet fria alternativet

HTML-mail via ett formmailscript?

7 svar · 247 visningar · startad av fedde

feddeMedlem sedan dec. 1999142 inlägg
#1

Någon som vet hur man skickar HTML-mail via ett vanligt formmailscript (perl)? Jag får det bara till vanlig text. Hittar inga sidor på nätet om detta heller.
Och bråttom är det som vanligt ;)

------------------
/fedde

[Redigerat av fedde den 14 sep 2001]

JojoxxMedlem sedan juni 20004 306 inlägg
#2

Lägg till raden "Content-type:text/html\n" i mail-headern. perl faq

------------------
/ J

feddeMedlem sedan dec. 1999142 inlägg
#3

Detta har jag redan skrivit för att få den att skapa en tacksida.
Var tänkte du jag skulle sätta in det för själva mailet skull? Bifogar en del av scriptet.

Jag har läst lite om Blat.exe på nätet och de skriver bl a om att man ska lägga till - html eller - mime jag har provat att göra detta på $NT_mail_program men det fungerar inte.

############################################################
# bearbetning av formulär data...
############################################################
print "Content-type: text/html\n\n";

&kollasida;

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);

foreach $pair(@pairs){
  ($name, $value) = split(/=/, $pair);
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $FORM{$name} = $value;
}

#############################################################
# OBS ange parametrarna nedan
#############################################################
$fromuser = 'testmail@obblankett.se';
$knownsender = $fromuser;
$touser = 'info@3pixlar.com';
$fromsmtp = 'obblankett.se';
$tosmtp = '3pixlar.com';
$subject = "Test för HTML-mail";
$mail_program = "c:\\Winnt\\System32\\blat.exe";

#############################################################
# Anropa mailrutinen
#############################################################
&send_mail($knownsender, $fromuser, $fromsmtp, $touser, $tosmtp, $subject);

sub send_mail {
    local($knownsender, $fromuser, $fromsmtp, $touser, $tosmtp, 
      $subject) = @_;
    my ($NT_mail_program);

# First we need to start the mail program and open
# a PIPE to the program so that anything 
# we print to the filehandle, goes to the running
# program.
    $ENV{"TMP"} = "C:\\TEMP";    # blat writes a temporary file here
    $NT_mail_program = $mail_program;
    $NT_mail_program .= " - -i $knownsender -t $touser -q -s \"$subject\"";
      open (MAIL, "|$NT_mail_program") || 
	&web_error("Could Not Open Mail Program");
 

############################################################
# Skriver mailmedelandet till mailprogrammet
############################################################
print MAIL "Följande uppgifter har lämnats vid beställningen:\n";
print MAIL "<b>Följande uppgifter har lämnats vid beställningen:\n";
print MAIL "-------------------------\n";
print MAIL "Kuvert\n";
print MAIL "$FORM{'Sort'}\n";
print MAIL "Antal: $FORM{'Antal'}\n";
print MAIL "-------------------------\n\n";
print MAIL "$FORM{'Bolagsnamn'}\n";
print MAIL "$FORM{'Avdelning'}\n" if $FORM{'Avdelning'};
print MAIL "$FORM{'Postadress'} $FORM{'Postnummer'} $FORM{'Ort'}\n";
print MAIL "$FORM{'Webadress'}\n";
print MAIL "\n-------------------------\n";
print MAIL "Meddelande till ob blankett:\n\n";
print MAIL "$FORM{'Meddelande'}\n";
print MAIL "-------------------------\n\n";
close (MAIL);

} #end of send_mail

------------------
/fedde

JojoxxMedlem sedan juni 20004 306 inlägg
#4

Jag har aldrig kört blat, men kan du ändra mime-type på det sättet så borde det gå att ändra på;

$NT_mail_program .= " - -i $knownsender -t $touser -q -s \"$subject\"";

till;

$NT_mail_program .= " -mime text/html -i $knownsender -t $touser -q -s \"$subject\"";

(det första binde-strecket ser inte ut att göra någon nytta, så det har jag plockat bort).

------------------
/ J

feddeMedlem sedan dec. 1999142 inlägg
#5

Det fungerade inte att göra så.
Den skickade inget mail alls då...
(men inget felmeddelande)

Något annat förslag?

------------------
/fedde

JojoxxMedlem sedan juni 20004 306 inlägg
#6

Det du kan göra är att titta i källan på det mail du fått för att se om det i headern finns någon rad som säger "Content-type: någonting". Eftersom du bara kan påverka de rader som blat tillåter, subject, to, reply-to osv, så måste det finnas en fördefinierad växel för det. -mime lät ju bra, men fungerar det inte och dokumentationen inte säger något annat så byt mailtransporter. Egentligen, skall du bara skicka mail utan attachments eller konstigheter är det enklare att skicka mailet direkt från perl. Då kan du ändra header-fälten precis som du vill ha dem. Ett exempel kan se ut så här;

use Net::SMTP;
$mailserver = 'smtp.domain.com';
$sender = 'maildaemon@domain.com';
$recipient = 'you@domain.com';
$subject = 'Funkar bra';

$mailmsg = <<End_of_mail;
From: $sender
To: $recipient
Content-type: text/html; charset=ISO-8859-1
Subject: $subject

<html><body><h3>Hej</h3><p>...på dig</body></html>
End_of_mail

$smtp = Net::SMTP->new($mailserver);
$smtp->mail($sender);
$smtp->to($recipient);
$smtp->data();
$smtp->datasend($mailmsg);
$smtp->dataend();
$smtp->quit();

------------------
/ J

HansenMedlem sedan aug. 2000383 inlägg
#7

Hej,

Jag brukar använda MIME::Lite för att lösa den uppgiften, fungerar väldigt smidigt med inbäddade bilder.

Har dock bara testat med sendmail och smtp.

------------------
Hansen
c.h@ngmedia.com

feddeMedlem sedan dec. 1999142 inlägg
#8

Det verkade inte vara stöd för mer än Blat.exe hos webbhotellet (när det gäller perl) så jag gjorde ett försök via ASP CDONTS och det fick jag att fungera till slut.

Men jag vill ändå tacka er för att ni lade ner tid på mig och mitt problem! :e

Hoppas att jag kan hjälpa er nästa gång istället.

------------------
/fedde

Genererad på 376 ms · cache AV · v20260730165559-full.f96bc7eb