Der Martin: Email mit Anhang (von User) ?

Beitrag lesen

Hallo,

Ich möchte keinen aufgeblähten Mailer verwenden sondern es gern lernen.

also gut, sehen wir's uns an.

Wirklichkeit: Die Email kommt an, aber der Anhang steht nur im Body in Form von Text (base64)

Also scheint's an der Gliederung zu liegen, wahrscheinlich die Boundaries nicht korrekt gesetzt.

Hab mal Zeilenumbrüche geändert.

Inwiefern?

<?php
	if(isset($_POST["FormSend"])){
		$msg = "";
		$absender = "from@example.com";
		$absendername = "My Form";
		$empfaenger = "$to@xample.com";
		$subject = "Mail mit Anhang";
		$boundary = "----=_".md5(uniqid(mt_rand(), 1))."";
// Wozu einen Leerstring hinten anhängen? Das tut nicht weh, ist aber Unfug.
		
		$Header = "FROM:$absendername <$absender>\r\n";
// Achtung: Der Header heißt "From", und nach dem Doppelpunkt muss ein Leerzeichen stehen.
		$Header .= "MIME-Version: 1.0\r\n";
		$Header .= "Content-Type: multipart/mixed; 	boundary=\"$boundary\"\r\n";

		$msg = "$boundary\r\n";
		$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\" Content-Transfer-Encoding: 7bit\r\n";
// 7bit? Das ist ungewöhnlich. Typisch ist heute Quoted-Printable.
		
		foreach($_POST as $key => $value)  
		{ 
			$value = mysql_real_escape_string($value);
			$value = htmlentities("$value", ENT_QUOTES);
// Wieso maskierst du die Werte erst für mySQL, dann für HTML? Beides ist hier falsch.
// Und eine einzelne Stringvariable nochmal in Anführungszeichen einbetten ist auch sinnlos.
			if($key == "FormSend"){}else{
				$msg .= "$key: $value\r\n";
			} 
		}
		$msg .= "".$boundary."--\r\n";
		$msg .= "$boundary\r\n";
// Das ist einmal boundary zu viel. Und zwar das mit den '--', die erst ganz am Ende kommen sollten.
		
		$msg .="Content-Type: application/octetstream; name=".$_FILES["Anhang"]["name"]."\r\n";
		$msg .="Content-Transfer-Encoding: base64\r\n";
		$msg .="Content-Disposition: attachment; filename=".$_FILES["Anhang"]["name"]."\r\n";
// Hier fehlt noch eine Leerzeile "\r\n" bzw. ein zweiter Zeilenumbruch.
		@copy($_FILES["Anhang"]["tmp_name"],"phptmp/".$_FILES["Anhang"]["name"]."");
		$zeiger_auf_datei=@fopen("phptmp/".$_FILES["Anhang"]["name"]."","rb");
		$inhalt_der_datei=@fread($zeiger_auf_datei,filesize($_FILES["Anhang"]["name"]));
		@fclose($zeiger_auf_datei);
		$inhalt_der_datei=chunk_split(base64_encode($inhalt_der_datei));
		$msg .= $inhalt_der_datei;
		$msg .= "".$boundary."--";
// Genau, hier ist das mit den zusätzlichen zwei '--' richtig.
		@mail($empfaenger,$subject,$msg,$Header);
	}
?>

Tipp: Lass dir zur Kontrolle mal deine gesamten Header und den Mail-Body in eine Textdatei ausgeben und vergleiche das akribisch mit dem Quellcode einer e-Mail mit Anhang, die du von irgendjemandem erhalten hast. Da sollten die kleinen Unterschiede wohl auffallen.

So long,
 Martin

0 78

Email mit Anhang (von User) ?

Rainer
  • php
  1. 2
    dedlfix
    1. 0
      Rainer
      1. 0
        Regina Schlauklug
        • e-mail
        1. 0
          Regina Schlauklug
          1. 1
            Der Martin
            • klugscheißerei
            • sprache
            1. 0
              Gunnar Bittersmann
              1. 0
                Der Martin
                1. 0
                  Felix Riesterer
                  1. 0
                    Der Martin
                    1. 0
                      Matthias Apsel
                      1. 0
                        Tabellenkalk
                        • humor
                        • sprache
                        1. 0
                          MudGuard
                          1. 0
                            Der Martin
                            1. 0
                              MudGuard
                              1. 0
                                Der Martin
                              2. 0
                                Gunnar Bittersmann
                  2. 0
                    Gunnar Bittersmann
                    • klugscheißerei
                    • menschelei
                    1. 0
                      Felix Riesterer
            2. 0
              Gunnar Bittersmann
              1. 0
                Der Martin
                1. 0
                  Gunnar Bittersmann
      2. 0
        dedlfix
      3. 0
        Der Martin
      4. 0
        pl
  2. 0
    MudGuard
  3. 0
    pl
    1. 0
      dedlfix
      1. 0
        pl
        1. 2
          Christian Kruse
          1. 0
            pl
            1. 0
              woodfighter
              • programmiertechnik
        2. 0
          dedlfix
          1. -2
            pl
            1. 1
              woodfighter
              • menschelei
              1. 0
                pl
                1. 0
                  woodfighter
    2. 2
      Der Martin
      1. -2
        pl
        1. 3
          Julius
          • meinung
          • menschelei
          • php
          1. 0
            pl
            1. 3

              Auf dass ich der letzte Fütterer bin

              Auge
              • meinung
              1. 0
                pl
            2. 1
              Julius
              1. -2
                pl
                1. 2
                  Matthias Apsel
                  1. 0
                    Julius
                2. 0
                  Julius
                  1. 0
                    pl
                    1. 1
                      Julius
                      1. 0
                        pl
                        1. 0
                          Julius
                    2. 0
                      woodfighter
                      1. 0
                        pl
                        1. 2
                          woodfighter
                        2. 0
                          Julius
                        3. 0
                          Matthias Apsel
                        4. 0
                          Matthias Apsel
                        5. 0
                          Matthias Apsel
                        6. 0
                          Matthias Apsel
                3. 0
                  Mitleser
                4. 2
                  Der Martin
                  • meinung
                  • menschelei
                  1. 0
                    pl
                    1. 0
                      Julius
                      1. 0
                        pl
                        1. 0
                          Julius
                          1. 0
                            pl
                            1. 4
                              woodfighter
                              1. -2
                                pl
                                1. 1
                                  woodfighter
                                  • meinung
                                  • perl
                                  1. 0

                                    Theorie und Praxis OOP

                                    pl
                                    1. 6
                                      woodfighter
                              2. 0
                                Julius
                                1. 0
                                  woodfighter
                                  1. 0
                                    Julius
                                    1. 1
                                      woodfighter
                5. 0
                  Thars
            3. 0
              Julius