Email mit Anhang verschicken

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Email mit Anhang verschicken

    Hallo zusammen,

    hab mir ne Funktion gebaut, die Emails mit Anhängen verschicken soll.

    Folgender Header wird dabei erstellt:

    From: Absendername <info@test.de>
    Reply-To: Absendername <info@test.de>
    Return-Path: Absendername <info@test.de>
    Delivered-to: Absendername <info@test.de>
    Message-ID: <20060804143112info@test.de>
    X-Mailer: PHP v4.4.1
    Date: Fri, 04 Aug 2006 14:31:12 +0200

    MIME-Version: 1.0
    Content-Type: multipart/mixed; boundary=429dd6ae0490c56fc0855b0bfc36be86

    This is a multi-part message in MIME format
    --429dd6ae0490c56fc0855b0bfc36be86
    Content-type: text/plain; charset=iso-8859-1

    Content-Transfer-Encoding: 8bit

    Name: sfdsf
    Firma: sdsdf
    Telefon: dsfdsf
    Email: sddsf
    Beschreibung
    sdfdfsdsf

    --429dd6ae0490c56fc0855b0bfc36be86
    Content-Type: image/jpeg; name=AAiP9VvP_1.jpg
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment; filename=AAiP9VvP_1.jpg

    /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAARgAA/+4ADkFkb2JlAGTAAAAAAf/b
    AIQABAMDAwMDBAMDBAYEAwQGBwUEBAUHCAYGBwYGCAoICQkJCQgKCgwMDAwMCgwMDQ0MDBERERER
    FBQUFBQUFBQUFAEEBQUIBwgPCgoPFA4ODhQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU
    FBQUFBQUFBQUFBQUFBQUFBQU/8AAEQgAFAAUAwERAAIRAQMRAf/EAE0AAQEAAAAAAAAAAAAAAAAA
    AAAHAQEBAQAAAAAAAAAAAAAAAAAABwgQAQAAAAAAAAAAAAAAAAAAAAARAQAAAAAAAAAAAAAAAAAA
    AAD/2gAMAwEAAhEDEQA/AKcyEvAAAAAAAAD/2Q==

    --429dd6ae0490c56fc0855b0bfc36be86--

    Leider funktioniert das nicht so ganz, denn erstens ist kein Anhang dabei und zweitens wird als Text der Header ausgegeben.

    Wo liegt der Fehler?

    VIELEN DANK!!

    strauberry

  • #2
    Zeig mal bitte den Code, der die Mails erzeugt.

    Kommentar


    • #3
      Sorry für das Scrollen!

      >> Fand es ohne Umbruch übersichtlicher

      PHP-Code:
      function MailSenden() {
            
      // Liste mit den verfügbaren Email-Formaten --
      $arr_MailTypen = array('plain' => "Content-type: text/plain; charset=iso-8859-1\n",

      'html' => 'MIME-Version: 1.0' "\n".'Content-type: text/html; charset=iso-8859-1' "\n");
            
      // Absende-Optionen im Header speichern ------
      ini_set("sendmail_from",$this->arr_Optionen['AbsenderEmail']);

      $str_Header.= "From: ".$this->arr_Optionen['AbsenderName']."<".
      $this->arr_Optionen['AbsenderEmail'].">\n";

      $str_Header.= "Reply-To: ".$this->arr_Optionen['AbsenderName']."<".
      $this->arr_Optionen['AbsenderEmail'].">\n";

      $str_Header.= "Return-Path: ".$this->arr_Optionen['AbsenderName'].
      <"
      .$this->arr_Optionen['AbsenderEmail'].">\n";

      $str_Header.= "Delivered-to: ".$this->arr_Optionen['AbsenderName'].
      <"
      .$this->arr_Optionen['AbsenderEmail'].">\n";

      $str_Header.= "Message-ID: <".date("YmdHis").$this->arr_Optionen['AbsenderEmail'].">\n";
      $str_Header.= "X-Mailer: PHP v".phpversion()."\n";
      $str_Header.= "Date: ".date("r")."\n";
            
      // Prüfen, ob Anhänge mitgeschickt werden sollen
      if(count($this->arr_Anhaenge) > 0) {
                  
      print_r($this->arr_Anhaenge);
      // Array mit allen Content-Types
      $arr_ContenType = array('gif' => array('image/gif','base64'),
      'jpg' => array('image/jpeg','base64'),
      'jpeg' => array('image/jpeg','base64'));
                  
      // Trenner erstellen -------------------
      $str_Trenner md5(uniqid(time()));
                        
      // Header vorbereiten ------------------
      $str_Header.= "\n";
      $str_Header.= "MIME-Version: 1.0\n";
      $str_Header.= "Content-Type: multipart/mixed; boundary=".$str_Trenner."\n\n";
      $str_Header.= "This is a multi-part message in MIME format\n";
                        
      $str_Header.= "--".$str_Trenner."\n";
                        
      $str_Header.= "##EMAILTYPE##\n";
      $str_Header.= "Content-Transfer-Encoding: 8bit\n\n";
      $str_Header.= "##EMAILTEXT##";
                        
      $str_Header.= "--".$str_Trenner."\n";

      // Dateien anhängen ----------------
      foreach($this->arr_Anhaenge as $Anhang) {
      $str_Header.= "Content-Type: ".$arr_ContenType[$Anhang['Dateityp']][0]."; 
      name="
      .$Anhang['EmailDateiname']."\n";
      $str_Header.= "Content-Transfer-Encoding: ".$arr_ContenType[$Anhang['Dateityp']][1]."\n";
      $str_Header.= "Content-Disposition: attachment; filename=".$Anhang['EmailDateiname']."\n\n";
      $Dateiinhalt fread(fopen($Anhang['Pfad'], "r"), filesize($Anhang['Pfad']));
       if(
      $arr_ContenType[$Anhang['Dateityp']][1] == 'base64')
      $str_Header.= chunk_split(base64_encode($Dateiinhalt));
      $str_Header.= "\n";
      $str_Header.= "--".$str_Trenner."--";
      }    
                        
      // Email(s) versenden -------------  
      foreach($this->arr_Empfaenger as $Empfaenger) {
      $str_TMPHeader str_replace("##EMAILTEXT##",$this->arr_Mailtexte[$Empfaenger[0]],$str_Header);
      $str_TMPHeader str_replace("##EMAILTYPE##",$arr_MailTypen[$Empfaenger[1]],$str_TMPHeader);
      echo 
      $str_TMPHeader;
      mail($Empfaenger[0],$this->arr_Optionen['Betreff'],"",$str_TMPHeader,
      "-f ".$this->arr_Optionen['AbsenderEmail']);
      }                  
                  
                  
      // Email ohne Anhänge verschicken    
      } else {

      foreach(
      $this->arr_Empfaenger as $Empfaenger) {
      mail($Empfaenger[0],$this->arr_Optionen['Betreff'],
      $this->arr_Mailtexte[$Empfaenger[0]],$str_Header.$arr_MailTypen[$Empfaenger[1]],
      "-f ".$this->arr_Optionen['AbsenderEmail']);
      }            
      }
                  
      ini_restore("sendmail_from");
                  

      Zuletzt geändert von strauberry; 04.08.2006, 13:58.

      Kommentar


      • #4
        Dein Sorry kannst du dir klemmen!
        Halte dich bitte an die Regeln und bricht den Code 1024er-konform um.

        Kommentar


        • #5
          Ihr wisst doch sonst immer alles :-( Hat da keiner ne Idee?

          Kommentar


          • #6
            Das ist ein bekanntes und oft auftretendes Problem...
            Wenn die Header nicht 100% korrekt zusammengebastelt werden,
            gibts Ärger mit Spamfiltern oder Anhänge kommen nicht an!

            Ich benutze mail() nur noch als "dirty Hack", während der
            Entwicklung, für Benachrichtigungen vom Server an mich
            selbst, ansonsten: http://phpmailer.sourceforge.net
            Wir werden alle sterben

            Kommentar


            • #7
              Alles klar, danke für den Tip! Dann werde ich mir mal nen Wrapper bauen :-)

              Kommentar

              Lädt...
              X