我有一個問題,使用DOMPDF
庫來生成PDF,並在同一時間通過郵件發送。如何生成並通過電子郵件發送與DOMPDF同時生成的PDF?
我需要的是,當你點擊html中的一個按鈕時,就會生成並同時發送pdf文件;到目前爲止,只發送給我一個已經生成pdf的郵件,但我需要生成併發送pdf。 首先在數據庫中收集數據,然後使用數據庫中的最新記錄生成pdf。
我希望有人能幫助我。
謝謝
注:不使用框架
我有一個問題,使用DOMPDF
庫來生成PDF,並在同一時間通過郵件發送。如何生成並通過電子郵件發送與DOMPDF同時生成的PDF?
我需要的是,當你點擊html中的一個按鈕時,就會生成並同時發送pdf文件;到目前爲止,只發送給我一個已經生成pdf的郵件,但我需要生成併發送pdf。 首先在數據庫中收集數據,然後使用數據庫中的最新記錄生成pdf。
我希望有人能幫助我。
謝謝
注:不使用框架
你可以選擇使用內置的PHP的SMTP功能或使用庫如PHPMailer的(沒有框架)
生成PDF後,將其保存在服務器上的某個位置,按住PDF文件的完整路徑並調用郵件腳本以發送帶有附件的郵件(附件爲PDF)
使用PHP郵件程序可能看起來像這個:
$mail = new PHPMailer;
$mail->addAddress('[email protected]');
$mail->addAttachment('/path/to/your/file.pdf', 'name as shown in the email.pdf');
$mail->send();
當然,你必須配置你的郵件與主機從它將被髮送,驗證等等......但這不是你要求的。
只需更換/path/to/your/file.pdf
與任何路徑是+ PDF文件的文件名(在服務器上),並與你想要的郵件的接收者看到的名稱替換name as shown in the email.pdf
,例如「invoice.pdf」
試試這個
<?php
define('DBHOST','localhost');
define('DBNAME','user');
define('DBUSER','root');
define('PASS','');
$dbh = new PDO('mysql:host='.DBHOST.';dbname='.DBNAME,DBUSER,PASS);
$q_sel="SELECT name,email from user_details";
$stmt_query=$dbh->prepare($q_sel);
$user_detail_exe=$stmt_query->execute();
$user_details=$stmt_query->fetchAll();
?>
<html>
<head>
<title>
Send Email Generating Dompdf
</title>
</head>
<body>
<form action="send_email.php">
<input type="submit" value="EMAIL" />
<table style="width:100%" border="1">
<tr>
<th>Name</th>
<th>Email</th>
</tr>
<?php
foreach ($user_details as $user_detail)
{
?>
<tr>
<td><?php echo $user_detail['name'];?></td>
<td><?php echo $user_detail['email'];?></td>
</tr>
<?php
}
?>
</table>
</form>
</body>
</html>
send_email.php
<?php
$name='user_detaiil.pdf';
require_once 'dompdf/dompdf_config.inc.php';
require_once 'Swift/lib/swift_required.php';
define('DBHOST','localhost');
define('DBNAME','user');
define('DBUSER','root');
define('PASS','');
$dbh = new PDO('mysql:host='.DBHOST.';dbname='.DBNAME,DBUSER,PASS);
$q_sel="SELECT name,email from user_details";
$stmt_query=$dbh->prepare($q_sel);
$user_detail_exe=$stmt_query->execute();
$user_details=$stmt_query->fetchAll();
$pdf_data='<html>
<body>
<table style="width:100%" border="1">
<tr>
<th>Name</th>
<th>Email</th>
</tr>';
foreach ($user_details as $user_detail)
{
$pdf_data.='<tr>
<td>'.$user_detail['name'].'</td>
<td>'.$user_detail['email'].'</td>
</tr>';
}
$pdf_data.='</table>
</body>
</html>';
$dompdf=new DOMPDF();
$dompdf->load_html($pdf_data);
$dompdf->render();
$canvas =$dompdf->get_canvas();
$date = date("d/m/Y");
$canvas->page_text(10, 770,"Date: $date" , $font, 12);
$canvas->page_text(520, 770, "Page: {PAGE_NUM}", $font, 12);
$output = $dompdf->output();
$file_to_save = 'reports/user_detail.pdf';
file_put_contents($file_to_save, $output);
//$dompdf->stream($name);
ob_start();
$HasFunctions = true;
$SendsMail = true;
$message = Swift_Message::newInstance()
->setSubject('User Detail Report')
->setFrom(array('[email protected]'))
->setTo(array('[email protected]'))
->setBody($messagetext, 'text/html');
$message->attach(Swift_Attachment::fromPath("reports/user_detail.pdf"));
$transport = Swift_SmtpTransport::newInstance("smtp.fake.com", 25)
->setUsername("Username")
->setPassword("Password");
$mailer = Swift_Mailer::newInstance($transport);
$result = $mailer->send($message);
unlink("reports/user_detail.pdf");
if($result)
{
header("LOCATION:dompdf.php");
}
?>