Как отправить электронную почту с помощью PHP-скрипта PHP


Оглавление (нажмите, чтобы открыть):

Отправить PDF по электронной почте с PHP Script

Я видел другие вопросы / ответы в StackOverflow, но я не могу на всю жизнь заставить это работать правильно, и мне действительно любопытно увидеть, что я делаю неправильно.

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

У меня есть PHP-скрипт, который отправляет PDF, но он не сохраняет данные формы (имена, адреса и т. Д.). Это только отправка пустого PDF. Вот код:

Я ценю любой вклад / обратную связь. Я думал об использовании PHPMailer, но я думаю, что это на 99% сделано, и мне любопытно посмотреть, чего там не хватает?

(Файл PDF был создан с помощью Word, а затем с помощью Adobe Acrobat Pro все поля ввода и кнопка отправки была создана, кнопка отправки указывает на PHP-скрипт, который отправляет PDF)

Можно ли отправить электронную почту с помощью PHP-скрипта и HTML-формы с помощью localhost? [Дубликат]

Я пытаюсь отправить почту с localhost. но я не могу отправить почту с localhost, так что кто-нибудь скажет мне, как перенастроить мой xampp для отправки почты с localhost

9 ответов

Вы должны настроить SMTP на своем сервере. Вы можете бесплатно использовать G Suite SMTP Google:

Подробнее о PHPMailer здесь .

Для людей в окнах 8, если вы хотите это сделать, я бы действительно рекомендовал прочитать этот учебник, который я нашел: https://yogeshchaugule.com/blog/2013/configure-sendmail-wamp

Не написано мной, но после того, как я ударил головой в бетонную стену в течение 2,5 часов, не получив этого, чтобы работать с такими странными ошибками, как:

  • Время ожидания соединения.
  • Соединение закрыто. Изящно.

Наконец-то я нашел, что учебник был посвящен установке https://www.stunnel.org/downloads.html и конфигурация Stunnel. Наконец он работал.

В XAMPP v3.2.1 для тестирования вы можете увидеть электронные письма, которые XAMPP отправляет в XAMPP / mailoutput. В моем случае в Windows 8 это не требовало дополнительной настройки и было простым решением для проверки электронной почты

Вы можете проверить отправку почты на своем ПК без Интернета

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

Просто запустите его и попробуйте отправить тестовую почту:

, и вы увидите это:

Надеюсь, у вас будет хороший день. вы можете найти меня на Youtube для получения большего урока Piseth Sok

просто потратил более часа, пытаясь сделать эту работу. для всех, у кого есть те же проблемы со всеми предложениями, которые не работают: вы должны перезапустить Apache в своем интерфейсе XAMPP! просто перезапуск XAMPP не работает !!

Вы можете отправлять почту с localhost с помощью пакета sendmail, пакет sendmail встроен в XAMPP. Поэтому, если вы используете XAMPP, вы можете легко отправлять почту с localhost.

, например, вы можете настроить C:\xampp\php\php.ini и c:\xampp\sendmail\sendmail.ini для gmail для отправки почты.

в C:\xampp\php\php.ini найдите extension=php_openssl.dll и удалите точку с запятой в начале этой строки, чтобы заставить SSL работать в gmail для localhost.

в файле php.ini найти [mail function] и изменить

Теперь откройте C:\xampp\sendmail\sendmail.ini . Замените весь существующий код в sendmail.ini следующим кодом

Теперь вы сделали !! создайте файл php с функцией почты и отправьте почту с localhost.

PS: не забывайте заменять my-gmail-id и my-gmail-пароль в приведенном выше коде. Кроме того, не забудьте удалить дубликаты ключей, если вы скопировали настройки сверху. Например, следующая строка комментария, если в файле php.ini есть файл sendmail_path: sendmail_path=»C:\xampp\mailtodisk\mailtodisk.exe»

Также не забудьте перезапустить сервер с помощью панели управления XAMMP, чтобы изменения вступили в силу.

Для gmail проверьте https://support.google.com/accounts/answer/6010255 , чтобы разрешить доступ к менее защищенным приложениям.

Чтобы отправить письмо по Linux (с пакетом sendmail) через Gmail с localhost, пожалуйста, проверьте PHP + Ubuntu Отправьте электронное письмо с использованием формы gmail localhost .

Каким способом отправлять почту из PHP?

