2016-08-31 95 views
0
<?php 
include 'include/function.php'; 

//$random_hash = md5(time()); 
$User=new User(); 
session_start(); 

$id=$_POST['id']; 
    //$date=$_POST['date']; 
    $expected_date=$_POST["expected_date"]; 

    $comname=$_POST['comname']; 
    $type=$_POST["type"]; 
    $name=$_POST["name"]; 
    $mime=$_POST["mime"]; 
    $size=$_POST["size"]; 
    $file1=$_POST["path"]; 

    //$comname=$_POST["comname"]; 
    $remark=$_POST["remark"]; 

    $other_detail=$_POST['other_detail']; 
    $remark=$_POST["remark"]; 
    //$last_change_time=$row['last_change_time']; 
    $email1=$_POST['email1']; 
    $email2=$_POST['email2']; 
    $email3=$_POST['email3']; 
    $email4=$_POST['email4']; 



    $email5=$_POST['email5']; 
    $email6=$_POST['email6']; 
    $username=$_SESSION["username"]; 
    //$username=$row['username']; 



$sql=mysql_query("update depository set expected_date='$expected_date',comname='$comname',last_change_username='$username',type='$type',name='$name',mime='$mime',size='$size',path='$file1',other_detail='$other_detail',remark='$remark',email1='$email1',email2='$email2',email3='$email3',email4='$email4',email5='$email5',email6='$email6'where id='$id'"); 






$htmlbody = " Message successfully send ok"; 


//$to .= [email protected]; 
//Recipient Email Address [email protected] 
$to = $email1. ', '; 
$to .= $email3. ', '; 
$to .= $email2. ', '; 
$to .= "[email protected]"; 
$subject = 'Depositiory Detail From Solution Infinite'; //Email Subject 

$headers = "From: [email protected]\r\nReply-To: [email protected]"; 

$random_hash = md5(date('r', time())); 

$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\""; 

$attachment = chunk_split(base64_encode(file_get_contents($file1))); // Set your file path here 

//define the body of the message. 

$message = "--PHP-mixed-$random_hash\r\n"."Content-Type: multipart/alternative; boundary=\"PHP-alt-$random_hash\"\r\n\r\n"; 
$message = "--PHP-alt-$random_hash\r\n"."Content-Type: text/plain; charset=\"iso-8859-1\"\r\n"."Content-Transfer-Encoding: 7bit\r\n\r\n"; 

//Insert the html message. 
$message .= $htmlbody; 
$message .="\r\n\r\n--PHP-alt-$random_hash--\r\n\r\n"; 

//include attachment 
$message .= "--PHP-mixed-$random_hash\r\n"."Content-Type: application/pdf; name=\"$name\"\r\n"."Content-Transfer-Encoding: base64\r\n"."Content-Disposition: attachment\r\n\r\n"; 
$message .= $attachment; 
$message .= "/r/n--PHP-mixed-$random_hash--"; 

//send the email 
$mail = mail($to, $subject , $message, $headers); 

echo $mail ? "Mail sent" : "Mail failed"; 


?> 

當我通過Windows發送電子郵件比發送正常,但是當我在Linux上運行腳本比附件郵件以純文本發送。在Linux中的電子郵件附件中的頭部問題

電子郵件在如下圖所示全文發送:

PHP-mixed 83d06f048e070e4cfc0684d0e98f71db  
Content-Type: application/jpg; name="tkt.jpg"  
Content-Transfer-Encoding: base64  
Content-Disposition: attachment 


/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcG  
BwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwM  
DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAMABVYDASIA  
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA 
+0

使用Linux風格的換行符:'\ n'而不是'\ r \ n',或者使用'PHP_EOL'常量。 – beerwin

+0

將其添加爲答案 – beerwin

回答

1

這是因爲像這樣的情況(跨平臺兼容性)PHP常量PHP_EOL存在。這樣做:

<?php 
    .... 
    $eol = PHP_EOL; 
    $headers = "From: [email protected]".$eol."Reply-To: [email protected]"; 

    $random_hash = md5(date('r', time())); 

    $headers .= $eol."Content-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\""; 

    $attachment = chunk_split(base64_encode(file_get_contents($file1))); // Set your file path here 

    //define the body of the message. 

    $message = "--PHP-mixed-$random_hash".$eol."Content-Type: text/html; charset=\"iso-8859-1\"".$eol."Content-Transfer-Encoding: 7bit".$eol.$eol; 

    //Insert the html message. 
    $message .= $htmlbody.$eol.$eol."--PHP-mixed-$random_hash".$eol; 

    //include attachment 
    $message .= "Content-Type: application/pdf; name=\"$name\"".$eol."Content-Transfer-Encoding: base64".$eol."Content-Disposition: attachment; filename=\"".$name."\"".$eol; 
    $message .= $attachment; 
    $message .= $eol."--PHP-mixed-$random_hash--"; 

    //send the email 
    $mail = mail($to, $subject , $message, $headers); 

    echo $mail ? "Mail sent" : "Mail failed"; 


?> 

編輯:

基於對您的評論的新信息,並再看看代碼,我不知道爲什麼窗戶沒有交付該消息爲HTML。您所指定的內容類型爲text/plain的這裏

$message = "--PHP-alt-$random_hash\r\n"."Content-Type: text/plain; charset=\"iso-8859-1\"\r\nContent-Transfer-Encoding: 7bit\r\n\r\n" 

你應該改變簡單地

$message = "--PHP-alt-$random_hash".$eol."Content-type:text/html; charset=iso-8859-1".$eol."Content-Transfer-Encoding: 7bit".$eol.$eol; 

這應該最有可能解決您的問題。我的主要的回答讓

EDIT 2 檢查變更...

+0

哎呀!似乎我遲到了派對。只要做@beerwin說的。 – kennasoft

+0

電子郵件發送附件正確,但HTML內容沒有發送$ htmlbody值未發送郵件@ beerwin,kennasoft –

+0

是電子郵件發送附件,但問題是$ htmlbody內容未發送電子郵件@kennasoft –

0

使用Linux風格的換行符:\n代替\r\n,或者使用PHP_EOL不變。

+0

而不是調用內部的表格變量--- $ message。= $ htmlbody ;. $ message。= $ comname; 將變量硬編碼到$ message中= Like - $ message。=「Content-Transfer-Encoding:7bit \ n」。 $ htmlbody。 「\ n」。 $ comname。 「\ n」 個;但問題仍然如此 –

0

使用PHP_EOL不變。它根據平臺 替代特定的行尾。

注:的mysql_query被棄用的PHP 5.5.0,它是PHP 7.0.0中刪除。相反,庫MySQLi或PDO_MYSQL擴展應該是used.Alternatives該功能包括:mysqli_query()或PDO ::查詢()

你基本上有兩種選擇來實現這一目標:

1.使用PDO(用於任何支持的數據庫驅動程序):

$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name'); 

$stmt->execute(array('name' => $name)); 

foreach ($stmt as $row) { 
    // do something with $row 
} 

2.使用庫MySQLi(MySQL的):

$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?'); 
$stmt->bind_param('s', $name); 

$stmt->execute(); 

$result = $stmt->get_result(); 
while ($row = $result->fetch_assoc()) { 
    // do something with $row 
} 

請參閱How can I prevent SQL-injection in PHP?