Subversion-Projekte lars-tiefland.content-management

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

<?
        $self=basename($PHP_SELF);
        $DB="verteiler";
        define ("modul_name", "mail_verteiler");
        define ("tool_name", "versenden");
        require_once "../Online-Shop/connect2.php";
        
        if (!isset($user_rechte[mail_verteiler][versenden][html]))
        {
                header("Location: mailVerteilerSelect.php");
        }

        function attachments($splitter)
        {
                $buffer = array();
                foreach(array_keys($_FILES["attach"]["error"]) as $fileIndex => $errorCode)
                {
                        if ($_FILES["attach"]["error"][$fileIndex] == 0)
                        {
                                $buffer[] = implode("\n", array
                                                                (
                                                                        "--".$splitter,
                                                                        "Content-Type: ".$_FILES["attach"]["type"][$fileIndex].";",
                                                                        "\tname=\"".$_FILES["attach"]["name"][$fileIndex]."\"",
                                                                        "Content-Transfer-Encoding: base64",
                                                                        "Content-Disposition: attachment;",
                                                                        "\tfilename=\"".$_FILES["attach"]["name"][$fileIndex]."\"",
                                                                        "",
                                                                        chunk_split(base64_encode(file_get_contents($_FILES["attach"]["tmp_name"][$fileIndex]))),
                                                                        ""                                                                      
                                                                ));
                        }
                }
                return
                        implode("\n",$buffer);
        }

        if ($action)
        {
        
                $query="SELECT * FROM Verteiler where ID = $Verteiler_NR";
                $result_Verteiler = mysql_query ($query) or die (mysql_errno().": ".mysql_error()."<hr>$query<hr>");
                $Verteiler=mysql_fetch_array($result_Verteiler);

                $headers["From"]="From: $Verteiler[Absender]";
                //$headers["CC"]="";
                //$headers["BCC"]="";

                unset($text);

/* ############################################################################################ */
/* Nachricht zusammenstellen                                                                                                                                    */
/* ############################################################################################ */
                        /* boundary für diese Nachricht festlegen */
                                /* INIT $boundary */
                                srand ((double)microtime()*1000000);
                                $boundary="";
                                for ($a=0; $a <= 15; $a++) { $boundary=$boundary.sprintf("%02X",rand(0,255));}
                                $boundary="=_".$boundary;
                        /* boundary für diese Nachricht festlegen */


                        /* Headers erweitern */
                                $headers["MIME-Version"]        =       "MIME-Version: 1.0";
                                $headers["Content-Type"]        =       "Content-Type: multipart/alternative;";
                                $headers["boundary"]            =       chr(9)."boundary=\"".$boundary."\"";

                                $CONTENT_HEADERS=array
                                (
                                        "PLAIN" => array
                                                                (
                                                                        "--".$boundary,
                                                                        "Content-Type: text/plain; charset=\"ISO-8859-1\"",
                                                                        "Content-Transfer-Encoding: 7bit",
                                                                        "",
                                                                        ""
                                                                ),
                                        "HTML" => array
                                                                (
                                                                        "",
                                                                        "--".$boundary,
                                                                        "Content-Type: text/html; charset=\"ISO-8859-1\"",
                                                                        "Content-Transfer-Encoding: quoted-printable",
                                                                        "",
                                                                        ""
                                                                )
                                );

                        /* LOGOUT-LINK an eingegebene Nachrichten anhängen */
                                if (isset($web_rechte[mail_verteiler][verteiler][logout_link]))
                                        {
                                                $message[PLAIN]=$message[PLAIN]."\n\n[logout_link]";
                                                $message[HTML]=stripslashes(preg_replace ("/=/", "=3D", $message[HTML]."<br><br><a href=\"[logout_link]\">Newsletter abbestellen</a>"));
                                        }
                                else
                                        {
                                                $message[PLAIN]=$message[PLAIN];
                                                $message[HTML]=stripslashes(preg_replace ("/=/", "=3D", $message[HTML]));
                                        }

                                foreach(array_keys($CONTENT_HEADERS) as $elem)
                                {
                                        $message[$elem]=join($CONTENT_HEADERS[$elem],"\n").$message[$elem];
                                }

                                $message[]=attachments($boundary);

                                $text=join($message,"\n")."\n--".$boundary."--\n";
                                
/* ############################################################################################ */
/* Nachricht zusammenstellen ENDE                                                                                                                               */
/* ############################################################################################ */

                // Aus dem Textfeld ein tolles Array machen!
                $To=preg_replace("/[\n]/", "", $To);
                $To = explode("|",$To);
                // Den letzten Wert killen
                unset($To[count($To) - 1]);
                
                $grundfunktionen = explode(";", $web_rechte[mail_verteiler][versenden][grundfunktionen]);
                $i = 0;
                foreach ($To as $key => $value) {
                        // Semikolon anhängen, zum besseren arbeiten
                        $value .= ";";
                        // Mail ist immer zuerst
                        $To_array[$i][E_Mail] = substr($value, 0, strpos($value, ";"));
                        // Für jede Grundfunktion
                        foreach($grundfunktionen as $key2 => $value2) {
                                // Erst den vorherigen wert abschneiden (bis einschließlich ";")
                                $value = strstr($value, ";");
                                $value = substr($value, 1);
                                // Der key ist gleich dem value von $grundfunktionen und value ist der wert bis zum ersten ";"
                                $To_array[$i][$value2] = substr($value, 0, strpos($value, ";"));
                        }
                        $i++;
                }
                                
                $To = $To_array;
                foreach($To as $value)
                {
                        $logout_link = $web_rechte[mail_verteiler][verteiler][logout_link]."?m=".$value[E_Mail]."&v=".$Verteiler[ID];

                        $text2=preg_replace
                        (
                                "/\[logout_link\]/",
                                stripslashes
                                (
                                        preg_replace
                                        (
                                                "/=/",
                                                "=3D",
                                                $logout_link
                                        )
                                ),
                                $text
                        );
                        // Mails verschicken wird überbewertet!
                        //mail($mailadresse, $Verteiler[Betreff], $text2, implode("\n",$headers));
                        
                                // In den Mailspool packen
                                
                                // Aber vorher den Text ($text2) parsen
                                /*
                                        Was zu parsen ist steht ja in den Grundfunktionen. Zum Beispiel 'Name1' und 'ID'. In $to stehen ja die Werte dafür.
                                        'E_Mail' steht immer an erster Stelle, hat also den Platzhalter #1#. Die weiteren zu parsenden Sachen stehen in
                                        $grundfunktionen. Angefangen mit 0. Aber der erste nach 'E_Mail' startet mit 2. Also in der Schleife unten immer
                                        +2 nehmen
                                */
                                $grundfunktionen = explode(";", $web_rechte[mail_verteiler][versenden][grundfunktionen]);
                                $subst = $value[E_Mail];
                                $text2 = str_replace("<in1in>", $subst, $text2);
                                $text2 = str_replace("##1##", $subst, $text2);
                                foreach($grundfunktionen as $key2 => $value2) {
                                        $subst = $value[$value2];
                                        $i = $key2 + 2;
                                        $text2 = str_replace("##$i##", $subst, $text2);
                                }
                        
                                $mail[webs_ID] = $webs[ID];
                                $mail[to] = $value[E_Mail];
                                $mail[cc] = '';
                                $mail[bcc] = '';
                                $mail[subject] = $Verteiler[Betreff];
                                $mail[from] = $Verteiler[Absender];
                                $mail[header_add] = implode("\n",$headers);
                                $mail[text] = $text2;
                                $mail[takeoff] = date("Y-m-d H:i:s"); // Takeoff ist immer NOW (Format: "2005-10-20 13:17:23"
                                $mail[erstellt_von] = $PHP_AUTH_USER;

                                $query_spool = "USE content_management";
                                $result = mysql_query ($query_spool, $localhost_dbh) or die (mysql_errno().": ".mysql_error()."<hr>$query_spool<hr>");

                                $query_spool = "
                                        INSERT INTO 
                                                `mailspool_out`
                                        ( 
                                                `ID` , 
                                                `webs_ID` , 
                                                `to` , 
                                                `cc` , 
                                                `bcc` , 
                                                `subject` , 
                                                `from` , 
                                                `header_add` , 
                                                `text` , 
                                                `takeoff` , 
                                                `erstellt_am` , 
                                                `erstellt_von` 
                                        ) 
                                        VALUES 
                                        (
                                                '', 
                                                '".($mail[webs_ID])."',
                                                '".($mail[to])."', 
                                                '".($mail[cc])."' , 
                                                '".($mail[bcc])."' , 
                                                '".($mail[subject])."', 
                                                '".($mail[from])."', 
                                                '".($mail[header_add])."', 
                                                '".($mail[text])."', 
                                                '".($mail[takeoff])."', 
                                                NOW(), 
                                                '".($mail[erstellt_von])."'
                                        )
                                ";
                                $result = mysql_query ($query_spool, $localhost_dbh) or die (mysql_errno().": ".mysql_error()."<hr>$query_spool<hr>");
                }
                header("Location: mailsent.php?count=".count($To));
        } // end of if ($action)

        $Verteiler=array();
        $result = mysql_query ("SELECT * FROM Verteiler order by name") or die (mysql_errno().": ".mysql_error());
        while($zeile=mysql_fetch_array($result))
        {
                $Verteiler[$zeile[ID]]=$zeile;
        }
        
        if (!$Verteiler_NR)
        {
                $Verteiler_NR = array_keys($Verteiler);
                $Verteiler_NR = $Verteiler_NR[0];
        }