Доброго времени суток! Реализую сейчас на сайте простейшую HTML форму, которая собирает данные и отправляет их письмом на определенный адрес. Написал код следующего вида:

Письмо отправлялось и доходило. Все было нормально кроме того, что оно постоянно попадало в папку «спам». Чтобы исправить это, создал почтовый домен у хостера, ящик вида info@example.ru и активировал все функции, которые уменьшали вероятность попадания в спам (SpamAssassin, DKIM, DMARC и SSL). После этого проверил письмо в mail-tester, который выдал 1.6 балла и показал, что заголовок Return-Path содержит адрес, который вообще никак не относится к этой форме. Как выяснилось позже, он брался из файла php.ini. Поменял в нём параметр sendmail_path на /usr/sbin/sendmail -t -i -f info@example.ru и всё заработало как надо. Письма теперь не летят в спам, отлично.

Но отсюда сразу же возникло пару вопросов:
1. Как быть, если на этом же сервере расположен другой сайт с другим доменом и с него нужно тоже отправить письмо?
2. Прочитал, что есть специальная библиотека PHPMailer, которая может отправлять письма через сторонние SMTP серверы. Что это вообще такое и стоит ли её использовать для этого?
3. И какой вообще способ из этих двух лучше использовать для простой отправки писем с сайта? Внешние SMTP серверы чем-то принципиально лучше или хуже, чем стандартная функция mail()?

Как отправить электронное письмо с помощью PHP скрипт?

Когда я пытаюсь выполнить этот PHP скрипт я получаю эти ошибки

Я знаю, что поставленный выше вопрос можно дублировать из них

Но его не working.My PHP версия 5.3.4 Xampp 1.7.4 версия.

Но это показывает предупреждение о том, что недостающие заголовки.

Как отправить электронную почту с помощью скрипта PHP?

Можно ли отправить по электронной почте без использования аутентификации в PHP? Поскольку vb.net использует проверку подлинности сервера, но большая часть кода я нашел на Google без аутентификации для PHP. так что я получил сомнение

Наконец, пожалуйста, помогите мне с этим пытается от 2-х часов или около того!

Функция PHP почты () для отправки почты через Sendmail. Если вы хотите использовать некоторые SMTP — сервер, вы можете использовать Zend_Mail , что делает эту вещь очень легко: https://framework.zend.com/manual/en/zend.mail.html

Использование Zend_Mail вам нужно только написать что-то вроде этого:

Выше выполняет проверку подлинности для вас и отправляет почту.

Как отправить электронную почту с помощью PHP-скрипта PHP

PHP — это инструмент, который вы можете использовать для быстрого выполнения задач в Интернете. Отправка электронной почты с помощью скрипта PHP — одна из тех задач.

Отправка письма PHP-скриптом

Все, что требуется, это правильная конфигурация (для отправки почты с использованием локального или удаленного сервера) и одна функция:

Пример отправки письма

Первая переменная этой функции — получатель, вторая переменная — тема сообщения, а третья переменная — сам текст сообщения.

Мастер Йода рекомендует:  Инструменты Python лучшая шпаргалка для начинающих

Для того, чтобы отправить письмо, необходимо создать файл в текстовом редакторе, вставить этот код и сохранить с расширением .php, после чего поместить файл на свой сервер и запустить в браузере через командную строку.

Как настроить почту или отправка Email PHP

Вступление

Функция PHP mail() предназначена для отправки электронной почты средствами PHP, иными словами – отправка email PHP. Это удобно, если вы хотите создать форму контактов на вашем сайте. С функцией PHP mail() электронные письма или email могут быть отправлены при помощи простого PHP-скрипта. В этом руководстве вы узнаете, как производится отправка email PHP и протестируете функцию PHP mail().

Что понадобится

Прежде, чем приступить к действиям из руководства, проверьте наличие:

  • Доступ к вашему хостинг аккаунту
  • Включённая функция PHP mail()

Шаг 1 – Создание нового файла PHP

Первым делом, нужно создать PHP-файл на вашем хостинг аккаунте. Ваш PHP-файл должен быть доступен по имени домена, следовательно, его нужно разместить в директории public_html. Для создания файла можете использовать File Manager или FTP client. Назовите свой файл testmail.php.

Шаг 2 – Редактирование PHP-файла

