2015-08-07 1 views
0

Я использую PHP Mailer, чтобы в основном отправлять интерактивный PDF-адрес на адрес электронной почты. Это работает локально, вызывая скрипт из PDF на сервер, но не работает, когда PDF-файл завершен на сервере.PHP Mailer -> PDF to Email предоставляет пустой PDF как приложение

код ниже:

<?php 
if(!isset($HTTP_RAW_POST_DATA)) { 
    echo "The Application could not be sent. Please save the PDF and email it manually."; 
    exit; 
} 
echo "<html><head></head><body><img src='loading.gif'>"; 

//Create PDF file with data 
$semi_rand = md5(time()); 
$pdf = $HTTP_RAW_POST_DATA; 

$file = $semi_rand . ".pdf"; 
$handle = fopen($file, 'w+'); 
fwrite($handle, $pdf); 
fclose($handle); 
// 

require_once('class/class.phpmailer.php'); 
include("class/class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded 

$mail = new PHPMailer(false); // the true param means it will throw exceptions on errors, which we need to catch 
$mail -> CharSet = "UTF-8"; 

$mail->IsSMTP(); // telling the class to use SMTP 

try { 
    $mail->Host  = "HOST"; // SMTP server 
    $mail->SMTPDebug = 2;      // enables SMTP debug information (for testing) 
    $mail->SMTPAuth = true;     // enable SMTP authentication 
    $mail->SMTPSecure = "ssl";     // sets the prefix to the servier 
    $mail->Host  = "HOST"; 
    $mail->Port  = 465; 
    $mail->Username = "USERNAME"; 
    $mail->Password = "PASSWORD"; 
    $mail->AddAddress('TO ADDRESS'); 
    $mail->SetFrom('FROM ADDRESS'); 
    $mail->Subject = 'SUBJECT'; 
    $mail->Body = 'Please see attachment'; 
    $mail->IsHTML(true); 
    $mail->AddAttachment($file); // attachment 
    $mail->Send(); 

    //Delete the temp pdf file then redirect to the success page 
    // unlink($file); 
    echo '<META HTTP-EQUIV="Refresh" Content="0; URL="1.1.1.1">';  
    exit;  
} catch (phpmailerException $e) { 
    //you can either report the errors here or redirect them to an error page 
    //using the above META tag 
    echo $e->errorMessage(); //Pretty error messages from PHPMailer 
} catch (Exception $e) { 
    echo $e->getMessage(); //Boring error messages from anything else! 
} 
    //Verify the temporary pdf file got deleted 
    unlink($file); 
?> 

Есть ли что-то мне не хватает? Все значения для $ mail (хост, имя пользователя, пароль и т. Д.) Верны, но когда он создает PDF-файл для отправки, он приходит только через < 1kb. Мой PDF-файл вызывает этот файл PHP для отправки.

+0

К интерактивным, вы имеете в виду в заполняемые формы PDF? Когда вы говорите, что он работает локально, что конкретно представляет собой содержимое электронной почты в формате PDF -webpage или только текстовые/числовые данные? Пользователь нажимает кнопку в PDF? Если да, почему бы просто не использовать [мероприятие для отправки формы Adobe] (https://acrobatusers.com/tutorials/form-submit-e-mail-demystified) для отправки электронной почты конкретному получателю. – Parfait

ответ

0

Вы не можете создавать PDF-файлы, такие как простые файлы txt или csv, с fwrite. Это более сложный тип файла.

Посмотрите в DomPDF, который для настройки может выглядеть несколько как ниже (предполагается, что $HTTP_RAW_POST_DATA является HTML-документ):

require("dompdf_config.inc.php"); 

$semi_rand = md5(time()); 
$pdf = file_get_contents('http://www.pdfpage.com/'); 
$file = $semi_rand . ".pdf"; 

$dompdf = new DOMPDF(); 
$dompdf->load_html($pdf); 
$dompdf->set_paper('a4', 'portrait'); 
$dompdf->render(); 
$dompdf->stream($file, array('Attachment' => '0')); 

... 
// USE $file as needed in email attachment 
+0

Я заменил // Создал PDF-файл с данными и ниже с вашим кодом выше и загрузил библиотеку dompdf - ничего не происходит при отправке. Не знаете, что вы имеете в виду? $ HTTP_RAW_POST_DATA - это html-документ? Я просто хочу сохранить и отправить интерактивный PDF по электронной почте в формате PDF. –

+0

Он говорит, что '$ HTTP_RAW_POST_DATA' не содержит данных в формате PDF, поэтому попытка рассматривать его как PDF не имеет смысла и не будет работать. – Synchro

+0

Простите меня, кажется [$ HTTP_RAW_POST_DATA] (http://php.net/manual/en/reserved.variables.httprawpostdata.php) - это вывод данных формы в формате concatenated 'key1 = value1 & ... ' , Чтобы создать PDF-файл, вам нужно будет создать HTML-страницу опубликованных данных, возможно, повторно использовать страницу формы с заполненными входными значениями, а затем отправить эту длинную строку как '$ pdf' в $ dompdf. – Parfait

Смежные вопросы