simon: Umlaute im Emailanhang...

Hallo,

ich bin dabei ein kleines Script zu basteln welches Mails abruft und die angehängten Dateien auf dem Webserver speichert...

Das funktioniert auch alles ohne Probleme. Jedoch klappt es nicht wenn der Dateiname einer angehängten Datei ein ÖÜÄ oder Sonderzeichen enthält...

Ich habs mir strtr() probiert, was jedoch nicht klappte. Hat jemand eine Idee wie ich das hinbekomme?

Hier der interessante Ausschnit:

$mailbox = imap_open ("{".$MAIL_HOST.":110/pop3}INBOX", $VCF_MAIL_USER_NAME, $VCF_MAIL_USER_PASS) or die("Keine Verbindung bzw. Login ins Postfach");

// Mail holen
$check = imap_check($mailbox);
$Anzahl_Nachrichten = $check->Nmsgs;

for ($j=1; $j<=$Anzahl_Nachrichten; $j++) {
   $oStruct=imap_fetchstructure($mailbox, $j);
   $nteile=count($oStruct->parts);

// Anhang vorhanden
   if ($nteile>=2) {

for ($k=1;$k<$nteile;$k++) {
         $trans = array ("ä" => "ae", "ö" => "oe",  "ü" => "ue", "Ä" => "Ae", "Ö" => "Oe",  "Ü" => "Ue");
         $dateiname = strtolower(strtr($oStruct->parts[$k]->dparameters[0]->value, $trans));

Besten Dank,

Gruss

  • simon
  1. Hallo Simon,

    $trans = array ("ä" => "ae", "ö" => "oe",  "ü" => "ue", "Ä" => "Ae", "Ö" => "Oe",  "Ü" => "Ue");
             $dateiname = strtolower(strtr($oStruct->parts[$k]->dparameters[0]->value, $trans));

    zwei Dinge:

    1. Bei obiger Lösung könntest Du Probleme mit dem Encoding bekommen. Ein Unicode-Ä ist nicht das Gleiche wie ein ISO-Ä.

    2. Es gibt ja noch mehr unerwünschte Zeichen in Dateinamen, z.B. "ß", Leerzeichen, Kommata, Punkte, Akzente, Hochkommata, ...
      Je nachdem, woher Du die Dateinamen bekommst, mußt Du Dich auf die wüstesten Zeichenketten gefaßt machen.
      Ich ersetze in solchen Fällen einfach immer alle unerwünschten Zeichen durch einen Unterstrich: $dateiname = preg_replace("/[^a-zA-Z]/", "_", $dateiname);

    Aber vielleicht hat ja im Forum noch jemand bessere Ideen.

    Ciao,
    Andreas

    1. Hi Andreas,

      besten Dank! Ich werds einfach auch so machen... Hab nur noch Pkt zugelassen wegen der Endung ;)

      Thx

      • simon