Теперь разместите следующий код внутри файла testmail.php:

  • Первые две строки включают сообщения об ошибках, таким образом вы сможете увидеть, если скрипт содержит ошибки и не запускается.
  • $from – адрес отправителя email-а. Многие хостинг-провайдеры не разрешают использовать случайный email-адрес, поэтому вам нужно ввести email-адрес, созданный для вашего доменного имени в этом поле для успешной авторизации и отправки писем.
  • $to – адрес получателя email-а. Если вы отправляете email для проверики, то здесь должен быть ваш собственный email адрес.
  • $subject – тема электронного письма.
  • $message – содержимое сообщения email-а.
  • $headers – у каждого email-а есть заголовки. Они содержат важную информацию, такую как От (From) email-адрес.
  • mail($to,$subject,$message, $headers) – это функция PHP, которая выполняет отправку писем. Ничего не изменяйте в этой строке.
  • echo “Ваше email сообщение успешно отправлено.” – PHP функция echo отобразит сообщение на экране, как только скрипт успешно отработает.

Шаг 3 – Запуск скрипта и отправка email PHP

Если (как это рекомендовалось выше) вы разместили PHP-скрипт в директории public_html, вы можете запустить скрипт путем доступа по адресу yourdomainname/testmail.php. Если вы видите сообщение Ваше email сообщение успешно отправлено. в вашем браузере – это значит, что email отправлен успешно и вы можете проверит его во входящих письмах вашей электронной почты (не забудьте проверить папки SPAM/JUNK).

Если вы получили какую либо ошибку, проверьте все ли детали вы заполнили правильно. Если ошибка не появилась в барузере, вы можете проверить файл error_log в вашем аккаунте. Если вы не уверенны в том, как проверять этот файл посмотрите руководство по ссылке error logs.

Заключение

Теперь вы знаете как происходит отправка email PHP. Хотя это руководство предназначено для тестирования, такой же синтаксис можно использовать для разработки контактной формы на вашем сайте. Однако, если вам понадобится более сложная отправка email PHP, то скрипты для этого можно поискать здесь: PHPMailer project. В проекте есть встроенная поддержка SMTP, обширный error_logs на 47 языках и много других полезных функций.

Скрипт отправки почты на PHP

Введение. Значение почтовых писем

Без почты никуда. Именно по почте мы получаем «волшебные» письма подтверждения на сервисах различных родов и мастей. Именно на почту приходят письма «обратной связи». Практически ни одно веб-приложение или веб-сайт ни обходятся без отправки почты. Поэтому, можно сказать, что отправка почты на php является актуальной проблемой среди программистов и разработчиков. PHP отправка почты не случайна, ведь практически все динамические сайты используют этот язык программирования. В этой статье я постараюсь объяснить, как написать правильный скрипт отправки почты на php, минуя частые ошибки программирования в этой стезе.

Формат сообщения

Как и везде сейчас, в почтовых письмах тоже есть свои стандарты (форматы). Перед конструированием формы отправки необходимо ознакомиться с документами, освещающими стандарты отправки почты:

  • Основной документ оправки на английском языке — RFC 822
  • Документ, описывающий расширения — RFC 2045

Приведу пример готового к отправке сообщения, написанного в соответствии с обговоренными стандартами:

Популярные и всем известные почтовые клиенты (MS Outlook, например) используют именно такой формат для отправления сообщений. К слову, многие из клиентов предоставляют исходный код формата сообщений. Именно такого формата нам необходимо добиться для отправки почты на php.

Электронное письмо содержит две части: в верхней части размещаются заголовки, а в нижней — текст письма. Пустая строка разделяет эти части. Заголовки состоят из строк, в которых содержится тема письма (Subject), имя и адрес отправителя (From), получателя (To) и другая информация. В самом простом случае каждая строка содержит пару «ИмяЗаголовка: ЗначениеЗаголовка». Особенно необходимо подчеркнуть, что, согласно стандартам, в заголовках ни при каких обстоятельствах не должны содержаться русские символы.

Использование русских символов в заголовках

Так как русские символы недопустимы в заголовках, их необходимо закодировать. Стандарты, о которых мы уже упоминали, описывают способ кодирования «запрещенных» символов. Общий формат выглядит так:

Кодировка может быть любой из списка «windows-1251», «koi8-r», «utf-8» и т.д. Как правило, кодировка будет совпадать с той, в которой работает сайт. Таким образом, в большинстве случаев это будет «windows-1251» или «utf-8».
Способ кодирования указывает на то, каким именно образом русские символы будут преобразованы в безопасный набор. Способа определяется два: «Q-encoding» (обозначается одной буквой «Q») и «Base64» (обозначается одной буквой «B»).
К сожалению, функции, которая могла бы обычную строку преобразовать в Q-encoded текст, в PHP нет, зато есть функция, которая умеет выполнять аналогичное преобразование в Base64. Итак, PHP код правильного создания заголовка темы почтового сообщения может выглядеть следующим образом:

