Как отправить файл php mail

Как отправить файл php mail

(PHP 4, PHP 5, PHP 7, PHP 8)

mail — Отправляет электронную почту

Описание

Отправляет электронную почту.

Список параметров

Получатель, или получатели письма.

Тема отправляемого письма.

Тема должна соответствовать » RFC 2047.

Каждая строка должна быть отделена символом CRLF (\r\n). Строки не должны быть длиннее 70 символов.

(Только для Windows) Если PHP передаёт данные напрямую SMTP-серверу и в начале строки стоит точка, то она будет удалена. Чтобы избежать этого замените все такие точки на две.

Строка или массив, которые будут вставлены в конец отправляемых заголовков письма.

Обычно используется для добавления дополнительных заголовков (From, Cc, and Bcc). Несколько дополнительных заголовков должны быть разделены CRLF (\r\n). Если для составления этого заголовка используются внешние данные, то они должны быть проверены для избежания инъекций нежелательных заголовков.

Если передан массив, то его ключи будут именами заголовка, а значения значениями.

До PHP 5.4.42 и 5.5.27, параметр additional_headers не имел защиты от инъекции. Так что пользователи должны удостовериться, что передаваемые заголовки безопасны и содержат только заголовки. т.е. не содержат несколько переводов строк подряд, что стартует тело сообщения.

Если сообщения не отправляются, попробуйте использовать только LF (\n). Некоторые агенты пересылки сообщений Unix (особенно » qmail) автоматически заменяют LF на CRLF (что приводит к двойному CR, если использовалось CRLF). Используйте эту меру в крайнем случае, так как это нарушает » RFC 2822.

Так как escapeshellcmd() применяется автоматически, то нельзя использовать некоторые символы, допустимые к использованию в email-адресах некоторыми RFC. mail() не допускает такие символы, поэтому в программах, в которых они требуются, рекомендуется использовать альтернативы для их отправки (например фреймворки или библиотеки).

Возвращаемые значения

Важно заметить, что то что письмо было принято для передачи вовсе НЕ означает что оно достигло получателя.

Список изменений

ВерсияОписание
7.2.0Параметр additional_headers может принимать значения типа массив.

Примеры

Пример #1 Отправка письма.

Использование функции mail() для отправки простого письма:

// Сообщение
$message = «Line 1\r\nLine 2\r\nLine 3» ;

Пример #2 Отправка письма с дополнительными заголовками.

Добавление простых заголовков, сообщающих почтовому агенту адреса From и Reply-To:

Пример #3 Отправка письма с дополнительными заголовками, переданными массивом

В этом примере посылается то же письмо, что и в примере выше, но дополнительные заголовки задаются массивом (доступно с PHP 7.2.0).

Пример #4 Отправка письма с дополнительными аргументами командной строки.

Пример #5 Отправка HTML-сообщения

С помощью функции mail() также можно отправить и HTML-письмо.

// несколько получателей
$to = ‘johny@example.com, sally@example.com’ ; // обратите внимание на запятую

// тема письма
$subject = ‘Birthday Reminders for August’ ;

// текст письма
$message = ‘

Birthday Reminders for August

Источник

Отправка файла по e-mail на PHP

Как отправить файл php mail

В этой статье я собираюсь осветить тему отправки файлов по e-mail на PHP. Задача эта весьма популярная, а вот многие не знают, как это делается и научились только отправлять обычные письма без вложенных файлов. Этот пробел я постараюсь заполнить.

Я написал скрипт, который Вы смело можете копировать и использовать в своих скриптах. Данный код позволяет отправлять файлы по e-mail через PHP:

Скрипт достаточно хорошо прокомментирован, но я добавлю ещё один важный момент. Обратите внимание, что если идут вложенные файлы, то текст письма нужно тоже делать, как прикрепление к письму, однако, тип содержимого будет другой. Это весьма серьёзная особенность, если не сделать так, то текст письма отправлен не будет. Это очень частая ошибка, поэтому обратите на это особое внимание.

Данный PHP-скрипт для отправки файлов по e-mail сделан максимально коротким, он универсален, поэтому Вы можете его дорабатывать под свои нужды так, как пожелаете.

Как отправить файл php mail

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Комментарии ( 19 ):