?>
<html>
<head>
<title>Mail versenden</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="author" content="Webagentur Niewerth - www.weban.de">
<meta name="revisit-after" content="30 days">
<meta name="language" content="deutsch, de">
<meta name="distribution" content="global">
<meta name="robots" content="all">
<link rel=stylesheet type="text/css" href="../buttons.css">
<style type="text/css">
<!--
a {  color: #<? echo $webs[font_color_rechts] ?>}
-->
</style>
<script type="text/javascript">
   _editor_url = "../htmlarea/";
   _editor_lang = "de";
</script>
<script type="text/javascript" src="../htmlarea/htmlarea.js"></script>
</head>

<body bgcolor="#<? echo $webs[bgcolor_seite] ?>" leftmargin="20" topmargin="10" marginwidth="20" marginheight="10" text="#<? echo $webs[font_color_rechts] ?>">
<form method="post" action="#" enctype="multipart/form-data">
  <table width="800" border="1" cellspacing="0" cellpadding="3" bordercolorlight="#FFFFFF" bordercolordark="#999999">
    <tr> 
      <td bgcolor="#<? echo $webs[bgcolor_links] ?>" class="headline" colspan="2">Verteiler 
        senden: <input type="hidden" name="Verteiler_NR" value="<?=$_REQUEST[Verteiler_NR];?>"></td>
    </tr>
    <tr>
      <td bgcolor="#<? echo $webs[bgcolor_links] ?>" class="headline" width="20%" valign="top">An:</td>
      <td bgcolor="#<? echo $webs[bgcolor_rechts] ?>">
          <?
                $to=array();
                //Jenachdem was im Redaktionssystem angegeben ist, werden mehr Infos geholt und später mit in $to gepackt
                $grundfunktionen = explode(";", $web_rechte[mail_verteiler][versenden][grundfunktionen]);
                $zusatzfelder = '';
                foreach($grundfunktionen as $value){
                if ($value)
                {
                        $zusatzfelder .= ", $value";
                }
                }
                $query="
                        SELECT DISTINCT
                                Logins.E_Mail,
                                MD5(Logins.E_Mail) as MD5
                                $zusatzfelder
                        FROM
                                Logins,
                                Logins_to_Verteiler
                        WHERE
                                Logins.ID = Logins_to_Verteiler.Logins
                        AND
                                Logins_to_Verteiler.Verteiler = '".$_REQUEST[Verteiler_NR]."'
                        ORDER BY
                                ID
                ";
                $result = mysql_query ($query) or die (mysql_errno().": ".mysql_error()."<hr>$query<hr>");
                $count = mysql_num_rows($result);
                // Userdaten werden ins Array $to gepackt
                while ($zeile=mysql_fetch_assoc($result)) 
                {
                        if (preg_match("/^[A-Za-z0-9-_.+]+\@[A-Za-z0-9-_.+]+\.[A-Za-z]+$/", $zeile[E_Mail]) > 0)
                        {
                                $to[$zeile[MD5]][E_Mail]=$zeile[E_Mail];
                                //Jenachdem was im Redaktionssystem angegeben ist, werden mehr Infos geholt und später mit in $to gepackt
                                foreach($grundfunktionen as $value) {
                                        $to[$zeile[MD5]][$value]=$zeile[$value];
                                }
                        }
                }
          ?>
          <textarea name="To" cols="100" rows="10"><? 
                foreach($to as $key => $value) { 
                        $ausgabe = '';
                        foreach($value as $key2 => $value2) { 
                        if ($value2)
                        {
                                $ausgabe .= "$value2;";
                        }
                        }
                        $ausgabe = substr($ausgabe, 0, strlen($ausgabe) - 1) . "|\n";
                        echo $ausgabe; 
                } 
          
          ?></textarea>
          <br>
          Anzahl der ausgelesenen Empf&auml;nger:         <?=count($to);?>
          </td>
    </tr>
    <tr> 
      <td bgcolor="#<? echo $webs[bgcolor_links] ?>" class="headline" width="20%" valign="top">Absender:</td>
      <td bgcolor="#<? echo $webs[bgcolor_rechts] ?>"><? echo nl2br($Verteiler[$Verteiler_NR][Absender]) ?></td>
    </tr>
    <tr> 
      <td bgcolor="#<? echo $webs[bgcolor_links] ?>" class="headline" width="20%" valign="top">Betreff:</td>
      <td bgcolor="#<? echo $webs[bgcolor_rechts] ?>"><? echo nl2br($Verteiler[$Verteiler_NR][Betreff]) ?></td>
    </tr>
<?      if (!isset($web_rechte[mail_verteiler][versenden][html]))
        {
?>
    <tr> 
      <td bgcolor="#<? echo $webs[bgcolor_links] ?>" class="headline" width="20%" valign="top">Begr&uuml;ssung:</td>
      <td bgcolor="#<? echo $webs[bgcolor_rechts] ?>"><? echo nl2br($Verteiler[$Verteiler_NR][Begruessung]) ?></td>
    </tr>
<?
        }
?>
    <tr> 
      <td bgcolor="#<? echo $webs[bgcolor_links] ?>" class="headline" width="20%" valign="top">Text: 
        (Plain) </td>
      <td bgcolor="#<? echo $webs[bgcolor_rechts] ?>"> 
        <textarea name="message[PLAIN]" cols="100" rows="10" wrap="OFF"></textarea>
      </td>
    </tr>
        <tr> 
      <td bgcolor="#<? echo $webs[bgcolor_links] ?>" class="headline" width="20%" valign="top">Text: 
        (HTML) </td>
      <td bgcolor="#<? echo $webs[bgcolor_rechts] ?>"> 
        <textarea id=messageHTML name="message[HTML]" cols="200" rows="10" wrap="OFF"><?
        if ($Verteiler[$_GET[Verteiler_NR]][Template_URL])
        {
                echo $Verteiler[$Verteiler_NR][Begruessung];
                readfile($Verteiler[$_GET[Verteiler_NR]][Template_URL]);
                echo $Verteiler[$Verteiler_NR][Schlusstext];
        }
                ?></textarea>
<script type="text/javascript">
        var config = new HTMLArea.Config();
        with (config)
        {
                width = '650';
                height = '500';
                statusBar=false;
                toolbar = 
                [
                        [
                                "fontname", "space", "fontsize", "space", "formatblock", "space",
                                "bold", "italic", "underline", "separator",
                                "strikethrough", "subscript", "superscript", "separator",
                                "copy", "cut", "paste", "separator", "undo", "redo"
                        ],
                        [
                                "justifyleft", "justifycenter", "justifyright", "justifyfull", "separator",
                                "insertorderedlist", "insertunorderedlist", "outdent", "indent", "separator",
                                "forecolor", "hilitecolor", "textindicator", "separator",
                                "inserthorizontalrule", "createlink", "insertimage", "htmlmode"
                        ]
                ];
        }
        HTMLArea.replace("messageHTML",config);
</script>
      </td>
    </tr>
<?      if (!isset($web_rechte[mail_verteiler][versenden][html]))
        {
?>
    <tr> 
      <td bgcolor="#<? echo $webs[bgcolor_links] ?>" class="headline" width="20%" valign="top">Schlusstext:</td>
      <td bgcolor="#<? echo $webs[bgcolor_rechts] ?>"><? echo nl2br($Verteiler[$Verteiler_NR][Schlusstext]) ?></td>
    </tr>
<?
        }
?>
<script language="javascript">
function addAttach()
{
        source=document.getElementById("attachment")
        clone=source.cloneNode(true);
        clone.removeAttribute("id");
        
        source.parentNode.appendChild(clone);
}

function removeAttach(obj)
{
        div = obj.parentNode;
        td = obj.parentNode.parentNode;
        
        if (!div.id) 
        {
                td.removeChild(div);
        }
}
</script>
    <tr> 
      <td bgcolor="#<? echo $webs[bgcolor_links] ?>" class="headline" valign="top" width="20%">Attachments:</td>
      <td bgcolor="#<? echo $webs[bgcolor_rechts] ?>"> 
                <div id="attachment">
                        <input type="file" name="attach[]">
                        <input type="button" value="Add" onClick="addAttach()">
                        <input type="button" value="Remove" onClick="removeAttach(this)">
                </div>
      </td>
    </tr>
    <tr align="right"> 
      <td bgcolor="#<? echo $webs[bgcolor_links] ?>" class="headline" colspan="2"> 
        <input type="submit" name="action" value="Abschicken">
        <input type="reset" value="Zur&uuml;cksetzen">
      </td>
    </tr>
  </table>
</form>
</body>
</html>