Здесь предполагается, что в переменной $_POST[«subject»] у Вас содержится тема почтового сообщения, записанная по-русски в кодировке windows-1251.
Адрес отправителя или получателя может быть записан в виде «user@php.net» или в виде «Имя пользователя user@php.net». Во втором случае имя пользователя необходимо преобразовать, как в предыдущем примере. Ниже приведен пример, где в переменной $_POST[«username»] содержится имя пользователя, а в переменной $_POST[«email»] — его электронный адрес:

Функция mail()

Отправка почтовых сообщений в большинстве скриптов выполняется системной функцией mail(). Описание синтаксиса функции mail всегда можно найти в оригинальном руководстве php. Эта функция принимает всего 5 параметров, из которых первые три являются обязательными, а последние два — опциональными:

  • to — Электронный адрес получателя сообщения
  • subject — Тема сообщения
  • message — Тело сообщения
  • additional_headers — дополнительные заголовки
  • additional_parameters — дополнительные параметры

На самом деле функция mail() просто формирует строку следующего вида:

Затем передает ее на обработку стандартной UNIX-команде отправки почты, которая носит имя /usr/sbin/sendmail. Сравнивая то, что выдает mail(), с тем, что должно получиться (см. пример выше), можно составить точный план подготовки переменных для передачи в функцию:

  1. Закодировать поле Subject с использованием base64, как в примере выше.
  2. Закодировать поле To.
  3. В случае необходимости создать $additional_headers, самостоятельно сформировав все необходимые заголовки (например, добавив поле «From:») и разделив эти заголовки парой символов «\r\n».


После этого сформированный набор параметров можно передавать на вход функции mail().

Работа над ошибками с помощью additional_parameters

Как уже упоминалось выше, функция mail() для отправки почты просто вызывает стандартную команду sendmail, при необходимости передавая ей дополнительные параметры. В каком случае может возникнуть необходимость их использования? Самый часто встречающийся случай — проблема с адресом отправителя. Этот адрес нередко изменяется функцией sendmail на адрес вида «имя_пользователя_на_сервере_хостинга@адрес_сервера_хостинга.ru». Чтобы избежать такого поведения, необходимо передать команде параметр «-femail@отправителя.ru» (обратите внимание на формат строки: «минус-эф», а затем без пробелов электронный адрес).

Защита от спама

Спамеры очень часто для рассылки используют плохо написанные формы отправки почты на PHP. Дело в том, что стандарт допускает использование нескольких получателей, которые могут быть перечислены через запятую в заголовке «To», а также использование произвольного количества специальных заголовков с именем «Сс» (копия) и «Bcc» (скрытая копия). Предположим, что в Вашей форме есть поле темы, которое без изменений транслируется в заголовок «Subject». Для того чтобы отправить произвольное сообщение на тысячу адресов, спамеру достаточно в поле Subject вписать примерно такой текст:

Мастер Йода рекомендует:  Как научиться разрабатывать игры подробная блок-схема

Таким образом отправляемое письмо будет дополнено заголовками «Cc» и почтовая программа, обнаружив все эти заголовки в тексте письма, примется рассылать его всем получателям из списка. Аналогичная ситуация и с переменными $additional_headers и $to — любое из них при удачном стечении обстоятельств может быть использовано злоумышленниками в своих интересах.
Борьба с этим явлением может вестись двумя способами:

  1. Проверка всего пользовательского ввода и фильтрация опасных символов (т.е символов «\r» и «\n»). Эти символы нужно либо заменять на пробелы, либо отказываться обрабатывать некорректно введенные параметры. Например, замену можно выполнить так:
  2. Выполнение кодирования Base64, помимо прочего, защищает и от спамеров, т.к. «вытягивает» закодированный текст в одну строку.

Отправка почты PHP просто

Существует два варианта упрощения жизни при работе с формой отправки почты.

  1. Использование готовых решений для отправки почты. В качестве примера можно привести класс PHPMailer, который легко позволяет реализовать все возможности, описанные выше, и еще целый ряд того, о чем не было упомянуто.
  2. Использование конструктора сайтов. Более подробную информацию о конструкторе можно найти по ссылке. Если говорить коротко, то конструктор позволяет без особого труда создать простой сайт, в который, в числе прочего, будет включена грамотная реализация формы отправки сообщений.

