2013-03-05 3 views
0

Я создал PDF-файл с использованием функции tcpdf, затем я хочу отправить его на почту в виде вложения. Я использовал следующее кодирование в конце создания PDF. Но он работает в каком-то сервере, но не работает в некоторых других серверахMail Sending in TCPDF

$from = "[email protected]"; 
     $subject = "test"; 
     $message = $_REQUEST['msg']; 


     // a random hash will be necessary to send mixed content 
     $separator = md5(time()); 

     // carriage return type (we use a PHP end of line constant) 
     $eol = PHP_EOL; 
     // $eol = "\r\n"; 
     // attachment name 
     $filename = "Yourinvices.pdf"; 

     // encode data (puts attachment in proper format) 
     $pdfdoc = $pdf->Output('Patient'.$invnumserial.'.pdf', 'S'); 
     $attachment = chunk_split(base64_encode($pdfdoc)); 

     // encode data (multipart mandatory) 
     $headers = "From: ".$from.$eol; 
     $headers .= "MIME-Version: 1.0".$eol; 
     $headers .= "Content-Type: multipart/mixed; boundary=\"".$separator."\"".$eol.$eol; 
     $headers .= "Content-Transfer-Enconding: 7bit".$eol; 
     $headers .= "This is a MIME encoded message.".$eol.$eol; 

     // message 
     $headers .= "--".$separator.$eol; 
     $headers .= "Content-Type: text/html; charsrt=\"iso-8859-1\"".$eol; 
     $headers .= $message.$eol.$eol; 

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

     // send message 
     if(@mail($to, $subject, $message, $headers)) 
     { 

     Redirect("../../patient_invoicelist.php?msg=1"); 
     } 

     else Redirect("../../patient_invoicelist.php?msg=2"); 
+0

Что ошибка вы получаете? –

+0

Я не получил сообщение об ошибке, когда я выполняю это, выполняется инструкция else. Как я могу получить сообщение об ошибке, пожалуйста, помогите мне – MANIKANDAN

+0

Просто удалите @ перед вызовом функции почты. –

ответ

0

Используйте PHPMailer отправить Emails with Attachments. С помощью этой библиотеки будет очень легко отправлять электронные письма с вложениями.

Скачать PHPMailer library по этой ссылке. Вы также найдете примеры для использования этого класса.

http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php5_6/PHPMailer%20v5.1/

$mail->SetFrom('[email protected]', 'test'); 
$mail->Subject = $subject; 
$mail->AddAttachment($Pdf_path_here); 
$mail->MsgHTML($body); 
$mail->AddAddress($to, ""); 

if(!$mail->Send()) 
{ 
    echo "sent"; 
} 
else 
{ 
    echo "error"; 
} 
+0

, если я использую это Средство, следующее при возникновении ошибки, устарело: Функция eregi_replace() устарела в/home/content/43/9948643/html/anntool/tcpdf/examples/Phpmailer/examples/test_mail_basic .php на линии 14 Устаревшие: Функция set_magic_quotes_runtime() является устаревшим в /home/content/43/9948643/html/anntool/tcpdf/examples/Phpmailer/class.phpmailer.php на линии 1471 Устаревшие: Функция set_magic_quotes_runtime () устарел в /home/content/43/9948643/html/anntool/tcpdf/examples/Phpmailer/class.phpmailer.php в строке 1475 – MANIKANDAN

+0

eregi_replace() устарел в/home/content/43/9948643/html/anntool /tcpdf/examples/Phpmailer/examples/test_mail_basic.php в строке 14, что я могу сделать для этой ошибки, Ошибка в строке $ body = eregi_replace ("[\ ]», '', $ Тела); – MANIKANDAN

+0

Какова ваша версия PHP? –