Torsten: SMTP Anlagenerweiterung

Beitrag lesen

Ich habe bereits ein SMTP versendescript
was ich nun nicht mehr hinbekomme ist,
das dieses auch eine fest vorgegebene Dateianlage mitversendet.

Jemand eine Idee?

<?php
$title="";
$url="";
$to="";
$answer_subject="Betreff";
$admin_mail="";
$smtp_host ='';
$smtp_username = '';
$smtp_password = '';

$user_become_an_mail=false;

echo "<html>\n";
echo "<head>\n";
echo "<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\n";
echo "<title>$title</title>\n";
echo "</head>\n";
echo "<body>\n";

function retour($url)
{
 echo "<meta http-equiv="refresh" content="1; URL=$url">";
}

if (!isset($_POST['send']))
{
  die("No direct call.");
}

if ((empty($_POST['name'])) or
    (empty($_POST['email'])) or
    (empty($_POST['subject'])) or
    //(empty($_POST['mail_to'])) or
    (empty($_POST['message'])) )
{
   echo "<a href="javascript:history.back()">back</a>";
   die('<br>Please fill out all fields.');
}
if (!ereg("^([a-zA-Z0-9.\_-]+)@([a-zA-Z0-9.-]+.[A-Za-z][A-Za-z]+)$",$_POST['email']))
  die ('wrong email');

$subject=$_POST['subject'];
$message= '<html><body><br>Begin off message:<br>Name: '.$_POST['name'].'<br>'.
         'Message: '.str_replace("\n", "<br>",$_POST['message']).'<br>'.
         'Email-from: '.$_POST['email'].'<br>'.
         'Copyright (c) from <a href="http://cdr.dpaehl.de">Dirk Paehl.</a></body><html>';

$from="$_POST[name] <$_POST[email]>";
$headers ="Return-Path: $_POST[name] <$_POST[email]>\r\n";
$headers.="From: $from\nX-Mailer: SMTP FORMULAR MAILER from Dirk Paehl\r\n";
$headers .="Mime-Version: 1.0\r\n";
$headers .="Content-type: text/html; charset=iso-8859-1\r\n";

define('SMTP_INCLUDED', 1);
function server_parse($socket, $response)
{
    $server_response = '';
    while ( substr($server_response,3,1) != ' ' )
    {
        if( !( $server_response = fgets($socket, 256) ) )
        {
           die("Couldn't get mail server response codes");
        }
    }

if( !( substr($server_response, 0, 3) == $response ) )
    {
        die("Ran into problems sending Mail. Response: $server_response");
    }
}

