'mail' Versand Problem

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

  • 'mail' Versand Problem

    Guten Tag liebe Forumnutzer,

    ich habe folgendes Script mit folgendem Problem.
    Eigentlich sollte das Script Emails + Anhang(oder auch nicht) versenden, die Emailadressen werden vorher aus einer DB ausgelesen.
    Soweit so gut nur klappt das nur insoweit, dass ich die Copymail an mich selbst krieg, die eigentliche Email aus der DB aber nicht.
    Zudem funktioniert der HTML-Header auch nicht und wird mir als normale Textemail angezeigt.

    Wäre nett wenn mir einer helfen könnte. Ich denke mal das ich mal wieder nen Leichtsinnsfehler drin hab und eigentlich eher das machen sollte.

    Vielen Dank

    PHP-Code:


    <?php
    session_start
    ();
    require (
    "database.php");
    $sql1 "SELECT * FROM test2  WHERE Id = '".$_SESSION['user_id']."' LIMIT 1";
    $result1 mysql_query($sql1);
    while (
    $row mysql_fetch_array($result1)) 

    $user $row["Username"];
    $vname $row["Vorname"];  
    $nname $row["Nachname"];
    $email $row["Email"]; 
    }
    $betreff $_REQUEST['betreff'];
    $absend $_REQUEST['from'];
    $cc $_REQUEST['cc'];
    if (
    $_REQUEST['senden'])
    {
    $betreff utf8_decode($betreff);
    if(!empty(
    $absend))
    {
    $absend "From: $absend\n";
    }
    if(!empty(
    $cc))
    {
    $cc "Cc: $cc\n";
    }
    if(!empty(
    $datei))
    {
    $datei_content fread(fopen($datei,"r"),filesize($datei));
    $datei_content chunk_split(base64_encode($datei_content));
    $boundary strtoupper(md5(uniqid(time())));
    $mail_header "Content-Type: multipart/mixed; boundary=$boundary\n";
    /* Hier faengt der normale Mail-Text an */
    $mail_header .= "--$boundary\n";
    if(
    $content_type == "text")
    {
    $mail_header .= "Content-Type: text/plain\n";
    $mail_header .= "Content-Transfer-Encoding: 7bit\n\n";
    $msg str_replace(chr(10),"",$msg);
    $msg utf8_decode($msg);
    $sql2 "SELECT Email FROM test WHERE HTML = 'Nein' && TEXT = 'Ja' && Abbestellt IS NULL";
    $result2 mysql_query($sql2);
    while (
    $list2 mysql_fetch_array($result2)) 
    {
    $empfaenger $list2["Email"];
    mail($empfaenger,$betreff,$msg,$header);
    if(empty(
    $empfaenger))
    {
    echo 
    "Empfänger konnte aus Datenbank nicht ausgelesen werden.<br> Bitte erneut versuchen.";
    }
    else 
    {
    echo 
    "<br>Erfolgreich versandt!<br>";
    }
    }
    }
    else
    {
    $mail_header .= "Content-Type: text/html\n";
    $mail_header .= "Content-Transfer-Encoding: 8bit\n\n";
    $sql3 "SELECT Email FROM test WHERE HTML = 'Ja' && TEXT = 'Nein' && Abbestellt IS NULL";
    $result3 mysql_query($sql3);
    while (
    $list3 mysql_fetch_array($result3)) 
    {
    $empfaenger $list1["Email"];
    mail($empfaenger,$betreff,$msg,$header);
    if(empty(
    $empfaenger))
    {
    echo 
    "Empfänger konnte aus Datenbank nicht ausgelesen werden.<br> Bitte erneut versuchen.";
    }
    else 
    {
    echo 
    "<br>Erfolgreich versandt!<br>";
    }
    }
    }
    $mail_header .= "$msg\n\n";
    /* Hier faengt der Datei-Anhang an */
    $datei_name utf8_decode($datei_name);
    $mail_header .= "--$boundary\n";
    $mail_header .= "Content-Type: application/octetstream; name=\"$datei_name\"\n";
    /* Codierung immer BASE64 */
    $mail_header .= "Content-Transfer-Encoding: base64\n";
    $mail_header .= "Content-Disposition: attachment; filename=\"$datei_name\"\n\n";
    $mail_header .= "$datei_content\n";
    /* Gibt das Ende der eMail aus */
    $mail_header .= "--$boundary--\n";
    }
    else
    {
    /* Format - (html o. txt) */
    if($content_type == "text")
    {
    $content_type "Content-Type: text/plain\n";
    $encoding "Content-Transfer-Encoding: 7bit\n";
    $msg str_replace(chr(10),"",$msg);
    $msg utf8_decode($msg); 
    $sql4 "SELECT Email FROM test  WHERE HTML = 'Nein' && TEXT = 'Ja' && Abbestellt IS NULL";
    $result4 mysql_query($sql4);
    while (
    $list4 mysql_fetch_array($result4)) 
    {
    $empfaenger $list4["Email"];
    mail($empfaenger,$betreff,$msg,$header);
    if(empty(
    $empfaenger))
    {
    echo 
    "Empfänger konnte aus Datenbank nicht ausgelesen werden.<br> Bitte erneut versuchen.";
    }
    else 
    {
    echo 
    "<br>Erfolgreich versandt!<br>";
    }
    }
    }
    elseif(
    $content_type == "html")
    {
    $content_type "Content-Type: text/html\n";
    $encoding "Content-Transfer-Encoding: 8bit\n";
    $sql5 "SELECT Email FROM test WHERE HTML = 'Ja' && TEXT = 'Nein' && Abbestellt IS NULL";
    $result5 mysql_query($sql5);
    while (
    $list5 mysql_fetch_array($result5)) 
    {
    $empfaenger $list5["Email"];
    mail($empfaenger,$betreff,$msg,$header);
    if(empty(
    $empfaenger))
    {
    echo 
    "Empfänger konnte aus Datenbank nicht ausgelesen werden.<br> Bitte erneut versuchen.";
    }
    else 
    {
    echo 
    "<br>Erfolgreich versandt!<br>";
    }
    }
    }
    $header "MIME-Version: 1.0\n"
    $from
    $cc
    $mail_header
    $content_type
    $encoding;

    mail($cc,$betreff,$msg,$header);
    echo 
    "<br />Erfolgreich versandt!";
    };
    }
    ?>
    <html>
    <head>
    <title>Newsletter</title>
    <script language="JavaScript">
    <!--
    function textCounter(field, countfield) 

    countfield.value = field.value.length;

    -->
    </script>
    </head>
    <body>
    <font face="Arial" size="3" color="#0064C8">BLAblubb.</font>
    <hr noshade style="width:380px; 
    color:orange; height:5px; text-align:left;"><br>
    <form enctype="multipart/form-data" method="post" 
    action="<?$PHP_SELF?>"?>
    <table bgcolor="#f0f0f0" border="1" cellspacing="1" cellpadding="3" rules="groups" >
    <i><font face="Arial" color="#808080" size="2"><strong>Erstellt von</strong></font></i><br>
    <tr><td>User:</td>
    <td> 
    <input type="text" name="erstellt" value="<?php echo $user?>"><br></td>
    <td>Von:</td> 
    <td><input type="text" name="from" value="test@test.de"><br></td>
    <td>Kopie an:</td>
    <td><input type="text" name="cc" value="<?php echo $email?>">
    </td>
    </tr>
    </table>
    <br><br>
    <td>
    <select class="lh" name="content_type" >
    <option value="html">Format: HTML</option>
    <option value="text">Format: Text</option>
    </select><br><br>
    <table bgcolor="#f0f0f0" border="1" cellspacing="1" cellpadding="3" 
    </tr>
    <tr>
    <td>Anrede:<br>
    <input type="text" name="anrede" size="50"></td>
    </tr>
    <tr>
    <td>Betreff:<br>
    <input type="text" name="betreff" size="50"></td>
    </tr>
    </table><br>
    <table bgcolor="#f0f0f0" border="1" cellspacing="1" cellpadding="3" rules="groups" >
    <tr>
    <td>Text für Newsletter:<br>
    <textarea name="msg" rows="15" cols="70"  
    onKeyDown="textCounter(this.form.msg,this.form.Textzaehler);" onKeyUp="textCounter
    (this.form.msg,this.form.Textzaehler);"></textarea>
    <br> 
    <b>Zeichen</b> verwendet: <input type="text" name="Textzaehler" value="0" size="6" readonly> 
    <br><hr>
    Anhang<br>
    <input type="file" size="63" name="datei">
    </td>
    </tr>
    </table>
    <p>
    <input type="submit" name="senden" value="Senden" >
    <input type="reset" value="Zurücksetzen">
    </p>
    </form>
    </body>
    </html>

  • #2
    PHP-Code:
    $header "MIME-Version: 1.0\n"
    $from
    $cc
    $mail_header
    $content_type
    $encoding
    Wenn du encoding als letzten Header anhängst, dann musst du auf jeden Fall \n\n oder \r\n\r\n machen. Der letzte Header MUSS gem rfc mit einem doppelten Zeilenschlag beendet werden. Ich habe auch gesehen, dass du z.T. diese Zeilenschläge. Das gilt auch für Header innerhalb des msg-bodies.
    PHP-Code:
    $datei_content chunk_split(base64_encode($datei_content)); 
    Ausserdem musst du dich bei grossen Dateien achten, dass diese jeweils nach 76 Zeichen pro Zeile umgebrochen werden (wieder rfc für mails)

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Danke, hab deine Vorschläge berücksichtigt.
      Dennnoch bleiben die Probleme bestehen.

      Kommentar


      • #4
        Script läuft jetzt soweit. Nur hab ich noch ein Problem,
        wenn ich die Email per Text versende,
        wird mir immer ein Anhang angezeigt,
        obwohl keiner vorhanden ist. Kann mir jemand da noch helfen.

        PHP-Code:
        $boundary strtoupper(md5(uniqid(time())));
        $mail_header "Content-Type: multipart/mixed; boundary=$boundary\n";
        $mail_header .= "--$boundary\n";
        $content_type "Content-Type: text/plain\n";
        $encoding "Content-Transfer-Encoding: 7bit\n";
        $msg str_replace(chr(10),"",$msg);
        $msg utf8_decode($msg);
        $mail_header .= "$msg\n\n";
        $mail_header .= "--$boundary\n";
        $mail_header .= "--$boundary--\n";

        while (
        $list2 mysql_fetch_array($result2)) 
        {
        $header "MIME-Version: 1.0\n"
        $absend
        $mail_header
        $content_type
        $encoding;
        $empfaenger $list2["Email"];
        mail($empfaenger,$betreff,$msg,$header);

        THX

        Kommentar


        • #5
          Original geschrieben von e-arty
          PHP-Code:
          $mail_header "Content-Type: multipart/mixed; boundary=$boundary\n"
          wenn du nur text/plain verschicken willst - wieso behauptest du dann, es würde sich um eine multipart-mail handeln?
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Wenn man einen Anhang angbit, sollte man sich nicht wundern, dass einer angezeigt wird ....

            z.B. hier: $mail_header = "Content-Type: multipart/mixed; boundary=$boundary\n";

            Ich habe da noch mehr mehr mit $boundary gesehen ...
            h.a.n.d.
            Schmalle

            http://impressed.by
            http://blog.schmalenberger.it



            Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
            ... nur ohne :-)

            Kommentar


            • #7
              Hab das von ner Seite von nem anderen Forum, hab bloss da was überlesen, dass das ja nur für Anhänge gilt

              Kommentar

              Lädt...
              X