unerwünschtes Ausrufungszeichen in HTML-Mail Quelltext
Paule
0 Paule
Ich verwende ein Perl/CGI- Script, um HTML-Mails zu versenden.
Soweit so gut. Allerdings bin ich auf ein Problem gestoßen:
Seltsamerweise befindet sich im Quelltext der ankommenden Mail
an einer Stelle, scheinbar zufällig je nach Länge des eingegebenen
Textes ein Ausrufungszeichen "!", das schon mal zu geringen
Darstellungsproblemen führen kann,
wenn es in einem HTML-Tag auftaucht. Leider kann ich mir
dieses Phänomen nicht erklären und
suche deshalb dringend Hilfe.
Für Lösungsansätze oder Hinweise wäre ich wirklich
sehr dankbar.
*Hier noch der Quellcode meines Mailers:
#!/usr/bin/perl -w
$Sendmail_Prog = "/usr/sbin/sendmail";
use CGI;
$query = new CGI;
@names = $query->param;
$delimiter = $query->param('delimiter'); # > Begrenzerzeichen zwischen name und value
$returnhtml = $query->param('return'); # > URL für Dankeseite
$subject = $query->param('subject'); # > E-Mail-Subject
$mailtext = "";
foreach(@names) {
$name = $_;
@values = "";
@values = $query->param($name);
$mailto = "xxx@xxx.de";
if($name ne "return" && $name ne "subject" && $name ne "delimiter") {
foreach $value (@values) {
# > Sonderzeichen ersetzen:
$value =~ s/ä/ä/g;
$value =~ s/ö/ö/g;
$value =~ s/ü/ü/g;
$value =~ s/Ä/Ä/g;
$value =~ s/Ö/Ö/g;
$value =~ s/Ü/Ü/g;
$value =~ s/ß/ß/g;
$mailtext = $mailtext."<strong>".$name."</strong>";
$mailtext = $mailtext.$delimiter."<br>";
$mailtext = $mailtext.$value."<br><br>";
}
}
}
$htmlhead = "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">";
$htmlhead .= "<html>";
$htmlhead .= "<head>";
$htmlhead .= "<title>E-Mail ></title>";
$htmlhead .= "</head>";
$htmlhead .= "<body>";
$htmlhead .= "<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0"><tr><td align="center" valign="middle">";
$htmlhead .= "<table width="470" border="0" cellpadding="0" cellspacing="0">";
$htmlhead .= "<tr><td height="32" align="right"><a href="http://www.xxx.de/" target="_blank"><img src="http://www.xxx.de/images/xxx.jpg" border="0"></a></td></tr>";
$htmlhead .= "<tr><td height="8"> </td></tr>";
$htmlhead .= "<tr><td height="19" align="right"><p style="font-family: Arial; font-size: 12px;">Title</p></td></tr>";
$htmlhead .= "<tr><td height="53"> </td></tr>";
$htmlhead .= "<tr><td><p style="font-family: Arial; font-size: 12px;">";
$htmlfoot = "</p></td></tr></table>";
$htmlfoot .= "</td></tr></table>";
$htmlfoot .= "</body>";
$htmlfoot .= "</html>";
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "E-Mailprogramm konnte nicht gestartet werden\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: $subject\n";
print MAIL "Content-type: text/html\n\n";
print MAIL "$htmlhead$mailtext$htmlfoot\n";
print MAIL "\n\n";
close(MAIL);
print "Location: $returnhtml\n\n";
Sieht so aus, als wäre das Problem gelöst.
Im HTML -Deklarationsteil habe ich einfach einige \n -Zeilenumbrüche
eingesetzt und seitdem taucht das Ausrufungszeichen nicht
mehr im Quelltext der versendeten Mail auf.