PHP 메일 ()로 첨부 파일을 보내시겠습니까?
PHPPHP 메일 ()로 첨부 파일을 보내시겠습니까?
나는 우편으로 pdf를 보낼 필요가있다?
$to = "xxx";
$subject = "Subject" ;
$message = 'Example message with <b>html</b>';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: xxx <xxx>' . "\r\n";
mail($to,$subject,$message,$headers);
내가 뭘 놓치고 있니?
해결법
-
==============================
1.
@MihaiIorga와 의견에 동의합니다 - PHPMailer 스크립트를 사용하십시오. 당신은 당신이 쉬운 옵션을 원하기 때문에 그것을 거절하는 것처럼 들리 네요. 저를 믿으십시오, PHPMailer는 PHP의 붙박이 mail () 기능으로 너 자신 그것을하는 것을 시도에 비교 된 아주 큰 한계에 의하여 쉬운 선택권이다. PHP의 mail () 함수는 실제로 그렇게 좋지 않습니다.
PHPMailer를 사용하려면,
이제 첨부 파일이 포함 된 이메일을 보내는 것은 크게 어렵지 않게 어렵습니다.
use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; $email = new PHPMailer(); $email->SetFrom('you@example.com', 'Your Name'); //Name is optional $email->Subject = 'Message Subject'; $email->Body = $bodytext; $email->AddAddress( 'destinationaddress@example.com' ); $file_to_attach = 'PATH_OF_YOUR_FILE_HERE'; $email->AddAttachment( $file_to_attach , 'NameOfFile.pdf' ); return $email->Send();
그것은 $ email-> AddAttachment () 한 줄에 불과합니다. - 당신은 더 쉽게 요청할 수 없었습니다.
PHP의 mail () 함수를 사용하면 코드 스택을 작성하게되고 버그를 찾기가 정말 어려울 것입니다.
-
==============================
2.
다음 코드를 사용해보십시오.
$filename = 'myfile'; $path = 'your path goes here'; $file = $path . "/" . $filename; $mailto = 'mail@mail.com'; $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 <test@test.com>" . $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() ); }
2018 년 6 월 14 일 편집
일부 이메일 제공 업체에서 더 읽기 쉽도록 용도
$ body. = $ eol. $ 메시지. $ eol. $ eol; 과 $ body. = $ eol. $ 콘텐츠. $ eol. $ eol;
-
==============================
3.
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; }
-
==============================
4.
Swiftmailer는 이메일 주입을 자동으로 방지하고 첨부 파일을 쉽게 만들어주는 사용하기 쉬운 또 다른 스크립트입니다. 필자는 PHP의 내장 된 mail () 함수 사용을 강력히 권장하지 않습니다.
사용:
이제 메일을 보내야 할 때 코드를 추가하십시오.
// Create the message $message = Swift_Message::newInstance() ->setSubject('Your subject') ->setFrom(array('webmaster@mysite.com' => 'Web Master')) ->setTo(array('receiver@example.com')) ->setBody('Here is the message itself') ->attach(Swift_Attachment::fromPath('myPDF.pdf')); //send the message $mailer->send($message);
자세한 정보와 옵션은 Swiftmailer 문서에서 찾을 수 있습니다.
-
==============================
5.
첨부 파일이있는 전자 메일을 보내려면 혼합 유형이 전자 메일에 포함되도록 지정하는 multipart / mixed MIME 형식을 사용해야합니다. 또한 multipart / alternative MIME 형식을 사용하여 일반 텍스트와 HTML 버전의 전자 메일을 보내려고합니다. 예제를 살펴보십시오.
<?php //define the receiver of the email $to = 'youraddress@example.com'; //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: webmaster@example.com\r\nReply-To: webmaster@example.com"; //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 사양과 일치하는지 확인한 다음 첨부 파일로 포함시킵니다.
여기에서 찍은.
-
==============================
6.
작업 개념 :
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>"; } }
-
==============================
7.
심하게 형식화 된 첨부 파일로 잠시 고생 한 후 다음 코드를 사용합니다.
$email = new PHPMailer(); $email->From = 'from@somedomain.com'; $email->FromName = 'FromName'; $email->Subject = 'Subject'; $email->Body = 'Body'; $email->AddAddress( 'to@somedomain.com' ); $email->AddAttachment( "/path/to/file" , "filename.ext", 'base64', 'application/octet-stream' ); $email->Send();
-
==============================
8.
이것은 나를 위해 작동합니다. 또한 여러 첨부 파일도 첨부합니다. 용이하게
<?php if ($_POST && isset($_FILES['file'])) { $recipient_email = "recipient@yourmail.com"; //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("specialToken$4332"); // 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.'); } } ?>
-
==============================
9.
위의 응답 중 어느 것도 지정된 첨부 형식 (응용 프로그램 / 옥텟 스트림)으로 인해 저에게 효과적이었습니다. PDF 파일로 최상의 결과를 얻으려면 application / pdf를 사용하십시오.
<?php // just edit these $to = "email1@domain.com, email2@domain.com"; // addresses to email pdf to $from = "sent_from@domain.com"; // 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."; }
-
==============================
10.
나는 내 자신의 이메일 보내기 / 인코딩 기능을 작성했다. 이것은 PDF 첨부 파일을 보내는 나를 위해 잘 작동했습니다. 프로덕션에서 다른 기능을 사용하지 않았습니다.
참고 : 헤더를 구분하기 위해 \ r \ n을 사용해야한다는 스펙이 매우 강하지 만, PHP_EOL을 사용할 때만 작동한다는 것을 알았습니다. 나는 리눅스에서만 이것을 테스트했다. 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' => 'noreply@foo.com', # 'to' => 'jason@jasonwoof.com', # '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' => 'noreply@foo.com', # 'to' => 'jason@jasonwoof.com', # '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' => 'noreply@foo.com', # 'to' => 'jason@jasonwoof.com', # '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' => 'noreply@foo.com', # 'to' => 'jason@jasonwoof.com', # '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' => 'noreply@foo.com', # 'to' => 'jason@jasonwoof.com', # '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' => 'noreply@foo.com', # 'to' => 'jason@jasonwoof.com', # '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); }
-
==============================
11.
$to = "to@gmail.com"; $subject = "Subject Of The Mail"; $message = "Hi there,<br/><br/>This is my message.<br><br>"; $headers = "From: From-Name<from@gmail.com>"; // 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);
-
==============================
12.
이 페이지에서 코드 복사 - 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 = "my@mail.com"; $my_replyto = "my_reply_to@mail.net"; $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, "recipient@mail.org", $my_mail, $my_name, $my_replyto, $my_subject, $my_message); ?>
그는 자신의 페이지에 대한 자세한 내용을 알고 의견 섹션에 몇 가지 문제에 답합니다.
-
==============================
13.
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 = "info@companyname.com"; // GMAIL username $mail->Password = "mailPassword"; // GMAIL password $mail->SetFrom('info@companyname.com', 'new application submitted'); $mail->AddReplyTo("name@yourdomain.com","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 = 'info@companyname.com'; $mail->AddAddress($address, "companyname"); $mail->AddAttachment($_FILES['file']['tmp_name'], $_FILES['file']['name']); // attachment if (!$mail->Send()) { /* Error */ echo 'Message not Sent! Email at info@companyname.com'; } else { /* Success */ echo 'Sent Successfully! <b> Check your Mail</b>'; } }
첨부 파일과 함께 보내는 Google smtp 메일에이 코드를 사용했습니다 ....
참고 : 여기에서 PHPMailer 라이브러리 다운로드 -> https://github.com/PHPMailer/PHPMailer
from https://stackoverflow.com/questions/12301358/send-attachments-with-php-mail by cc-by-sa and MIT lisence
'PHP' 카테고리의 다른 글
어떻게 PHP에서 다차원 배열을 정렬합니까 [duplicate] (0) | 2018.09.02 |
---|---|
PHP 짧은 태그를 활성화하는 방법? (0) | 2018.09.02 |
예를 들어 PHP에서 1 일 전, 2 일 전에 타임 스탬프를 시간으로 변환하는 중 ... (0) | 2018.09.02 |
경고 : mysql_fetch_array () : 제공된 인수가 유효한 MySQL 결과가 아닙니다. (0) | 2018.09.02 |
A 요소의 href 속성 가져 오기 (0) | 2018.09.02 |