Загрузить файл php mail - PullRequest
       1

Загрузить файл php mail

0 голосов
/ 01 сентября 2010

Я использую функцию mail() на своей странице обратной связи.

Есть 3 поля: Имя, Почта и Сообщение .

Хотите добавить новое поле - Файл , с возможностью загрузки файлов и отправки их на мою электронную почту.

Некоторые ограничения:

  1. .zip и.rar разрешены только файлы
  2. размер файла не может превышать 200kb.

Как это сделать и предотвратить дыры в безопасности?

Ответы [ 2 ]

2 голосов
/ 01 сентября 2010

Вы можете использовать эту функцию:

    function mail_file( $to, $subject, $messagehtml, $from, $fileatt, $replyto="" ) {
            // handles mime type for better receiving
            $ext = strrchr( $fileatt , '.');
            $ftype = "";
            if ($ext == ".doc") $ftype = "application/msword";
            if ($ext == ".jpg") $ftype = "image/jpeg";
            if ($ext == ".gif") $ftype = "image/gif";
            if ($ext == ".zip") $ftype = "application/zip";
            if ($ext == ".pdf") $ftype = "application/pdf";
            if ($ftype=="") $ftype = "application/octet-stream";

            // read file into $data var
            $file = fopen($fileatt, "rb");
            $data = fread($file,  filesize( $fileatt ) );
            fclose($file);

            // split the file into chunks for attaching
            $content = chunk_split(base64_encode($data));
            $uid = md5(uniqid(time()));

            // build the headers for attachment and html
            $h = "From: $from\r\n";
            if ($replyto) $h .= "Reply-To: ".$replyto."\r\n";
            $h .= "MIME-Version: 1.0\r\n";
            $h .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
            $h .= "This is a multi-part message in MIME format.\r\n";
            $h .= "--".$uid."\r\n";
            $h .= "Content-type:text/html; charset=iso-8859-1\r\n";
            $h .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
            $h .= $messagehtml."\r\n\r\n";
            $h .= "--".$uid."\r\n";
            $h .= "Content-Type: ".$ftype."; name=\"".basename($fileatt)."\"\r\n";
            $h .= "Content-Transfer-Encoding: base64\r\n";
            $h .= "Content-Disposition: attachment; filename=\"".basename($fileatt)."\"\r\n\r\n";
            $h .= $content."\r\n\r\n";
            $h .= "--".$uid."--";

            // send mail
            return mail( $to, $subject, strip_tags($messagehtml), str_replace("\r\n","\n",$h) ) ;

        }

http://www.barattalo.it/2010/01/10/sending-emails-with-attachment-and-html-with-php/

2 голосов
/ 01 сентября 2010

Чтобы узнать о загрузке файлов, см. Обработка загрузки файлов в руководстве по PHP

Для отправки электронной почты с вложениями хорошей идеей будет использование PHP-класса, например Swiftmailer вместо mail().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...