Мнение подобно костям —
у каждого свои

Форма отправки данных на почту с сайта html и php

  • размер шрифта уменьшить размер шрифтаувеличить размер шрифта
  • Печать
  • Эл. почта

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

В Интернете очень много подобных форм, но, мягко говоря, не все они рабочие. Трудно найти рабочий код отправки данных с сайта. Я нашел и немного его улучшил. Это только код! Стили Вам нужно будет подключить свои — это очень просто!

Первым делом Вам нужно создать пустой файл с именем send.php и не забывайте о кодировке, которую Вы используете. Удобнее всего использовать Notepad++ для работы с кодом.

В пустой файл send.php вставляете следующий код:

if(isset($_POST[‘submit’])) <
$to = » Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. ;; // Здесь нужно написать e-mail, куда будут приходить письма
$from = $_POST[’email’]; // this is the sender’s Email address
$first_name = $_POST[‘first_name’];
$subject = «Форма отправки сообщений с сайта»;
$subject2 = «Copy of your form submission»;
$message = $first_name . » оставил сообщение:» . «\n\n» . $_POST[‘message’];
$message2 = «Here is a copy of your message » . $first_name . «\n\n» . $_POST[‘message’];

$headers = «From:» . $from;
$headers2 = «From:» . $to;

mail($to,$subject,$message,$headers);
// mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender — Отключено!
echo «Сообщение отправлено. Спасибо Вам » . $first_name . «, мы скоро свяжемся с Вами.»;
echo «

Отлично! Пол дела сделано!

Теперь Вам нужно ставить html код на свой сайт, чтобы форма обратной связи появилась. Вот этот код:

Как видите, форма подключается к файлу send.php. По умолчанию файл send.php нужно поместить в корень Вашего сайта или прописать к нему другой путь.

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

Исходники формы отправки данных на почту с сайта html и php по этой прямой ссылке. Скачивайте и пользуйтесь на здоровье. Не забудьте изменить данные на свои!

Внимание!

У кого есть проблема с кодировкой (приходят кракозябры) в KOI8-R в почтовом клиенте Outlook, смотрите новую версию формы отправки писем на почту с решенной проблемой с кодировкой! Ну и вообще, новая версия более улучшенная!

Всем удачи и добра!

Макс Пуля

Приветствую! Присоединяйтесь к сообществу Epic Blog и выражайте свои мысли.

Последнее от Макс Пуля

Похожие материалы (по тегу)

20 комментарии

  • Комментировать Пятница, 12 Октябрь 2020 09:04 написал Макс Пуля

Советую использовать Новую форму отправки https://epicblog.net/19-web-development/novaya-forma-otpravki-dannykh-na-pochtu-s-sajta-s-v-outlook-html-i-php.html
В новой форме, чтобы добавить новое поле, в файле mail.php вот сюда:
/* Указываем переменные, в которые будет записываться информация с формы */
$first_name = $_POST[‘first_name’];
$email = $_POST[’email’];
$phone = $_POST[‘phone’];
$message = $_POST[‘message’];
$subject = «Форма отправки сообщений с сайта Epic Blog»;

Добавляете новую переменную из html, например address (адрес), получится так:

/* Указываем переменные, в которые будет записываться информация с формы */
$first_name = $_POST[‘first_name’];
$email = $_POST[’email’];
$phone = $_POST[‘phone’];
$address = $_POST[‘address’];
$message = $_POST[‘message’];
$subject = «Форма отправки сообщений с сайта Epic Blog»;

Затем, эту переменную добавляете сюда:
/* Переменная, которая будет отправлена на почту со значениями, вводимых в поля */
$mail_to_myemail = «Здравствуйте!
Было отправлено сообщение с сайта!
Имя отправителя: $first_name
E-mail: $email
Номер телефона: $phone
Текст сообщения: $message

Получится следующее:
/* Переменная, которая будет отправлена на почту со значениями, вводимых в поля */
$mail_to_myemail = «Здравствуйте!
Было отправлено сообщение с сайта!
Имя отправителя: $first_name
E-mail: $email
Номер телефона: $phone
Адрес отправителя: $address
Текст сообщения: $message

