Send email with pdf attachment

I am trying to send an email using the mail() function in php with pdf attachment. I am running a script on localmachine. I installed smtp ip in php.ini . I can send a text message, but with the application I get the following error:

Warning: mail() [function.mail]: SMTP server response: 503 Unexpected command or sequence of commands in C:\AppServ\www\PhpProject1\CV-Generator\testemail2.php on line 55

Can someone tell me what's wrong please?

Here is my code:

 <?php // download fpdf class (http://fpdf.org) require('./pdf/fpdf.php'); // fpdf object $pdf = new FPDF(); // generate a simple PDF (for more info, see http://fpdf.org/en/tutorial/) $pdf->AddPage(); $pdf->SetFont("Arial","B",14); $pdf->Cell(40,10, "this is a pdf example"); // email stuff (change data below) $to = $_GET['send']; $from = " info@asaltechd.com "; $subject = "send email with pdf attachment"; $message = "<p>Please see the attachment.</p>"; // 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; // attachment name $filename = "example.pdf"; // encode data (puts attachment in proper format) $pdfdoc = $pdf->Output("", "S"); $attachment = chunk_split(base64_encode($pdfdoc)); // main header (multipart mandatory) $headers = "From: ".$from.$eol; $headers .= "MIME-Version: 1.0".$eol; $headers .= "Content-Type: multipart/mixed; boundary=\"".$separator."\"".$eol.$eol; $headers .= "Content-Transfer-Encoding: 7bit".$eol; $headers .= "This is a MIME encoded message.".$eol.$eol; // message $headers .= "--".$separator.$eol; $headers .= "Content-Type: text/html; charset=\"iso-8859-1\"".$eol; $headers .= "Content-Transfer-Encoding: 8bit".$eol.$eol; $headers .= $message.$eol.$eol; // attachment $headers .= "--".$separator.$eol; $headers .= "Content-Type: application/octet-stream; name=\"".$filename."\"".$eol; $headers .= "Content-Transfer-Encoding: base64".$eol; $headers .= "Content-Disposition: attachment".$eol.$eol; $headers .= $attachment.$eol.$eol; $headers .= "--".$separator."--"; // send message mail($to, $subject, "", $headers); ?> 
+6
source share
3 answers

I am using PHP SwiftMailer (http://swiftmailer.org/):

 require_once('../lib/swiftMailer/lib/swift_required.php'); ... $body="Dear $fname,\n\nPlease find attached, an invoice for the period $startDate - $endDate\n\nBest regards,\n\nMr X"; $message = Swift_Message::newInstance('Subject goes here') ->setFrom(array($email => " no-reply@mydomain.com ")) ->setTo(array($email => "$fname $lname")) ->setBody($body); $message->attach(Swift_Attachment::fromPath("../../invoices_unpaid/$id.pdf")); $result = $mailer->send($message); 
+7
source

The attachment is not included in the headlines! They should only declare MIME headers:

 // main header (multipart mandatory) $headers = "From: ".$from.$eol; $headers .= "MIME-Version: 1.0".$eol; $headers .= "Content-Type: multipart/mixed; boundary=\"".$separator."\"".$eol; // see below $headers .= "Content-Transfer-Encoding: 7bit".$eol; // message $msg = "--".$separator.$eol; $msg .= "Content-Type: text/html; charset=\"iso-8859-1\"".$eol; $msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol; $msg .= $message.$eol.$eol; // attachment $msg .= "--".$separator.$eol; $msg .= "Content-Type: application/octet-stream; name=\"".$filename."\"".$eol; $msg .= "Content-Transfer-Encoding: base64".$eol; $msg .= "Content-Disposition: attachment".$eol; $msg .= $attachment.$eol; $msg .= "--".$separator."--".$eol; // send message mail($to, $subject, $msg, $headers); 

Note that there should NEVER be two consecutive lines in the headings. SMTP uses an empty string as a separator between the headers and the body.

In addition, EOL should NOT be the default on your operating system - it must be an EOL sequence as defined by SMTP, i.e. CR + LF

+7
source

I would suggest that you use the PHP Mailer to send emails from your PHP. I have used it with great success in many different configurations. The class has all the necessary methods for processing encodings, attachments, custome headers, sending via sendmail, etc. Etc.

0
source

Source: https://habr.com/ru/post/893153/


All Articles