Отправить вложения с помощью PHP Mail ()?
Мне нужно отправить pdf с почтой, это возможно?
$to = "xxx";
$subject = "Subject" ;
$message = 'Example message with <b>html</b>';
$headers = 'MIME-Version: 1.0' . "rn";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "rn";
$headers .= 'From: xxx <xxx>' . "rn";
mail($to,$subject,$message,$headers);
чего мне не хватает?
13 ответов:
Я согласен с @MihaiIorga в комментариях-используйте скрипт PHPMailer. Ты говоришь так, будто отвергаешь его, потому что хочешь более простой вариант. Поверь мне, PHPMailer и более простой вариант с очень большим запасом по сравнению с попыткой сделать это самостоятельно с помощью встроенного PHP
вы можете попробовать использовать следующий код:
$filename = 'myfile'; $path = 'your path goes here'; $file = $path . "/" . $filename; $mailto = '[email protected]'; $subject = 'Subject'; $message = 'My message'; $content = file_get_contents($file); $content = chunk_split(base64_encode($content)); // a random hash will be necessary to send mixed content $separator = md5(time()); // carriage return type (RFC) $eol = "\r\n"; // main header (multipart mandatory) $headers = "From: name <[email protected]>" . $eol; $headers .= "MIME-Version: 1.0" . $eol; $headers .= "Content-Type: multipart/mixed; boundary=\"" . $separator . "\"" . $eol; $headers .= "Content-Transfer-Encoding: 7bit" . $eol; $headers .= "This is a MIME encoded message." . $eol; // message $body = "--" . $separator . $eol; $body .= "Content-Type: text/plain; charset=\"iso-8859-1\"" . $eol; $body .= "Content-Transfer-Encoding: 8bit" . $eol; $body .= $message . $eol; // attachment $body .= "--" . $separator . $eol; $body .= "Content-Type: application/octet-stream; name=\"" . $filename . "\"" . $eol; $body .= "Content-Transfer-Encoding: base64" . $eol; $body .= "Content-Disposition: attachment" . $eol; $body .= $content . $eol; $body .= "--" . $separator . "--"; //SEND Mail if (mail($mailto, $subject, $body, $headers)) { echo "mail send ... OK"; // or use booleans here } else { echo "mail send ... ERROR!"; print_r( error_get_last() ); }Редактировать 14-Июнь-2018
для большей читаемости в некоторых из поставщиков электронной почты используйте
$body .= $eol . $message . $eol . $eol;и$body .= $eol . $content . $eol . $eol;
для PHP 5.5.27 обновление безопасности
$file = $path.$filename; $content = file_get_contents( $file); $content = chunk_split(base64_encode($content)); $uid = md5(uniqid(time())); $name = basename($file); // header $header = "From: ".$from_name." <".$from_mail.">\r\n"; $header .= "Reply-To: ".$replyto."\r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; // message & attachment $nmessage = "--".$uid."\r\n"; $nmessage .= "Content-type:text/plain; charset=iso-8859-1\r\n"; $nmessage .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; $nmessage .= $message."\r\n\r\n"; $nmessage .= "--".$uid."\r\n"; $nmessage .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; $nmessage .= "Content-Transfer-Encoding: base64\r\n"; $nmessage .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"; $nmessage .= $content."\r\n\r\n"; $nmessage .= "--".$uid."--"; if (mail($mailto, $subject, $nmessage, $header)) { return true; // Or do something here } else { return false; }
Swiftmailer еще один простой в использовании скрипт, который автоматически защищает против инъекция электронной почты и делает вложения ветерок. Я также настоятельно рекомендую использовать встроенный PHP
чтобы отправить электронное письмо с вложением, нам нужно использовать тип multipart / mixed MIME, который указывает, что смешанные типы будут включены в электронное письмо. Кроме того, мы хотим использовать составной/альтернативный тип MIME для отправки как обычного текста, так и HTML-версии электронной почты.Взгляните на пример:
<?php //define the receiver of the email $to = '[email protected]'; //define the subject of the email $subject = 'Test email with attachment'; //create a boundary string. It must be unique //so we use the MD5 algorithm to generate a random hash $random_hash = md5(date('r', time())); //define the headers we want passed. Note that they are separated with \r\n $headers = "From: [email protected]\r\nReply-To: [email protected]"; //add boundary string and mime type specification $headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\""; //read the atachment file contents into a string, //encode it with MIME base64, //and split it into smaller chunks $attachment = chunk_split(base64_encode(file_get_contents('attachment.zip'))); //define the body of the message. ob_start(); //Turn on output buffering ?> --PHP-mixed-<?php echo $random_hash; ?> Content-Type: multipart/alternative; boundary="PHP-alt-<?php echo $random_hash; ?>" --PHP-alt-<?php echo $random_hash; ?> Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Hello World!!! This is simple text email message. --PHP-alt-<?php echo $random_hash; ?> Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 7bit <h2>Hello World!</h2> <p>This is something with <b>HTML</b> formatting.</p> --PHP-alt-<?php echo $random_hash; ?>-- --PHP-mixed-<?php echo $random_hash; ?> Content-Type: application/zip; name="attachment.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment <?php echo $attachment; ?> --PHP-mixed-<?php echo $random_hash; ?>-- <?php //copy current buffer contents into $message variable and delete current output buffer $message = ob_get_clean(); //send the email $mail_sent = @mail( $to, $subject, $message, $headers ); //if the message is sent successfully print "Mail sent". Otherwise print "Mail failed" echo $mail_sent ? "Mail sent" : "Mail failed"; ?>Как вы можете видеть, отправка электронной почты с вложением легко выполнить. В предыдущем примере мы имеем тип multipart / mixed MIME, и внутри него мы имеем multipart / alternative MIME тип, указывающий две версии сообщения электронной почты. Чтобы включить вложение в наше сообщение, мы читаем данные из указанного файла в строку, кодируем его с помощью base64, разделяем его на более мелкие куски, чтобы убедиться, что он соответствует спецификациям MIME, а затем включаем его в качестве вложения.
принято от здесь.
после борьбы в течение некоторого времени с плохо отформатированными вложениями, это код, который я в конечном итоге использовал:
$email = new PHPMailer(); $email->From = '[email protected]'; $email->FromName = 'FromName'; $email->Subject = 'Subject'; $email->Body = 'Body'; $email->AddAddress( '[email protected]' ); $email->AddAttachment( "/path/to/file" , "filename.ext", 'base64', 'application/octet-stream' ); $email->Send();
Рабочая Концепция :
if (isset($_POST['submit'])) { $mailto = $_POST["mailTo"]; $from_mail = $_POST["fromEmail"]; $replyto = $_POST["fromEmail"]; $from_name = $_POST["fromName"]; $message = $_POST["message"]; $subject = $_POST["subject"]; $filename = $_FILES["fileAttach"]["name"]; $content = chunk_split(base64_encode(file_get_contents($_FILES["fileAttach"]["tmp_name"]))); $uid = md5(uniqid(time())); $name = basename($file); $header = "From: " . $from_name . " <" . $from_mail . ">\r\n"; $header .= "Reply-To: " . $replyto . "\r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: multipart/mixed; boundary=\"" . $uid . "\"\r\n\r\n"; $header .= "This is a multi-part message in MIME format.\r\n"; $header .= "--" . $uid . "\r\n"; // You add html "Content-type: text/html; charset=utf-8\n" or for Text "Content-type:text/plain; charset=iso-8859-1\r\n" by I.khan $header .= "Content-type:text/html; charset=utf-8\n"; $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; // User Message you can add HTML if You Selected HTML content $header .= "<div style='color: red'>" . $message . "</div>\r\n\r\n"; $header .= "--" . $uid . "\r\n"; $header .= "Content-Type: application/octet-stream; name=\"" . $filename . "\"\r\n"; // use different content types here $header .= "Content-Transfer-Encoding: base64\r\n"; $header .= "Content-Disposition: attachment; filename=\"" . $filename . "\"\r\n\r\n"; // For Attachment $header .= $content . "\r\n\r\n"; $header .= "--" . $uid . "--"; if (mail($mailto, $subject, "", $header)) { echo "<script>alert('Success');</script>"; // or use booleans here } else { echo "<script>alert('Failed');</script>"; } }
это работает для меня. Он также прикрепляет несколько вложений тоже. легко
<?php if ($_POST && isset($_FILES['file'])) { $recipient_email = "[email protected]"; //recepient $from_email = "info@your_domain.com"; //from email using site domain. $subject = "Attachment email from your website!"; //email subject line $sender_name = filter_var($_POST["s_name"], FILTER_SANITIZE_STRING); //capture sender name $sender_email = filter_var($_POST["s_email"], FILTER_SANITIZE_STRING); //capture sender email $sender_message = filter_var($_POST["s_message"], FILTER_SANITIZE_STRING); //capture message $attachments = $_FILES['file']; //php validation if (strlen($sender_name) < 4) { die('Name is too short or empty'); } if (!filter_var($sender_email, FILTER_VALIDATE_EMAIL)) { die('Invalid email'); } if (strlen($sender_message) < 4) { die('Too short message! Please enter something'); } $file_count = count($attachments['name']); //count total files attached $boundary = md5("specialToken32"); // boundary token to be used if ($file_count > 0) { //if attachment exists //header $headers = "MIME-Version: 1.0\r\n"; $headers .= "From:" . $from_email . "\r\n"; $headers .= "Reply-To: " . $sender_email . "" . "\r\n"; $headers .= "Content-Type: multipart/mixed; boundary = $boundary\r\n\r\n"; //message text $body = "--$boundary\r\n"; $body .= "Content-Type: text/plain; charset=ISO-8859-1\r\n"; $body .= "Content-Transfer-Encoding: base64\r\n\r\n"; $body .= chunk_split(base64_encode($sender_message)); //attachments for ($x = 0; $x < $file_count; $x++) { if (!empty($attachments['name'][$x])) { if ($attachments['error'][$x] > 0) { //exit script and output error if we encounter any $mymsg = array( 1 => "The uploaded file exceeds the upload_max_filesize directive in php.ini", 2 => "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form", 3 => "The uploaded file was only partially uploaded", 4 => "No file was uploaded", 6 => "Missing a temporary folder"); die($mymsg[$attachments['error'][$x]]); } //get file info $file_name = $attachments['name'][$x]; $file_size = $attachments['size'][$x]; $file_type = $attachments['type'][$x]; //read file $handle = fopen($attachments['tmp_name'][$x], "r"); $content = fread($handle, $file_size); fclose($handle); $encoded_content = chunk_split(base64_encode($content)); //split into smaller chunks (RFC 2045) $body .= "--$boundary\r\n"; $body .= "Content-Type: $file_type; name=" . $file_name . "\r\n"; $body .= "Content-Disposition: attachment; filename=" . $file_name . "\r\n"; $body .= "Content-Transfer-Encoding: base64\r\n"; $body .= "X-Attachment-Id: " . rand(1000, 99999) . "\r\n\r\n"; $body .= $encoded_content; } } } else { //send plain email otherwise $headers = "From:" . $from_email . "\r\n" . "Reply-To: " . $sender_email . "\n" . "X-Mailer: PHP/" . phpversion(); $body = $sender_message; } $sentMail = @mail($recipient_email, $subject, $body, $headers); if ($sentMail) { //output success or failure messages die('Thank you for your email'); } else { die('Could not send mail! Please check your PHP mail configuration.'); } } ?>
ни один из приведенных выше ответов не работал для меня из-за их указанного формата вложения (
application/octet-stream). Используйтеapplication/pdfдля достижения наилучших результатов с файлами PDF.<?php // just edit these $to = "[email protected], [email protected]"; // addresses to email pdf to $from = "[email protected]"; // address message is sent from $subject = "Your PDF email subject"; // email subject $body = "<p>The PDF is attached.</p>"; // email body $pdfLocation = "./your-pdf.pdf"; // file location $pdfName = "pdf-file.pdf"; // pdf file name recipient will get $filetype = "application/pdf"; // type // creates headers and mime boundary $eol = PHP_EOL; $semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_$semi_rand"; $headers = "From: $from$eolMIME-Version: 1.0$eol" . "Content-Type: multipart/mixed;$eol boundary=\"$mime_boundary\""; // add html message body $message = "--$mime_boundary$eol" . "Content-Type: text/html; charset=\"iso-8859-1\"$eol" . "Content-Transfer-Encoding: 7bit$eol$eol$body$eol"; // fetches pdf $file = fopen($pdfLocation, 'rb'); $data = fread($file, filesize($pdfLocation)); fclose($file); $pdf = chunk_split(base64_encode($data)); // attaches pdf to email $message .= "--$mime_boundary$eol" . "Content-Type: $filetype;$eol name=\"$pdfName\"$eol" . "Content-Disposition: attachment;$eol filename=\"$pdfName\"$eol" . "Content-Transfer-Encoding: base64$eol$eol$pdf$eol--$mime_boundary--"; // Sends the email if(mail($to, $subject, $message, $headers)) { echo "The email was sent."; } else { echo "There was an error sending the mail."; }
Я закончил тем, что написал свою собственную функцию отправки/кодирования электронной почты. Это работает хорошо для меня для отправки PDF вложений. Я не использовал другие функции в производстве.
Примечание: несмотря на то, что спецификация довольно выразительна, что вы должны использовать \r\n для разделения заголовков, я обнаружил, что она работает только тогда, когда я использовал PHP_EOL. Я только проверил это на Linux. YMMV
<?php # $args must be an associative array # required keys: from, to, body # body can be a string or a [tree of] associative arrays. See examples below # optional keys: subject, reply_to, cc, bcc # EXAMPLES: # # text-only email: # email2(array( # 'from' => '[email protected]', # 'to' => '[email protected]', # 'subject' => 'test', # # body will be text/plain because we're passing a string that doesn't start with '<' # 'body' => 'Hi, testing 1 2 3', # )); # # # html-only email # email2(array( # 'from' => '[email protected]', # 'to' => '[email protected]', # 'subject' => 'test', # # body will be text/html because we're passing a string that starts with '<' # 'body' => '<h1>Hi!</h1>I like <a href="http://cheese.com">cheese</a>', # )); # # # text-only email (explicitly, in case first character is dynamic or something) # email2(array( # 'from' => '[email protected]', # 'to' => '[email protected]', # 'subject' => 'test', # # body will be text/plain because we're passing a string that doesn't start with '<' # 'body' => array( # 'type' => 'text', # 'body' => $message_text, # ) # )); # # # email with text and html alternatives (auto-detected mime types) # email2(array( # 'from' => '[email protected]', # 'to' => '[email protected]', # 'subject' => 'test', # 'body' => array( # 'type' => 'alternatives', # 'body' => array( # "Hi!\n\nI like cheese", # '<h1>Hi!</h1><p>I like <a href="http://cheese.com">cheese</a></p>', # ) # ) # )); # # # email with text and html alternatives (explicit types) # email2(array( # 'from' => '[email protected]', # 'to' => '[email protected]', # 'subject' => 'test', # 'body' => array( # 'type' => 'alternatives', # 'body' => array( # array( # 'type' => 'text', # 'body' => "Hi!\n\nI like cheese", # ), # array( # 'type' => 'html', # 'body' => '<h1>Hi!</h1><p>I like cheese</p>', # ), # ) # ) # )); # # # email with an attachment # email2(array( # 'from' => '[email protected]', # 'to' => '[email protected]', # 'subject' => 'test', # 'body' => array( # 'type' => 'mixed', # 'body' => array( # "Hi!\n\nCheck out this (inline) image", # array( # 'type' => 'image/png', # 'disposition' => 'inline', # 'body' => $image_data, # raw file contents # ), # "Hi!\n\nAnd here's an attachment", # array( # 'type' => 'application/pdf; name="attachment.pdf"', # 'disposition' => 'attachment; filename="attachment.pdf"', # 'body' => $pdf_data, # raw file contents # ), # "Or you can use shorthand:", # array( # 'type' => 'application/pdf', # 'attachment' => 'attachment.pdf', # name for client (not data source) # 'body' => $pdf_data, # raw file contents # ), # ) # ) # )) function email2($args) { if (!isset($args['from'])) { return 1; } $from = $args['from']; if (!isset($args['to'])) { return 2; } $to = $args['to']; $subject = isset($args['subject']) ? $args['subject'] : ''; $reply_to = isset($args['reply_to']) ? $args['reply_to'] : ''; $cc = isset($args['cc']) ? $args['cc'] : ''; $bcc = isset($args['bcc']) ? $args['bcc'] : ''; #FIXME should allow many more characters here (and do Q encoding) $subject = isset($args['subject']) ? $args['subject'] : ''; $subject = preg_replace("|[^a-z0-9 _/#'.:&,-]|i", '_', $subject); $headers = "From: $from"; if($reply_to) { $headers .= PHP_EOL . "Reply-To: $reply_to"; } if($cc) { $headers .= PHP_EOL . "CC: $cc"; } if($bcc) { $headers .= PHP_EOL . "BCC: $bcc"; } $r = email2_helper($args['body']); $headers .= PHP_EOL . $r[0]; $body = $r[1]; if (mail($to, $subject, $body, $headers)) { return 0; } else { return 5; } } function email2_helper($body, $top = true) { if (is_string($body)) { if (substr($body, 0, 1) == '<') { return email2_helper(array('type' => 'html', 'body' => $body), $top); } else { return email2_helper(array('type' => 'text', 'body' => $body), $top); } } # now we can assume $body is an associative array # defaults: $type = 'application/octet-stream'; $mime = false; $boundary = null; $disposition = null; $charset = false; # process 'type' first, because it sets defaults for others if (isset($body['type'])) { $type = $body['type']; if ($type === 'text') { $type = 'text/plain'; $charset = true; } elseif ($type === 'html') { $type = 'text/html'; $charset = true; } elseif ($type === 'alternative' || $type === 'alternatives') { $mime = true; $type = 'multipart/alternative'; } elseif ($type === 'mixed') { $mime = true; $type = 'multipart/mixed'; } } if (isset($body['disposition'])) { $disposition = $body['disposition']; } if (isset($body['attachment'])) { if ($disposition == null) { $disposition = 'attachment'; } $disposition .= "; filename=\"{$body['attachment']}\""; $type .= "; name=\"{$body['attachment']}\""; } # make headers $headers = array(); if ($top && $mime) { $headers[] = 'MIME-Version: 1.0'; } if ($mime) { $boundary = md5('5sd^%Ca)~aAfF0=4mIN' . rand() . rand()); $type .= "; boundary=$boundary"; } if ($charset) { $type .= '; charset=' . (isset($body['charset']) ? $body['charset'] : 'UTF-8'); } $headers[] = "Content-Type: $type"; if ($disposition !== null) { $headers[] = "Content-Disposition: {$disposition}"; } $data = ''; # return array, first el is headers, 2nd is body (php's mail() needs them separate) if ($mime) { foreach ($body['body'] as $sub_body) { $data .= "--$boundary" . PHP_EOL; $r = email2_helper($sub_body, false); $data .= $r[0] . PHP_EOL . PHP_EOL; # headers $data .= $r[1] . PHP_EOL . PHP_EOL; # body } $data .= "--$boundary--"; } else { if(preg_match('/[^\x09\x0A\x0D\x20-\x7E]/', $body['body'])) { $headers[] = "Content-Transfer-Encoding: base64"; $data .= chunk_split(base64_encode($body['body'])); } else { $data .= $body['body']; } } return array(join(PHP_EOL, $headers), $data); }
$to = "[email protected]"; $subject = "Subject Of The Mail"; $message = "Hi there,<br/><br/>This is my message.<br><br>"; $headers = "From: From-Name<[email protected]>"; // boundary $semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; // headers for attachment $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; // multipart boundary $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/html; charset=ISO-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n"; $message .= "--{$mime_boundary}\n"; $filepath = 'uploads/'.$_FILES['image']['name']; move_uploaded_file($_FILES['image']['tmp_name'], $filepath); //upload the file $filename = $_FILES['image']['name']; $file = fopen($filepath, "rb"); $data = fread($file, filesize($filepath)); fclose($file); $data = chunk_split(base64_encode($data)); $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$filename\"\n" . "Content-Disposition: attachment;\n" . " filename=\"$filename\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n"; $message .= "--{$mime_boundary}\n"; mail($to, $subject, $message, $headers);
скопировать код на этой странице - работает в mail ()
он начинает с моего создания функции mail_attachment, которая может быть вызвана позже. Что он делает позже со своим кодом привязанности.
<?php function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) { $file = $path.$filename; $file_size = filesize($file); $handle = fopen($file, "r"); $content = fread($handle, $file_size); fclose($handle); $content = chunk_split(base64_encode($content)); $uid = md5(uniqid(time())); $header = "From: ".$from_name." <".$from_mail.">\r\n"; $header .= "Reply-To: ".$replyto."\r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; $header .= "This is a multi-part message in MIME format.\r\n"; $header .= "--".$uid."\r\n"; $header .= "Content-type:text/plain; charset=iso-8859-1\r\n"; $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; $header .= $message."\r\n\r\n"; $header .= "--".$uid."\r\n"; $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here $header .= "Content-Transfer-Encoding: base64\r\n"; $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"; $header .= $content."\r\n\r\n"; $header .= "--".$uid."--"; if (mail($mailto, $subject, "", $header)) { echo "mail send ... OK"; // or use booleans here } else { echo "mail send ... ERROR!"; } } //start editing and inputting attachment details here $my_file = "somefile.zip"; $my_path = "/your_path/to_the_attachment/"; $my_name = "Olaf Lederer"; $my_mail = "[email protected]"; $my_replyto = "[email protected]"; $my_subject = "This is a mail with attachment."; $my_message = "Hallo,\r\ndo you like this script? I hope it will help.\r\n\r\ngr. Olaf"; mail_attachment($my_file, $my_path, "[email protected]", $my_mail, $my_name, $my_replyto, $my_subject, $my_message); ?>Он имеет более подробную информацию на своей странице и отвечает на некоторые проблемы в разделе комментариев.
100% рабочая концепция для отправки электронной почты с вложением в php:
if (isset($_POST['submit'])) { extract($_POST); require_once('mail/class.phpmailer.php'); $subject = "$name Applied For - $position"; $email_message = "<div>Thanks for Applying ....</div> "; $mail = new PHPMailer; $mail->IsSMTP(); // telling the class to use SMTP $mail->Host = "mail.companyname.com"; // SMTP server $mail->SMTPDebug = 0; $mail->SMTPAuth = true; $mail->SMTPSecure = "ssl"; $mail->Host = "smtp.gmail.com"; $mail->Port = 465; $mail->IsHTML(true); $mail->Username = "[email protected]"; // GMAIL username $mail->Password = "mailPassword"; // GMAIL password $mail->SetFrom('[email protected]', 'new application submitted'); $mail->AddReplyTo("[email protected]","First Last"); $mail->Subject = "your subject"; $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test $mail->MsgHTML($email_message); $address = '[email protected]'; $mail->AddAddress($address, "companyname"); $mail->AddAttachment($_FILES['file']['tmp_name'], $_FILES['file']['name']); // attachment if (!$mail->Send()) { /* Error */ echo 'Message not Sent! Email at [email protected]'; } else { /* Success */ echo 'Sent Successfully! <b> Check your Mail</b>'; } }я использовал этот код для отправки почты Google smtp с вложением....
Примечание: загрузите библиотеку PHPMailer отсюда ->https://github.com/PHPMailer/PHPMailer
Comments