Ankündigung

Einklappen
Keine Ankündigung bisher.

multipart/alternative wtf??

Einklappen

Neue Werbung 2019

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

  • multipart/alternative wtf??

    hi leute,

    ich hab folgende Funktion für den Versand einer multipart/alternative E-Mail. Im Opera Mail bekomme ich aber folgende Fehlermeldung: "Beim Dekodieren dieser Datei ist Opera auf Fehler gestoßen"

    im Windows Mail sieht die Mail auch kaputt aus. Nur Thunderbird scheint tollerant genug zu sein den Fehler zu übergehen den ich nicht finden kann

    weiß einer was hier falsch ist? ich hab schon unendlich viele Varianten probiert. So wirklich gut dokumentiert ist das ja nicht.

    Script läuft auf UNIX Server (wegen \n)

    PHP-Code:
    function send($recipient$html$plain$subject_project_partial) {

            
    // Betreff
        
    $subject $subject_project_partial " " $GLOBALS['NA_CONFIG']['subject'];

            
    // Grenze
        
    $boundary md5(uniqid(time()));
        
            
    // Header
        
    $header 'From: ' $GLOBALS['NA_CONFIG']['senderName'] . ' <' .$GLOBALS['NA_CONFIG']['senderMail'] . '>' "\n";
        
    $header .= 'MIME-Version: 1.0' "\n";
        
    $header .= 'Content-Type: multipart/alternative; ';
        
    $header .= 'boundary="'$boundary '"' "\n";

            
    // Plain
        
    $mail_body "--" $boundary "\n";
        
    $mail_body .= 'Content-Type: text/plain; ';
        
    $mail_body .= 'charset="utf-8"' "\n";
        
    $mail_body .= 'Content-Transfer-Encoding: 8bit' "\n\n";
        
    $mail_body .= $plain "\n\n";

            
    // HTML
        
    $mail_body .= "--" $boundary "\n";
        
    $mail_body .= 'Content-Type: text/html; ';
        
    $mail_body .= 'charset="utf-8"' "\n";
        
    $mail_body .= 'Content-Transfer-Encoding: quoted-printable' "\n\n";
        
    $mail_body .= $html "\n";
        
    $mail_body .= "--" $boundary "--\n\n";

            
    // Versand
        
    mail($recipient$subject$mail_body$header);
        } 


  • #2
    Benutze eine Mailerklasse: Mail() ist tot, es lebe mail() und http://www.php.de/adventskalender-20...fverkehrs.html
    http://hallophp.de

    Kommentar


    • #3
      Und auch hier gilt:

      Hinweis:
      [!] Bitte verwende nicht mail() sondern eine entsprechende Mailer Klasse! Viele Probleme lassen sich dadurch beheben.
      Hier findest du einen Überblick von robo47 zu verschiedenen Mailer Klassen: Mail() ist tot, es lebe mail()

      Kommentar


      • #4
        das gibts doch garnicht. Wenn die Klasse das kann warum meine Funktion nicht

        Kommentar


        • #5
          Das ist relativ uninteressant, wenn es die Lösung bereits als fertiges Paket gibt.
          http://hallophp.de

          Kommentar


          • #6
            jetzt hab ich so lange an meinem code geschraubt, jetzt will ich auch wissen was falsch ist ... ich will ja was lernen dabei

            Kommentar


            • #7
              Dann vergleiche die Ergebnisse von beidem ...

              Kommentar


              • #8
                Zitat von markus.falk Beitrag anzeigen
                jetzt hab ich so lange an meinem code geschraubt, jetzt will ich auch wissen was falsch ist ... ich will ja was lernen dabei
                Dann studiere RFC 5322 - Internet Message Format und finde den Fehler in deinen Headern. Viel Spaß dabei.
                "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

                Kommentar


                • #9
                  Zitat von ChrisB Beitrag anzeigen
                  Dann vergleiche die Ergebnisse von beidem ...
                  das hab ich eben schon gemacht. das selbe HTML Template aus Typo3 versendet funktioniert fehlerfrei. Ich seh nur keinen Unterschied. Daher die Frage ob am Quellcode etwas nicht stimmt oder ob jemand eine Ahnung hat

                  Kommentar


                  • #10
                    Zitat von Dark Guardian Beitrag anzeigen
                    Dann studiere RFC 5322 - Internet Message Format und finde den Fehler in deinen Headern. Viel Spaß dabei.
                    RFC 2046 - Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types so sollte es ja eigentlich schon sein

                    Kommentar


                    • #11
                      Wenn du z.B. Thunderbird verwendest, kannst du dir auch die komplette Mail im Quelltext anzeigen lassen. Andere Aktionen > Quelltext anzeigen
                      You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

                      Kommentar


                      • #12
                        ... Ich seh nur keinen Unterschied ...
                        Was verwendest du zum vergleichen ?
                        Imho solltest du da mit nem hex-editor arbeiten, schauen ob umbrüche anders [\r\n vs \n, ... ] sind, charsets anders sind .... aber sinnvoller ist einfach ne ordentliche mailklasse zu benutzen, da spart man sich viel ärger den man oftmals nicht direkt sieht oder, wenn z.b. die mails irgendwann aus irgendeinem grund nicht mehr ankommen, im spamordner landen oder so, wird es noch ärgerlicher. in den meisten mailklassen steckt da halt schon etwas mehr erfahrung drin, seien es bekannte best-practices die sich über die jahre angesammelt haben oder bug-reports, etc, alles das was man selbst meist nicht direkt hat.
                        robo47.net - Blog, Codeschnipsel und mehr
                        | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

                        Kommentar


                        • #13
                          muss das html in einer einzigen zeile gesendet werden? ich werfe das einfach so in die Funktion ... Vielleicht liegs daran? Gibt es eine Grenze für die Zeilenlänge?

                          Kommentar


                          • #14
                            Zitat von robo47 Beitrag anzeigen
                            Was verwendest du zum vergleichen ?
                            bis jetzt mit notepad++

                            Kommentar


                            • #15
                              Ich benutze jetzt seit Jahren nur den PHPmailer, aber bevor ich um die Vorteile wusste habe ich mit der untenstehenden Funktion gemailt. Ich habe damals die mit dieser Funktion und die mit PHPmailer 2.0 erzeugten Mails verglichen und festgestellt, dass die 99,9% identischen Code erzeugen. Unterschiede war die XMAILER-Zeile, die ich nicht habe, und irgendwo Kleinbuchstabe/Großbuchstabe.
                              Da wir jetzt bei PHPmailer 5.0 angekommen sind, sind die Unterschiede inzwischen sicher größer. Ich habe das nicht weiter verfolgt.

                              PHP-Code:
                              // NICHT BENUTZEN. SONDERN EIEN FERTIGE KLASSE; z.B. PHPmailer NEHMEN.
                              // DIENT HIER NUR EINER DEMO

                              function mailsenden($mailtyp,$message_text,$message_html,$mailto,$subject,$from,$cc,$bcc) {
                                  
                                  if( 
                              $mailtyp == "html" ) {
                                          
                                      
                              /* Generiere einen Boundary */
                                      
                              $boundary strtoupper(md5(uniqid(time())));

                                      
                              /* Beginne den Mail-Header mit MIME-Mail-Header */
                                      
                              $mail_header  "MIME-Version: 1.0";
                                      
                              $mail_header .= "\nContent-Type: multipart/alternative; boundary=$boundary";
                                      
                              $mail_header .= "\n\nThis is a multi-part message in MIME format  --  Dies ist eine mehrteilige Nachricht im MIME-Format";

                                      
                              /* Hier faengt der normale Mail-Text an */
                                      
                              $mail_header .= "\n--$boundary";
                                      
                              $mail_header .= "\nContent-Type: text/plain";
                                      
                              $mail_header .= "\nContent-Transfer-Encoding: 7bit";
                                      
                              $mail_header .= "\n\n$message_text";

                                      
                              /* Hier faengt der Datei-Anhang an */
                                      
                              $mail_header .= "\n--$boundary";
                                      
                              $mail_header .= "\nContent-Type: text/html";
                                      
                              $mail_header .= "\n\n$message_html";

                                      
                              /* Gibt das Ende der eMail aus */
                                      
                              $mail_header .= "\n--$boundary--";


                                            
                              mail"$mailto",  "$subject",  "",  "From:$from\nCC:$cc\nBCC:$bcc\n$mail_header\n","-f$from);
                              }

                                  else {
                                            
                              mail"$mailto",  "$subject",  "$message_text",  "From:$from\nCC:$cc\nBCC:$bcc\n","-f$from);

                              PHP-Code:
                              if ($var != 0) {
                                
                              $var 0;

                              Kommentar

                              Lädt...
                              X