function smtpmail($mail_to, $subject, $message, $headers = "")
{
 global $smtp_host, $smtp_username, $smtp_password, $admin_email;

$message = preg_replace("/(?<!\r)\n/si", "\r\n", $message);
    /*echo "SMTP_HOST".$smtp_host;
    echo "<br>\nSMTP_USER".$smtp_user;
    echo "<br>\nSMTP_PW".$smtp_password;
    echo "<br>\nADMIN".$admin_email; */

if ($headers != "")
 {
  if(is_array($headers))
  {
   if(sizeof($headers) > 1)
   {
    $headers = join("\r\n", $headers);
   }
   else
   {
    $headers = $headers[0];
   }
  }
  $headers = chop($headers);

//
  // Make sure there are no bare linefeeds in the headers
  //
  $headers = preg_replace("/(?<!\r)\n/si", "\r\n", $headers);
  //
  // Ok this is rather confusing all things considered,
  // but we have to grab bcc and cc headers and treat them differently
  // Something we really didn't take into consideration originally
  //
  $header_array = explode("\r\n", $headers);
  @reset($header_array);
  $headers = "";
  $cc = '';
  $bcc = '';
  while( list(, $header) = each($header_array) )
  {
   if( preg_match("/^cc:/si", $header) )
   {
    $cc = preg_replace("/^cc:(.*)/si", "\1", $header);
   }
   else if( preg_match("/^bcc:/si", $header ))
   {
    $bcc = preg_replace("/^bcc:(.*)/si", "\1", $header);
    $header = "";
   }
   $headers .= $header . "\r\n";
  }
  $headers = chop($headers);
  $cc = explode(",", $cc);
  $bcc = explode(",", $bcc);
 }

if(trim($mail_to) == "")
 {
  exit();
 }
 if(trim($subject) == "")
 {
  die("No email Subject specified");
 }

$mail_to_array = explode(",", $mail_to);

if( !$socket = fsockopen($smtp_host, 8010, $errno, $errstr, 20) )
 {
  die("Could not connect to smtp host : $errno : $errstr");
 }
 server_parse($socket, "220");

if( !empty($smtp_username) && !empty($smtp_password) )
 {
  fputs($socket, "EHLO " . $smtp_host . "\r\n");
  server_parse($socket, "250");

fputs($socket, "AUTH LOGIN\r\n");
  server_parse($socket, "334");
  fputs($socket, base64_encode($smtp_username) . "\r\n");
  server_parse($socket, "334");
  fputs($socket, base64_encode($smtp_password) . "\r\n");
  server_parse($socket, "235");
 }
 else
 {
  fputs($socket, "HELO " . $smtp_host . "\r\n");
  server_parse($socket, "250");
 }

fputs($socket, "MAIL FROM: <" . $admin_email . ">\r\n");
 server_parse($socket, "250");

$to_header = "To: ";
 @reset( $mail_to_array );
 while( list( , $mail_to_address ) = each( $mail_to_array ))
 {
  $mail_to_address = trim($mail_to_address);
  if ( preg_match('/[^ ]+@[^ ]+/', $mail_to_address) )
  {
   fputs( $socket, "RCPT TO: <$mail_to_address>\r\n" );
   server_parse( $socket, "250" );
  }
  $to_header .= "<$mail_to_address>, ";
 }
 @reset( $bcc );
 while( list( , $bcc_address ) = each( $bcc ))
 {
  $bcc_address = trim( $bcc_address );
  if ( preg_match('/[^ ]+@[^ ]+/', $bcc_address) )
  {
   fputs( $socket, "RCPT TO: <$bcc_address>\r\n" );
   server_parse( $socket, "250" );
  }
 }
 @reset( $cc );
 while( list( , $cc_address ) = each( $cc ))
 {
  $cc_address = trim( $cc_address );
  if ( preg_match('/[^ ]+@[^ ]+/', $cc_address) )
  {
   fputs($socket, "RCPT TO: <$cc_address>\r\n");
   server_parse($socket, "250");
  }
 }
 // Ok now we tell the server we are ready to start sending data
 fputs($socket, "DATA\r\n");

// This is the last response code we look for until the end of the message.
 server_parse($socket, "354");

// Send the Subject Line...
 fputs($socket, "Subject: $subject\r\n");

// Now the To Header.
 fputs($socket, "$to_header\r\n");

// Now any custom headers....
 fputs($socket, "$headers\r\n\r\n");

// Ok now we are ready for the message...
 fputs($socket, "$message\r\n");

// Ok the all the ingredients are mixed in let's cook this puppy...
 fputs($socket, ".\r\n");
 server_parse($socket, "250");

// Now tell the server we are done and close the socket...
 fputs($socket, "QUIT\r\n");
 fclose($socket);

return TRUE;
}

$result = @smtpmail($to,$subject,$message,$headers);
if ($result)
{
    echo ('mail was succesfully send.<br>');

if ($user_become_an_mail)
    {
       $datei = fopen( "php_mail.dat", "r" );
       $bestatigung = fread( $datei, filesize( "php_mail.dat" ) );
       fclose( $datei );
       $bestatigung=ereg_replace("%meldung%",$_POST['message'],$bestatigung);

$from="<$admin_mail>";
      $headers ="From: $from\nX-Mailer: SMTP FORMULAR MAILER from Dirk Paehl\r\n";

$body ="\n\n";

smtpmail($_POST[email],$answer_subject,$bestatigung,$headers);
   }
 }
else
echo ('Error can not send mail. try again later<br>');

retour($url);
?>
 </body>
</html>