Ну и, конечно, нужно не забыть добавить в html код:

Ваш адрес: input type=»text» name=»address»

Если я добавлю новые поля в форму ХТМЛ, как их правильно прописать в PHP

Здравствуйте, использую вашу форму, решил добавить IP адрес пользователя который вызвал обратную связь, в письмо. Нашел код IP-адрес:$REMOTE_ADDR , куда его вставлять?

Как сделать так, чтобы после отправки формы остаться на той же странице ?

Не отправляет! какой адрес указывать в $from = ? И шрифт неправильный в сообщении отправлено.

Дорогие читатели! Специально для тех, у кого не приходят письма на почту — свежий архив с изменениями в строке $from — можно скачать по ссылке https://epicblog.net/download/form_new.zip
Только что проверил, письма приходят! Пробуйте! Если нет — обращайтесь к своему хостеру с претензией =)

Не идут сообщения, уважаемый автор. Пробовал почты и яндекс и gmail. Пишет, что сообщение отправлено, что всем спасибо, однако, сообщения не идут

Скрипт отправки письма php

Тема в разделе «Сделайте за меня», создана пользователем Dirol, 1 окт 2014 .

Возможно, у вас просто не настроен почтовый сервер.

при отправки почты пишет вот что ;

а это сама форма;

ФОРМА ОТБРАТНОЙ СВЯЗИ!

Интерфейс вижу, код не вижу.
И исправьте ошибки в тексте, что ли, что эта за «форма оТбратной связи!»?

Навскидку:
1. У вас может не вызываться сам скрипт. Вытащите его в отдельный файл, типа test_mail.php, вместо mail(. ) напишите var_dump(mail(. )) и посмотрите, что выведет, если этот test_mail.php открыть напрямую в браузере
2. Возможно, на хостинге какие-то ограничения на отправку почты
3. Возможно, на вашей@почте письмо уходит в спам (очень часто бывает)

а на локалке чего не поднять нужные сервисы?

да я только учусь. поэтому мне пока сложно разобраться с чего начать и как!

Добавлено спустя 1 минуту 39 секунд:

залить в каталоги к которым ваш пакет openserver предоставляет http-доступ и зайти в браузере по нужному адресу.

если честно я очень против всяких комплексов вроде денвера потому что он не позволяет вам думать. я году в 2005 тоже начинал с денвера, но уже году в 2006 понял что это не дает мне понять как всё это дело взаимодействует. в результате по манам, которые тут были выложены, сам поставил всё для wamp и сам потом руками правил конфиги. очень рекомендую пройти этот путь. и обязательно ознакомиться с rfc по основным технологиям с которыми так или иначе работаете.

Ребята куда прописать свою почту в скрипте?

в документации к функции mail() все четко написано. если куда письму лететь — в аргумент $to, если просто в письме прислать, то где-то в тексте аргумента $message. правильно?

$message, «From: mailtest@ » . $_SERVER[‘HTTP_HOST’] ); — правильно я вас понял?!

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

я вас не сильно оскорблю повторением чуть ранее озвученного вопроса?

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

нет, ты не понял. не денег я хочу. а чтоб ты голову включил. тут херова туча реализаций. возьми любую за основу, поковыряй и напиши сообщение не в стиле «взял топор. правильно делаю?» или «сжег корову. в том направлении двигаюсь?» или «прибил яйца к брусчатке. заработает?» а примерно такое:
* делаю: if()<. >else<. mail(); . >
* ожидаю: проверку формы и 1) форму если она криво заполнена и 2) письмо если она вроде правильно заполнена. при этом 2.1) учитываю результат отправки письма.
* имею: почему-то вместо моей формы открывается яндекс.ру и ничего не понятно.

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

если я что-то могу сделать сам я делаю сам. если не могу — оплачиваю специалиста. это рынок. иногда могу но все равно оплачиваю специалиста. это благотворительность.

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

Отправка почты

Автор: Артемьев Сергей Игоревич
ICQ: 438856621
email: _spin_@bk.ru

Очень часто на сайтах возникает необходимость отправить письмо администартору или клиенту. Сделать это можно двумя способами: на стороне клиента и на стороне сервера.

Для отправки почты со стороны клиента достаточно в HTML-код страницы добавить ссылку «mailto:» с указанием необходимого адреса:

