2016-03-29 21 views
0

添付ファイルをPHPMailer経由で送信することができないようです。ここで私は電子メールを送信するためのコードを持っているものです。PHPMailerとDompdf添付ファイルの問題

改訂Automailer内容:

if(isset($_POST['type']) && $_POST['type'] == 'sendEmail'){ 
    require_once 'phpMail/PHPMailerAutoload.php'; 
    $email = $_POST['email']; 
    $uuid = $_POST['uuid']; 
    $file_content = file_get_contents(BASE_PATH.'email.php?uuid='.$uuid); 
    $pdf_content = file_get_contents(BASE_PATH.'pdf.php?uuid='.$uuid); 
    $mail = new PHPMailer; 
    $mail->From = ADMIN_EMAIL; 
    $mail->FromName = SENDER_NAME; 
    $mail->addAddress($email);    // Name is optional 
    $mail->addReplyTo(REPLY_EMAIL, 'Reply Mail'); 
    $mail->isHTML(true);         // Set email format to HTML 
    $mail->Subject = 'Email From '.User; 
    $mail->Body = $file_content; 
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 
    $mail->AddStringAttachment($output, attach.pdf); 
    if(!$mail->send()) { 
     echo 'Message could not be sent.'; 
     echo 'Mailer Error: ' . $mail->ErrorInfo; 
    } else { 
     echo "true"; 
    } 

    exit; 
} 

改訂DOMPDFコード(pdf.php)

$html .= //Content Here 
$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 
$dompdf->render(); 
$canvas = $dompdf->get_canvas(); 
$canvas->page_script(' 
    if ($PAGE_NUM > 1) { 
    $font = Font_Metrics::get_font("helvetica", "bold"); 
    $current_page = $PAGE_NUM-1; 
    $total_pages = $PAGE_COUNT-1; 
    $pdf->text(522, 770, "Page: $current_page of $total_pages", $font, 10, array(0,0,0)); 
    } 
'); 
$output = $dompdf->output(); 
file_put_contents('Attachment.pdf', $output); 

は、私が関わるコードを削除した場合電子メールはちょうど良い(本文にemail.phpで)送信します。添付ファイル、しかし働くことを拒否...

+0

さてあなたは、送信する前に、サーバー上のファイルを保存しましたそれはphpmailerと? – Naruto

+0

@Narutoまずはクールな名前; D。第二に、もし私がする必要がないならば、私はそれを一時的なファイルに保存するだけです、第三に、私はPHPAutoMailerにかなりフレッシュで、確信が持てませんでしたどのようにそれを行うのか:D最高のコメントは、たとえそれがサーバーに保存する必要があったとしても、ベストプラクティスが何であれ一緒に行くことです。 – Steven

+0

'$ dompdf-> stream()'メソッドは、ユーザブラウザ上でダウンロードダイアログを開くために使用されます。だからあなたはそれを添付ファイルとして使うことはできません。以下のナルトの方法を使用してください。 – ThinkTank

答えて

0

ワーキングコード:

サーバコード:

if(isset($_POST['type']) && $_POST['type'] == 'sendEmail'){ 
    require_once 'phpMail/PHPMailerAutoload.php'; 
    $email = $_POST['email']; 
    $uuid = $_POST['uuid']; 
    $file_content = file_get_contents(BASE_PATH.'email.php?uuid='.$uuid); 
    $pdf_content = file_get_contents(BASE_PATH.'pdfemail.php?uuid='.$uuid); 
    $mail = new PHPMailer; 
    $mail->From = ADMIN_EMAIL; 
    $mail->FromName = SENDER_NAME; 
    $mail->addAddress($email);    // Name is optional 
    $mail->addReplyTo(REPLY_EMAIL, 'Reply Mail'); 
    $mail->isHTML(true);         // Set email format to HTML 
    $mail->Subject = 'Project From '.COMPANY_NAME; 
    $mail->Body = $file_content; 
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 
    $mail->AddAttachment('./attachments/attach.pdf', "Attachment.pdf"); 
    if(!$mail->send()) { 
     echo 'Message could not be sent.'; 
     echo 'Mailer Error: ' . $mail->ErrorInfo; 
    } else { 
     echo "true"; 
    } 

    exit; 
} 

DOMPDFファイル:

$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 
$dompdf->render(); 
$canvas = $dompdf->get_canvas(); 
$canvas->page_script(' 
    if ($PAGE_NUM > 1) { 
    $font = Font_Metrics::get_font("helvetica", "bold"); 
    $current_page = $PAGE_NUM-1; 
    $total_pages = $PAGE_COUNT-1; 
    $pdf->text(522, 770, "Page: $current_page of $total_pages", $font, 10, array(0,0,0)); 
    } 
'); 
$output = $dompdf->output(); 
$file_to_save = './attachments/attach.pdf'; 
file_put_contents($file_to_save, $output); 
関連する問題