странный текст в почтовом ящике Gmail - вопрос php? - PullRequest
1 голос
/ 17 марта 2012

У меня есть почтовый код, который работал нормально до тех пор, пока через пару дней полученное письмо вместо обычного письма стало кодом для Gmail ... вот так:

--PHP-mixed-a3bf01bb0d28e41880e43720dfc8860d
Content-Type: multipart/alternative; boundary="PHP-alt-a3bf01bb0d28e41880e43720dfc8860d"

--PHP-alt-a3bf01bb0d28e41880e43720dfc8860d
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

       Type here...

--PHP-alt-a3bf01bb0d28e41880e43720dfc8860d
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

<div style="width:900px"><br /><p>
       Type here...</p>

--PHP-alt-a3bf01bb0d28e41880e43720dfc8860d--

--PHP-mixed-a3bf01bb0d28e41880e43720dfc8860d
Content-Type: ; name=""
Content-Transfer-Encoding: base64
Content-Disposition: attachment

--PHP-mixed-a3bf01bb0d28e41880e43720dfc8860d--

любая идея, где начать отслеживать это. Насколько я знаю, я ничего не изменил в коде.

Пустой вопрос, но я понятия не имею, с чего начать ... Любой комментарий будет приветствоваться, и я готов учиться. Спасибо за ваше время ...

update-

Вот код, который производит код выше:

mail.php

<?php 
 function csatlakozas($szerver, $user, $pw)
 { // evvel meg csatlakozom az adatbázishoz, hogy ki tudjam olvasni a címzetteket
 if (!$con = mysql_connect($szerver, $user, $pw))
{
die('Could not connect to SQL DB: ' .mysql_error().'<br/>Try it later AND please report to your system administrator!');
}
};

//belepes a db-be
csatlakozas("localhost","use","pass");
    mysql_select_db("db");

//atveszem a csoport neveket es elszaladok mailozni csoportonkent...
$result=$_POST['to-k'];
$datum=date("Y-m-d");
$subject = $_POST["subject"];
$head="<div style=\"width:900px\"><br />";
$messagetext = $_POST["message"];
$foot="</div>";
$message = $head.$messagetext.$foot;

echo "<p>Original message</p>";
echo $message;

echo "<p>Mass mail has been sending to:</p>";

//kezdodik a csoportok kiolvasasa...
foreach($result as $value)
        { 
    echo "<h3>".$value."</h3>";

    // kiolvasom a cimzetteket az adott kategoriaban
    $sql="SELECT * FROM emails WHERE sendesstat=1 AND deleted=0 AND classhoz=\"".$value."\"";
    //echo $sql;
    $query=mysql_query($sql);

    // kuldjuk az emailokat
    while($data=mysql_fetch_array($query))
        {

        //define the receiver of the email 
        $to = $data["firstname"]." ".$data["surname"]." <".$data["email"].">"; // ******* itt a form adatai
        $from = "my ltd <admin@myweb.co.uk>";  // ******* itt a form adatai
        //create a boundary string. It must be unique 
        //so we use the MD5 algorithm to generate a random hash 
        $random_hash = md5(date('r', time())); 
        //define the headers we want passed. Note that they are separated with \r\n 
        $headers = "From: ".$from."\r\nReply-To: ".$from;  // ******* itt a form adatai 
        //add boundary string and mime type specification 
        $headers .= "\r\nMIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\""; 
        //read the atachment file contents into a string,
        //encode it with MIME base64,
        //and split it into smaller chunks
        // ************************************
        // itt kellett belenyúlni
        // ************************************
        $fname=$_FILES["fileatt"]["name"];
        $filename=$_FILES["fileatt"]["tmp_name"];
        $filetype=$_FILES["fileatt"]["type"];
        $attachment=chunk_split(base64_encode(file_get_contents($filename)));
        // ************************************
        // eddig
        // ************************************
        //define the body of the message. 

        include 'sendmail.php';
        }
        }
?>

sendmail.php:

<?php

 ob_start(); //Turn on output buffering 
?> 
--PHP-mixed-<?php echo $random_hash; ?>  
Content-Type: multipart/alternative; boundary="PHP-alt-<?php echo $random_hash; ?>"

--PHP-alt-<?php echo $random_hash; ?>  
Content-Type: text/plain; charset="iso-8859-1" 
Content-Transfer-Encoding: 7bit

<?php echo strip_tags($message); ?>

--PHP-alt-<?php echo $random_hash; ?>  
Content-Type: text/html; charset="iso-8859-1" 
Content-Transfer-Encoding: 7bit

<?php echo $message; ?>

--PHP-alt-<?php echo $random_hash; ?>-- 

--PHP-mixed-<?php echo $random_hash; ?>  
Content-Type: <?php echo $filetype;?>; name="<?php echo $fname;?>"  
Content-Transfer-Encoding: base64  
Content-Disposition: attachment  

<?php echo $attachment; ?> 
--PHP-mixed-<?php echo $random_hash; ?>-- 

<?php 
//copy current buffer contents into $message variable and delete current output buffer 
$msg = ob_get_clean(); 

//send the email 
//$mail_sent = 0;
$mail_sent = @mail($to, $subject, $msg, $headers, " -f admin@mydomai.co.uk" ); 
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed" 
echo $mail_sent ? "Mail sent to ".$to."<br />" : "Mail failed to ".$to."<br />"; 
?>

Я надеюсь, что есть хорошее решение, так как еще не нашли ничего в Google, что облегчило бы жизнь по этому поводу: (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...