2016-11-21 6 views
0

fpdfを使用してpdfファイルを生成しています。このファイルには見出しと、 postメソッド。このpdfを電子メールに添付して、ユーザーに送信できるようにしたいと考えています。私はこれを行うにはphpMailerを使用するつもりです。私はそれが電子メールに添付することができるようにpdfに名前を付けることが可能であるのだろうかと疑問に思っていますが、pdfはサーバーまたはユーザーのローカルコンピューターに保存されません。pdfファイルをローカルまたはサーバー上に保存せずに電子メールでpdfファイルを生成して送信することは可能ですか?

以下のコードは、ヘッダー配列とフォームデータをループします。それをpdfに書き出します。私は添付ファイルのパラメータに静的なpdfファイルを引き付けました。これは、pdfファイルが電子メールで送信されたかどうかをテストすることだけでした。

コード

<?php 
require('fpdf.php'); 
require_once('mail/class.phpmailer.php'); 
?> 
<?php 


if(isset($_POST['submit'])) { 


$pdf = new FPDF(); 
$pdf->AddPage(); 


$headers = ['first name', 'last name']; 

$i = 0; 

foreach($_POST as $k => $v) { 
if($k == 'submit') continue; 


$pdf->SetFont('Arial','B',16); 
$pdf->write(40,$headers[$i++]); 
$pdf->ln(10); 
$pdf->write(40,"$v"); 
$pdf->ln(10); 
$content = $pdf->Output('doc.pdf','F'); 
} 
//$bodytext ='jdjdjdjdjd'; 
//$email = new PHPMailer(); 
//$email->From  = '[email protected]'; 
//$email->FromName = 'example'; 
//$email->Subject = 'PDF AddAttachment'; 
//$email->Body  = $bodytext; 
//$email->AddAddress('[email protected]'); 

//$file_to_attach = 'file/my.pdf'; 

//$email->AddAttachment($file_to_attach , 'my.pdf'); 

//return $email->Send(); 

//$pdf->Output(); 

} 
?> 
+2

は一時ファイルを作成してダウンロードすることができ、完全なソースコードは、そのファイルを削除し、電子メールを送信していますか? –

答えて

3

FPDFは、エンコードされた文字列を生成することができる出力機能を有しています。 http://www.fpdf.org/en/doc/output.htm

また、PHPMailerは添付ファイルを文字列から追加できます。

だから、その

$content = $pdf->Output('S'); 
$email->addStringAttachment($content, 'my.pdf'); 

という単純な。

+0

文書が閉鎖されているというエラーが表示されます – thomaSmith

+0

ええ、これまでにいくつか問題がありました。時々、複数の出力を行うことができません。出力コマンドは一度だけ発行してください。それからもう書きません。 –

+0

ああ待って、これはTCPDFだった...しかし、私はこれもあると思う? –

-1

はいあなたはhttp://codexhelp.blogspot.in/2017/04/php-email-create-pdf-and-send-with.html

/**/ 
    $mailto = $_POST['mailto']; 
    $mailfrom = $_POST['mailfrom']; 
    $mailsubject = $_POST['mailsubject']; 
    $firstname = $_POST['firstname']; 
    $lastname = $_POST['lastname']; 
    $description = $_POST['description']; 


    $description = wordwrap($description, 100, "<br />"); 
    /* break description content every after 100 character. */ 


    $content = ''; 

    $content .= ' 
<style> 
table { 
border-collapse: collapse; 
} 

table{ 
width:800px; 
margin:0 auto; 
} 

td{ 
border: 1px solid #e2e2e2; 
padding: 10px; 
max-width:520px; 
word-wrap: break-word; 
} 


</style> 

'; 
    /* you css */ 



    $content .= '<table>'; 

    $content .= '<tr><td>Mail To</td> <td>' . $mailto . '</td> </tr>'; 
    $content .= '<tr><td>Mail From</td> <td>' . $mailfrom . '</td> </tr>'; 
    $content .= '<tr><td>Mail Subject</td> <td>' . $mailsubject . '</td> </tr>'; 
    $content .= '<tr><td>Firstname</td> <td>' . $firstname . '</td> </tr>'; 
    $content .= '<tr><td>Lastname</td> <td>' . $lastname . '</td> </tr>'; 
    $content .= '<tr><td>Description</td> <td>' . $description . '</td> </tr>'; 

    $content .= '</table>'; 


    require_once('html2pdf/html2pdf.class.php'); 


    $to = $mailto; 
    $from = $mailfrom; 
    $subject = $mailsubject; 

    $html2pdf = new HTML2PDF('P', 'A4', 'fr'); 

    $html2pdf->setDefaultFont('Arial'); 
    $html2pdf->writeHTML($content, isset($_GET['vuehtml'])); 

    $html2pdf = new HTML2PDF('P', 'A4', 'fr'); 
    $html2pdf->WriteHTML($content); 


    $message = "<p>Please see the attachment.</p>"; 
    $separator = md5(time()); 
    $eol = PHP_EOL; 
    $filename = "pdf-document.pdf"; 
    $pdfdoc = $html2pdf->Output('', 'S'); 
    $attachment = chunk_split(base64_encode($pdfdoc)); 




    $headers = "From: " . $from . $eol; 
    $headers .= "MIME-Version: 1.0" . $eol; 
    $headers .= "Content-Type: multipart/mixed; boundary=\"" . $separator . "\"" . $eol . $eol; 

    $body = ''; 

    $body .= "Content-Transfer-Encoding: 7bit" . $eol; 
    $body .= "This is a MIME encoded message." . $eol; //had one more .$eol 


    $body .= "--" . $separator . $eol; 
    $body .= "Content-Type: text/html; charset=\"iso-8859-1\"" . $eol; 
    $body .= "Content-Transfer-Encoding: 8bit" . $eol . $eol; 
    $body .= $message . $eol; 


    $body .= "--" . $separator . $eol; 
    $body .= "Content-Type: application/octet-stream; name=\"" . $filename . "\"" . $eol; 
    $body .= "Content-Transfer-Encoding: base64" . $eol; 
    $body .= "Content-Disposition: attachment" . $eol . $eol; 
    $body .= $attachment . $eol; 
    $body .= "--" . $separator . "--"; 

    if (mail($to, $subject, $body, $headers)) { 

     $msgsuccess = 'Mail Send Successfully'; 
    } else { 

     $msgerror = 'Main not send'; 
    } 
関連する問題