Отправка E-mail с вложением

Опубликовано 2013.07.25 в разделе Php

Для того, чтобы отправить письмо с вложением - создайте функцию со следующим содержанием:
  1. function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
  2. $file = $path.$filename;
  3. $file_size = filesize($file);
  4. $handle = fopen($file, "r");
  5. $content = fread($handle, $file_size);
  6. fclose($handle);
  7. $content = chunk_split(base64_encode($content));
  8. $uid = md5(uniqid(time()));
  9. $name = basename($file);
  10. $header = "From: ".$from_name." <".$from_mail.">\r\n";
  11. $header .= "Reply-To: ".$replyto."\r\n";
  12. $header .= "MIME-Version: 1.0\r\n";
  13. $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
  14. $header .= "This is a multi-part message in MIME format.\r\n";
  15. $header .= "--".$uid."\r\n";
  16. $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
  17. $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
  18. $header .= $message."\r\n\r\n";
  19. $header .= "--".$uid."\r\n";
  20. $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here
  21. $header .= "Content-Transfer-Encoding: base64\r\n";
  22. $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
  23. $header .= $content."\r\n\r\n";
  24. $header .= "--".$uid."--";
  25. if (mail($mailto, $subject, "", $header)) {
  26. echo "Письмо отправлено"; // or use booleans here
  27. } else {
  28. echo "Ошибка отправки";
  29. }
  30. }
  31. </".$from_mail.">
И чтобы её использовать - используйте следующий код:
  1. $to_mail = 'to-user@example.com'; // кому письмо
  2. $my_file = 'attachment.zip'; //имя фала
  3. $my_path = $_SERVER['DOCUMENT_ROOT'].'/files/'; //путь до папки с файлом
  4. $my_name = 'Имя отправителя';
  5. $my_mail = 'admin@example.com'; // email отправителя
  6. $my_replyto = ''; // копия
  7. $my_subject = 'Письмо с вложением.';
  8. $my_message = 'Привет,\r\nУ меня получилось отправить письмо с вложением прямо из PHP)))';
  9. mail_attachment($my_file, $my_path, $to_mail, $my_mail, $my_name, $my_replyto, $my_subject, $my_message);
Код проверенный и рабочий. Возможно вам пригодится код php форм.

4 Комментариев

Оставить комментарий

  1. Гость 2014/12/09

    а сложно написать где создавать именно фунцию? и где использовать код?

    Ответить

    1. Админ 2014/12/09

      Объявить функцию нужно в модуле. Который нужно предварительно создать. Как это сделать.
      А вызывать её там где нужно. В каком-нибудь хуке, например или любой другой функции, которую вы напишите.

      Ответить

      1. Гость 2016/01/31

        Все работает, но на почту приходит файл пустым. В чем проблема?

        Ответить

        1. Админ 2016/02/02

          Что за файл?
          Путь к файлу правильно указываете?

          Ответить

Ваш комментарий успешно создан

Ваш комментарий

  • Для выделения кода оберните его в тэги <code> и </code>
  • Отметьте газету