Я пытаюсь отправить данные формы в pdf и приложить к почте

Я использую приведенный ниже код, и он работает. Однако прикрепленный код не работает, и отправка почты не удалась. Может ли это быть связано с неправильным заголовком?

Здесь $htmlTable Переменная используется для сбора значения поста формы и его преобразования в pdf с использованием функции html to pdf.
Но почта не отправляется с pdf.

$pdf->WriteHTML2("<br><br><br>$htmlTable");
$pdf->SetFont('Arial','B',6);
//Create PDF file with data
$semi_rand = md5(time());
$pdf1 = $htmlTable;

$file = $semi_rand . ".pdf";
$handle = fopen($file, 'w+');
fwrite($handle, $pdf);
fclose($handle);
// Additional headers
$subject = "User Form";
$content = chunk_split(file_get_contents($file));
$uid = md5(uniqid(time()));  //unique identifier

//standard mail headers
$header = "From: ".$from."\r\n";
$header .= "Reply-To: ".$_POST['email']. "\r\n";
$header .= "MIME-Version: 1.0\r\n";//declare multiple kinds of email (plain text + attch)
$header .="Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$header .="This is a multi-part message in MIME format.\r\n";

//plain txt part

//$header .= "--".$uid."\r\n";
// $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
// $header .= "Content-Transfer-Encoding: bit\r\n\r\n";
//$header .= 'sample'. "\r\n\r\n";//attch part
$header .= "--".$uid."\r\n";
$header .= "Content-Type: application/octet-stream; name=\"".$file."\"\r\n";
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$file."\"\r\n\r\n";
$header .= $content."\r\n\r\n";  //chucked up 64 encoded attch
$success = mail($to,$subject,'PFA',$header);
if (!$success) {
echo "Mail to " . $to . " failed .";
}else {
echo "Success : Mail was send to " . $to ;
print_r ($header);
}

-1

Решение

Вы должны использовать PHPMailer класс, так как проще прикрепить файл и отправить его по электронной почте.

Пример отправки электронного письма с вложением может быть:

<?php
require 'PHPMailerAutoload.php';

$mail = new PHPMailer;

//$mail->SMTPDebug = 3;                               // Enable verbose debug output

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = '[email protected]';                 // SMTP username
$mail->Password = 'secret';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;                                    // TCP port to connect to

$mail->setFrom('[email protected]', 'Mailer');
$mail->addAddress('[email protected]', 'Joe User');

$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = 'Attachment is here';
$mail->Body    = 'Here goes the attachment;

if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}

Я немного изменил пример, который можно найти по ссылке, которой я поделился выше.

Как Синхронная предложил вы можете использовать addStringAttachment метод, чтобы пропустить весь процесс записи PDF в файл и отправить его прямо из памяти.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]