Михайл Русаков ;). Со светлым Рождеством Христовым! Я тебя очень прошу каждые исходники и добавить и покажи «Результат данного примера показан» например как у htmlbook.ru Я тебя предлагаю мое мнение это удобно видеть примеры и все будет понял. Заранее спасибо большое ;). Удачи.

У вас ошибочка! Написано «Данная код» Вы наверное имели ввиду «Данный код»

Михаил здравствуйте, я хочу спросить, как можно отправлять несколько файлов. Очень надо. Заранее спасибо!

Чтобы не изобретать велосипед, можете воспользоваться готовым классом наподобие PHPMailer, который это уже умеет.

Как-то много долбался с этой ерундой, никак не собиралась работать. У формата email довольно жёсткий стандарт и все пересылаемые файлы кодируются в текстовом виде, запутаться легко. Кстати boundary не стоит делать слишком простым, иначе если эта последовательность попадётся в сегментах сообщения, то он решит, что это очередной разрыв и порвёт письмо.

Михаил! Сделайте пожалуйста форму html для представленного здесь php обработчика, чтобы его можно было использовать или адаптировать под свои нужды. Такой код без примера html использовать могут только более менее знающие програмисты, а для начинающего разобраться без наглядного примера сложновато..

Вот форма и скрипт, они должны быть в разных файлах, в action нужно вставить имя файла со скриптом, если он будет не в одной директории с формой то прописать полный путь. Форма: А это немного переделанный скрипт, так как форма уже была и я подогнал по неё скрипт и дописал вывод сообщения при отправке или ошибке.

А если нужно присоединить сообщение к оправке данных с полей формы, но только после действия (нажатия определённой кнопки) на другой странице сайта? И только после присоединения сообщения отправить. Как это прописать в скрипте? Я в программировании совсем ничего не понимаю.

Михаил, спасибо за скрипт. Давно уже мучает такой вопрос, и не только меня наверное. Почему с сайта письма попадают в спам на gmail или бывает совсем не приходят? На все остальные почтовые сервисы письма приходят нормально.

И ещё проблема. Ваш скрипт хорошо работает, но текст присылается со знаками вопросами ))) в ромбиках чёрных Что посоветуете?

Как именно? Кодировка UTF-8 стоит, сам файл тоже в ней.

Здравствуйте, Не могу понять где универсальность скрипта. Почему прописано имя файла «form.txt» и соответственно на почту приходит файл с этим именем. Как сохранить оригинальное имя файла (то что было на момент отправики)? Вопрос 2: почему приходит файл нулевого размера?

Здравствуйте Михаил! Подскажите пожалуйста как прописать, что бы отправка имела такой вот вид http://rghost.ru/7bRSxGzVb/image.png При выборе отправляло данный файл! Спасибо!

Добрій вечер. Мучает один вопрос. Почему когда приходит сообщение на єлектронную почту, то оно отображается как файл «noname.txt»? Как можно сделать, чтобы отображалось как текст или как изменить «noname» на другое назнавание? Спасибо

Ищу как мне сделать скрипт на товарный одностраничник с апселлом. У вас самое толковое объяснение, как отправлять сообщения на почту. Но мне нужно: 1. Отправляем на ЛОГИН@yandex.ru 2. Считываем данные с полей формы Имя и Телефон 3. При нажатии кнопки «Отправить» на форме, перебрасывает на дополнительную страничку upsell.php. НО ПРИ ЭТОМ ДАННЫЕ С ПОЛЕЙ ФОРМЫ НЕ ОТПРАВЛЯЮТСЯ НА Е-МЭЙЛ, А СОХРАНЯЮТСЯ-ОЖИДАЮТ КОМАНДЫ ОТПРАВКИ. 4. На странице с апселлом есть 2 кнопки (нет никакой формы): а) если покупатель жмёт кнопку «Добавить в посылку», то вступает в дело функция отправки сообщения mail с собранными данными с полей формы и добавляется название дополнительного товара. Это всё выражается в конечном итоге в виде сообщения на е-мэйл Имя: Телефон: Название дополнительного товара. б) если покупатель жмёт кнопку «Отказаться», то вступает в дело функция отправки сообщения mail с собранными данными с полей формы, но уже без добавления дополнительного товара. Это всё выражается в конечном итоге в виде сообщения на е-мэйл Имя: Телефон:

Здравствуйте,Михаил.Не могли бы Вы подсказать как можно организовать следующее.Мне нужно что бы человек,на моем сайте,выбрав нужный видеофайл смог бы сразу послать его на указанный им E-mail без скачивания файла на свой компютер.Файлы не большого размера 2-6мб.Буду рад любым подсказкам.

Код содержит множество ошибок: Неправильный перенос строки, неверный разделитель, отсутствие кодирования письма. http://prntscr.com/jgwp7m

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.

Источник

Вменяемая инструкция к PHPMailer “Отправка писем и файлов на почту”

Как отправить файл php mail

Apr 23, 2019 · 4 min read

Как отправить файл php mail

PHPMailer обновился и инструкция к прошлой версии не актуальна, хотя вы также можете использовать прикреплённые файлы в той инструкции. Работать будет.

Прошло несколько лет, но у вас всё также нет выхода, и PHPMAILER — это самый простой способ отправлять со своего сайта письма на почту.

Как отправить файл php mail

О чем эта инструкция.

Это инструкция по добавлению на ваш сайт PHPMailer и отправки писем с прикреплёнными файлами к вам на почту без перезагрузки страницы.

1. Скачиваем PHPMailer

Переходим на сайт https://github.com/PHPMailer/PHPMailer и скачиваем последнюю версию

Как отправить файл php mail

Во всём архиве нам нужны только 3 файла:

Всё остальн о е, что хранится на Github — на*уй не нужно, можете удалять.

2. Удаляем из файлов весь хлам

Этот пункт вы можете пропустить. Он не является обязательным

Файлы, написанные разработчиками PHPMailer, содержат немереное количество мусора, состоящего из одних комментариев (зачем?!). Вес этих трёх файлов вместе с комментариями равен 196кб, после удаления комментов вес составит 72кб. Почти в 3 раза…

Я предлагаю удалить все комментарии в файлах с помощью какого-нибудь “PHP минификатора”. Можете использовать любой, я взял (первый попавшийся) http://php-minify.com

Процедуру повторяете со всеми тремя файлами.

Для наглядности файл Exception.php

Как отправить файл php mail

3. Перемещаем файлы в проект

И теперь помещаем эти 3 файла в наш проект. Я создал специально для этих файлов папку под названием phpmailer

Как отправить файл php mail

4. Создаём файл конфигурации

Создадим файл send.php с таким содержанием

Здесь вам нужно отредактировать эти поля под себя:

Нужно использовать не пароль от самой почты, а “Пароль приложения”. В настройках вашей почты, будь то Gmail, Yandex или Mailru— есть раздел “Пароли приложений”, где вы можете специально создать отдельный сгенерированный пароль для PHPMailer.

Сохраняем этот файл send.php и помещаем его в корень сайта

В примере указаны настройки для Яндекса. Вы можете использовать любую почту для отправки. Для изменения почты отправки, к примеру, на Gmail — нужно изменить эти поля:

$mail->Host = ‘smtp.gmail.com’; // SMTP сервер
$mail->SMTPSecure = ‘ssl’; // шифрование
$mail->Port = 465; // Порт

5. Создаём HTML форму

Теперь поместим эту форму в нужное место на вашем сайте

Обратите внимание на onsubmit. Там вторым аргументом должно быть указано имя файла, то есть send.php.

6. Прописываем JavaScript

Источник

Отправка писем при помощи PHP-Прикрепление файла

Письмо, содержащее прикрепленный файл, несколько отличается от простого.
В нем добавляются некоторые заголовки, и немного меняется само построение,
хотя несомненно само письмо остается текстовым файлом. Но давайте все по порядку.

Одна из особенностей — наличие заголовка mime-version.
Этот заголовок указывает стандарт, которому соответствует тело сообщения.
Сообщения, соответствующие mime обязаны содержать такое поле заголовка со следующим текстом:
mime-version: 1.0

