Невозможно прочитать почтовое вложение PHP - PullRequest
0 голосов
/ 04 мая 2018

Я новичок в PHP, мне нужно создать форму, в которой пользователю предлагается ввести несколько полей и загрузить свое резюме. Когда он / она отправляет форму, его / ее представления должны быть отправлены мне по электронной почте с его / ее резюме в качестве приложения к электронному письму. Я использовал PHP для отправки электронной почты с помощью функции php mail. Все отлично работает, за исключением того, что файл вложения не умеет читать. Пожалуйста, смотрите скриншот прилагается. https://imgur.com/a/UnUOyDR
Также загруженный файл находится в формате odt. Мне нужно, чтобы пользователи загружали все типы форматов резюме.

Я публикую Основную часть Кодекса. Пожалуйста, поправьте меня, если я ошибаюсь

if ($_POST['submit_x']) {

            $cand_name = trim($_POST['cand_name']);
            $appl_email = $_POST['email'];

            $target_dir = "/home/test/public_html/new/job/hr/Resume/";
            $file = $_FILES['my_file']['name']; // Resume-Test.odt
            $path = pathinfo($file);
            $ext = $path['extension']; // odt
            $temp_name = $_FILES['my_file']['tmp_name']; // /tmp/phpqkLeuL
            $path_filename_ext = $target_dir.$file.".".$ext;
            move_uploaded_file($temp_name,$path_filename_ext);


            $mailto = 'robert.k1254@gmail.com';
            $subject = 'Subject';
            $message = 'My message';

            $content = file_get_contents($path_filename_ext);
            $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=\"" . $file . "\"" . $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() );
            }
   } 



   <input type="file" name="my_file" /><br /><br />

1 Ответ

0 голосов
/ 04 мая 2018

Если вы делаете это с помощью функции PHP mail (), трудно находить ошибки. Загрузите скрипт PHPMailer отсюда: http://github.com/PHPMailer/PHPMailer и включите основной файл скрипта.

<?php
$email = new PHPMailer();
$email->From      = 'From mail id';
$email->FromName  = 'from name';
$email->Subject   = 'Subject of message';
$email->Body      = $bodytext;//body of the subject
$email->AddAddress( 'receiver email id' );

$file_path = 'path of the file you want to attach';

$email->AddAttachment( $file_path , 'filename' );

return $email->Send();
?>
...