Paule: unerwünschtes Ausrufungszeichen in HTML-Mail Quelltext

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

> SMTP-Programm zum Versenden der Mail:

$Sendmail_Prog = "/usr/sbin/sendmail";

> Modul für CGI-Scripts einbinden:

use CGI;

> Modul für CGI-Scripts zum Einlesen der Formulardaten anwenden:

$query = new CGI;
@names = $query->param;

> interne Daten aus den erwarteten hidden-Feldern auslesen:

$delimiter = $query->param('delimiter');  # > Begrenzerzeichen zwischen name und value
$returnhtml = $query->param('return');    # > URL für Dankeseite
$subject = $query->param('subject');      # > E-Mail-Subject

> Text der E-Mail aus den Formulardaten ermitteln:

$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>";
    }
  }
}

> E-Mail Formatierung:

$htmlhead = "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">";
$htmlhead .= "<html>";
$htmlhead .= "<head>";
$htmlhead .= "<title>E-Mail &gt;</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">&nbsp;</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">&nbsp;</td></tr>";
$htmlhead .= "<tr><td><p style="font-family: Arial; font-size: 12px;">";

> Hier kommt der E-Mail Text

$htmlfoot = "</p></td></tr></table>";
$htmlfoot .= "</td></tr></table>";
$htmlfoot .= "</body>";
$htmlfoot .= "</html>";

> E-Mail versenden:

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);

> Dankeseite an Browser senden:

print "Location: $returnhtml\n\n";

  1. 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.