Когда пользователь кликает по ссылке, браузер запускает почтовый клиент по-умолчанию и помещает указанный адрес в поле «Кому», так что пользователю достаточно написать текст и отправить письмо. Этот способ никак не связан с PHP, но пользоваться им иногда стоит. Кроме того, это единственный способ вызвать почтовый клиент с сайта, не поддеживающего исполнение скриптов.

Нас же интересует второй способ — отправка почтовых сообщений средствами PHP. В общем-то, для этого в PHP предусмотреда единственная функция — mail() , но вот способов использования её несколько. Прототип функции mail() выглядит следующим образом:

При отправке почты необходимо указать как-минимум три параметра: получателя, тему и текст сообщения.

В качестве адреся получателя «to» можно указывать как отдельный адрес, так и целый список, разделённый запятыми. Отдельный адрес может задаваться в следующих форматах «адрес» или «имя » :

Тема сообщение «subject» — это обычная строка. Единственное ограничение — строка не должна содержать символов перевода строки или возврата каретки («\n» и «\r»).

Тело сообщения «message» — это текст, который вы хотите отправить получателю. Строки сообщения должны разделяться переводом строки в Unix-стиле (LF), а каждая строка не должна быть длиннее семидесяти символов. Если эти требования не выполняются — сервер может запретить отправку письма.

Кроме обязательных элементов можно указывать два дополнительных — расширенные заголовки и расширенные параметры. Расширенные заголовки служат для добавления к письму дополнительных аттрибутов и блоков, таких как адрес отправителя, адрес отправки копии ( «cc» ), адрес отправки скрытой копии ( «bcc» ) и т.д. Расширенные заголовки так же позволяют отправлять сообщения в HTML-формате.

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

Итак, минимальный скрипт отправки сообщения выглядит так:

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

Этот скрипт отправит клиенту письмо от имени почтового робота вашего сайта (заголовок «From:» ). Дополнительно, применив заголовок «Reply-To:» , мы указали почтовой программе клиента, что ответы надо пересылать не почтовому роботу, а вебмастеру по указанному адресу. Третий фрагмент ( «X-Mailer» ) не является обязательным и описывает программу, с помощью которой было отправлено сообщение. Согласно почтового протокола, разработчик может при необходимости добавлять собственные расширенные заголовки. Единственное ограничение — имена таких заголовков должны начинаться с » X- «.

По-умолчанию, функция mail() отправляет сообщения в текстовом виде. Это означает, что если вы в текст добавите HTML-теги, то они будут восприняты как обычный текст без гипертекстовой разметки. Для того, чтобы отправить HTML-сообщение, снова воспользуемся расширенными заголовками:

Этот скрипт отправит письмо в HTML-формате двум получателям, а так же вышлет копии в архив и в контрольный ящик.

Запустить отправку писем можно двумя способами — в результате действий пользователя (например, после обработки данных формы), либо посредством запланированного задания. Первый случай очевиден — пользователь отсылает форму на сервер, там происходит обработка данных и на указанный почтовый ящик отправляются результаты обработки формы (подтверждение регистрации, счета к оплате, содержимое заказа или что-то еще).

Второй способ чаще всего используется, когда скрипт необходимо выполнять периодически (например, ежедневная рассылка новостей). Организация планирования выполнения задачи средствами PHP — задача нетривиальная. Более простой путь — воспользоваться готовыми интсрументами, например crontab. Этот инструмент доступен на большинстве платных Unix-хостингов. Более подробно мы рассмотрим crontab в отдельном уроке.

Дополнительно можно отметить, что попробовать отправку почты с вашего локального сервера у вас не получится. В большинстве случаев в целях безопасности функции почты не настроены и их надо прописать вручную. Указать параметры можно либо в файле php.ini, либо непосредственно в коде перед вызовом функции mail() :

Кроме того, настоятельно рекомендую поставить локальный SMTP-сервер, например, PersonalSMTP. Эта утилита распространяется бесплатно, проста в установке и настройке, но при этом позволяет отлаживать отправку писем даже при отсутствии подключения к Интернет. При использовании PersonalSMTP в конфигурации по-умолчанию используется сервер «localhost» и порт 15025, следовательно перед вызовом функции mail() необходимо добавить строки:

Для работы с электронной почтой уже создано множество классов, поэтому вам нет острой нужды писать весь код самостоятельно. Достаточно посетить соответствующий сайт и скачать одну из бесплатных библиотек, например libmail2008.

Мастер Йода рекомендует:  Вывод виджета информации о сервере в консоли WordPress
Добавить комментарий