Если мы хотим отослать письмо с прикрепленными файлами, то необходимо использовать заголовок content-type: multipart/mixed, который обозначает, что письмо состоит из нескольких частей, каждая из которых содержит свой заголовок content-type. Для обозначения границы этих частей необходимо использовать параметр boundary, который еще называется маркером границы.
Значением этого параметра может служить любая строка. Но надо учесть, что она должна быть уникальной и не встречалась в теле письма. Иначе письмо может быть неправильно разбито на части.

from: «uspenskii evgeny»
to: user@domain.ru
subject: hello
mime-version: 1.0
content-type: multipart/mixed; boundary=»spravkaweb-12345″

При разделении письма на части перед маркером должны стоять два знака дефиса.
А последний маркер, который обозначает конец письма, должен содержать в конце два знака дефиса.
Для каждой части необходимо установить свои заголовки.
После заголовков необходимо поставить два знака перевода строки.

from: «uspenskii evgeny»
to: user@domain.ru
subject: hello
mime-version: 1.0
content-type: multipart/mixed; boundary=»spravkaweb-12345″
—spravkaweb-1234
content-type: text/plain; charset=»windows-1251″
content-transfer-encoding: quoted-printable

hi!
here’s that my file!

—spravkaweb-1234
content-type: application/x-rar-compressed; name=»file.rar»
content-transfer-encoding:base64
content-disposition:attachment

Если у нас идет часть с текстом, то надо заголовок content-transfer-encoding присвоить значение quoted-printable, либо 7bit, либо 8bit. Для части с файлом этот заголовок должен быть равен base64.

Заголовок content-disposition, присутствующий во второй части, указывает, как почтовой программе следует отобразить данную часть письма. Он может принимать значение attachment (этот участок не является частью письма, а просто прикреплен к нему в виде файла) и inline (включение, которое используется непосредственно в письме, например, картинка, вставляемая в html).

В первой части заголовком
content-type: text/plain; charset=»windows-1251″

указали, что это простой текст с кодировкой windows.
Во второй же части заголовком
content-type: application/x-rar-compressed; name=»file.rar»

указали, что тип файла — rar-архив, а имя файла — file.rar.
Если отправляем gif-картинку, его content-type будет выглядеть:
content-type: image/gif; name=»file.gif»

В случае, если заранее не известно, какой тип файла отправляем, или формат файла не является стандартным, следует заголовку content-type присвоить значение application/octet-stream.
content-type: application/octet-stream; name=»file.dat»

Для окончательного закрепления материала напишем функцию, которая отправляет письмо в
html-формате по указанному адресату с прикрепленным файлом:

Источник

Отправка mail() в php

Рассмотрим, как отправить почтовое сообщение с помощью php функции mail(). В данной статье мы создадим максимально «белую» отправку, чтобы ваше письмо не попало в папку «Спам».

Какие мы решим возможные проблемы:

При создании нашего php кода для отправки функции mail() мы учтём моменты выше, чтобы минимизировать процент попадания письма в папку «Спам».

Создание файла mail.php и основных переменных

Создадим в корне сайта файл mail.php и добавим в него следующий код.

Мы создали 4 переменных:

Формирование текстовой версии письма (text/plain) и таблицы для HTML-версии

Таким образом, мы обработали полученные с фронтенда данные формы.

Доработка HTML-версии почтового сообщения

Создание заголовков почтового письма

Сформируем заголовки в виде массива (для PHP >= 7.2).

Формирование итогового сообщения письма

Собираем воедино сообщение, которое будем использовать для отправки 3 параметром функции mail().

На что стоит обратить внимание:

Желательно чтобы заголовки From, Reply-To и Return-Path совпадали.

Отправка mail() в php с проверкой

Все необходимые переменные для заполнения параметров мы подготовили, осталось отправить письмо и в случае ошибки вернуть сообщение об этом.

Итоговый код

В результате наш mail.php должен выглядеть примерно так:

PHP_ORIG_SCRIPT

Для удаления заголовка X-PHP-Originating-Script существует 2 способа
(если знаете ещё, поделитесь в комментариях):

Чтобы не попасть в папку спам мы сделали всё от нас зависящее.
Остальные настройки вам необходимо делать на сервере: SPF, DKIM, DMARC, PTR.

Надеюсь, вам понравилась данная информация. Если вам интересна тема web-разработки, то можете следить за выходом новых статей в Telegram.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *