我的php文件通過image/png數據並需要附加到電子郵件併發送所述電子郵件。將從數據創建的圖像附加到電子郵件併發送test.php文件中的作品但不在我的主對象函數中的代碼。哪裏不對?
下面是一個測試文件工作代碼:
<?php
include("include.php");
$subject = "Laptop Collection " . date("Y");
//create a boundary string
$random_hash = md5(date('r', time()));
//define the headers we want passed
$headers[] = "From: Do Not Reply <[email protected]>";
//add boundary string and mime type specification
$headers[] = "Content-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
ob_start();
$image = "data:image/png;base64,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";
$imgPng = imageCreateFromPng($image);
imageAlphaBlending($imgPng, true);
imageSaveAlpha($imgPng, true);
header("Content-type: image/png");
imagePng($imgPng);
$i = ob_get_contents();
$attachment = chunk_split(base64_encode($i));
// clear the buffer, but don't destroy it
ob_clean();
// Define Body
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
This is the information for laptop problems. Your signature is attached to this e-mail.
--PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
<h2>Hello World!</h2>
<p>This is something with <b>HTML</b> formatting.</p>
<img src="cid:signature.png" />
--PHP-alt-<?php echo $random_hash; ?>--
--PHP-mixed-<?php echo $random_hash; ?>
Content-Type: application/zip; name="signature.png"
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
$message = ob_get_clean();
$mail = new \helpdesk\core\mail("[email protected]", $subject, $message);
$mail->setHeaders($headers);
$mail->send();
unset($mail);
?>
這裏是我的HD(服務檯)對象的函數被調用我的代碼。它從test.php複製並粘貼。我甚至將圖像數據設置爲同一個字符串,它在test.php中效果很好,但通過發送所有多部分php內容的純文本失敗。
public static function createWorkflowData($signatureData, $signatureImage, $reviewData){
//print_r($signatureData);
// print_r($signatureImage);
//print_r($reviewData);
//exit;
$stages = $_SESSION['student']->workflow->getAllStages();
$updateAssignment = array();
$assignmentID = "";
$workflowID = null;
$mysqli = \helpdesk\db\DB::connect();
$stmt = $mysqli->prepare("INSERT INTO `check_workflow_data`
(`workflowID`, `key`, `section`, `questionDate`, `answer`, `checkIn`, `WO`, `internalWO`)
VALUES (?,?,?,?,?,?,?,?)");
foreach($stages as $stage){
// Skip main stages
if($stage->getSection() == "main")
continue;
// Create Workflow in DB if it is the 1st one
if($stage->getAssignmentGroup() != $assignmentID){
$assignmentID = $stage->getAssignmentGroup();
$workflowID = \helpdesk\db\hd::createWorkflow($assignmentID, $signatureData);
}
//Create Any WO's
if($stage->getPreparedWO() != null){
$stage->setWOID(\helpdesk\db\hd::createWO($stage->getPreparedWO()));
}
if($stage->getPreparedInternalWO() != null){
$stage->setInternalWOID(\helpdesk\db\hd::createInternalWO($stage->getPreparedInternalWO()));
}
$key = $stage->getKey();
$section = $stage->getSection();
$questionDate = (($stage->getAnswerTime())?$stage->getAnswerTime():time());
$answer = (($stage->getAnswer())?$stage->getAnswer():"Not Answered");
$checkIn = (($stage->getAnswerCheckIn()=="true")?1:0);
$WO = $stage->getWOID();
$internalWO = $stage->getInternalWOID();
$stmt->bind_param("issisiss",$workflowID, $key, $section, $questionDate,$answer,$checkIn,$WO,$internalWO);
$stmt->execute();
if($stmt->error != ""){
printf("Error: %s.\n", $stmt->error);
}
if(($CheckIn = $stage->getAnswerCheckIn()) != null){
if($CheckIn == "true"){
//echo "Will update ".$assignmentID." by setting ".$stage->getSection()." to 1";
$updateAssignment[$assignmentID][$stage->getSection()] = 1;
}else if($CheckIn == "false"){
$updateAssignment[$assignmentID][$stage->getSection()] = 0;
}
}
//Prepare this item for this assignment for turn in
}
foreach($updateAssignment as $assignmentID => $assignmentUpdate){
\helpdesk\db\hd::updateAssignment($assignmentID, $assignmentUpdate);
}
$stmt->close();
$subject = "Laptop Collection " . date("Y");
//create a boundary string
$random_hash = md5(date('r', time()));
//define the headers we want passed
$headers[] = "From: Do Not Reply <[email protected]>";
//add boundary string and mime type specification
$headers[] = "Content-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
ob_start();
$image = $signatureImage;
$imgPng = imageCreateFromPng($image);
imageAlphaBlending($imgPng, true);
imageSaveAlpha($imgPng, true);
header("Content-type: image/png");
imagePng($imgPng);
$i = ob_get_contents();
$attachment = chunk_split(base64_encode($i));
// clear the buffer, but don't destroy it
ob_clean();
// Define Body
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
This is the information for laptop problems. Your signature is attached to this e-mail.
--PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
<h2>Hello World!</h2>
<p>This is something with <b>HTML</b> formatting.</p>
<img src="cid:signature.png" />
--PHP-alt-<?php echo $random_hash; ?>--
--PHP-mixed-<?php echo $random_hash; ?>
Content-Type: application/zip; name="signature.png"
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
$message = ob_get_clean();
$mail = new \helpdesk\core\mail("[email protected]", $subject, $message);
$mail->setHeaders($headers);
$mail->send();
unset($mail);
}
有人能告訴我我在做什麼錯嗎?
爲什麼在括號中有'$ headers []'?我以前從來沒有見過這樣的事,或者有什麼我不知道的?我經常看到(如果有多個)'$ headers =''$ headers。='(第二個等等,需要一個DOT)。只是說。 –
對不起。郵件對象的setHeaders函數實際上在標題數組上實現了一個implode「\ r \ n」。這只是爲了使它更清潔。我在某處讀過它並喜歡它。 – Bil1
嗯,有趣。 –