Отправка вложений по электронной почте
Чтобы отправить электронное письмо со смешанным контентом, необходимо установить для заголовка Content-type — multipart/mixed. Затем разделы текста и вложения могут быть указаны в пределах ограничителей.
Начальный ограничитель указывается двумя дефисами, за которыми следует уникальный номер, он не будет отображаться в электронном письме. Для создания уникального номера используется функция PHP md5(), которая генерирует 32-значное шестнадцатеричное число. Конечный ограничитель задает конец раздела электронного письма, он также указывается двумя дефисами.
#php.ini
php.ini — конфигурационный файл с большинством настроек PHP.
На сайте shhost.ru(opens new window) приведён список директив php.ini, которые вы можете использовать в файле .htaccess.
Пример:
Если вам необходимо включить функцию magic_quotes_gpc, то надо прописать директиву функции в файле .htaccess, в папке сайта или скрипта:
Для отключения буферизации вывода данных:
Для отключения глобальных переменных:
Все приведенные выше параметры прописаны через директиву php_flag, поскольку они могут принимать только бинарные значения — on/off (1/0). Если значение прописываемого параметра может быть отлично от нуля или единицы (т. е. от on или off), то следует использовать директиву php_value.
Пример:Чтобы увеличить объем загружаемого файла через скрипты, создайте файл .htaccess в папке скрипта или папке домена и поместите в него следующие директивы (вместо 15 укажите нужный размер):
На Джино PHP работает как модуль Apache, поэтому нельзя использовать пользовательский php.ini. Для использования собственного php.ini вы можете запустить PHP в режиме CGI.
Большую часть настроек можно изменить, не запуская PHP в режиме CGI. Используйте для этого файл .htaccess и через раздел УправлениеНастройки веб-сервераНастройки PHP.
# настройка
Список ваших ящиков будет отображаться в разделе УправлениеПочтовые ящики.
Если для работы почтового сервиса вам нужден домен, вы можете зарегистрировать новый, привязать уже имеющийся или полностью перенести его на Джино с помощью раздела ДоменыУправление доменами.
Также в разделе УправлениеПочтовые ящики можно включить DKIM-подпись и SPF-запись для вашего ящика, а также отредактировать его основные параметры, войти в веб-интерфейс работы с почтой и удалить почтовый ящик.
Настройка php-mail, sendmail – отправка почты скриптом — помощь | хостинг-провайдер thehost
Для того чтобы письма, отправленные скриптами сайтов при помощи php mail доходили на все ящики и не попадали в спам, нужно отправлять такие письма с указанием отправителя любого ящика, созданного на этом вашем же домене, а не ящики на gmail, ya.ru, mail.ru и др.
Если сайт работает в режиме php apache https://shhost.ru/wiki/apache-cgi как на скрине выше, то изменить ящик можно в разделе www домены в свойствах домена в поле email администратора. Если сайт работает в режиме php cgi тогда изменить ящик можно в файле
php-bin/php.ini в строке
sendmail_path = «/usr/sbin/sendmail -t -i -f yachshik@domen.com«
При этом желательно указывать реально созданный существующий ящик https://shhost.ru/wiki/mailbox. Рекомендуем имя ящика указывать уникальным, и не указывать webmaster в качества имени ящика, т.к. из-за этого могут возникнуть проблемы с отправкой писем.
Существует легкий способ проверки работоспособности php mail сайта и правильности настроек домена в панели управления хостингом:
Нужно создать в папке вашего сайта текстовый файл mail.php с таким содержимым:
<?php
var_dump(mail(«support@thehost.com.ua«,»Test»,»Test»));
?>
где вместо support@thehost.com.ua указать ваш какой то рабочий ящик, в котором вы сможете проверить доходят ли письма созданным скриптом.
Затем просто запустите в браузере созданный файл по ссылке
ваш_домен/mail.php
и если все работает — получите ответ bool true, и на указанный вами ящик придет письмо с темой Test и текстом test. Если не работает — получите bool false и письмо не придет.
В таком случае попробуйте изменить настройки сайта согласно указанным выше рекомендациям и также попробуйте сменить режим php для сайта https://shhost.ru/wiki/apache-cgi и повторить попытку.
Если все же тестовый скрипт работает, но ваш личный скрипт не работает, тогда дело не в настройках домена либо хостинга, а в коде вашего скрипта и по данному вопросу нужно обращаться к разработчику вашего сайта либо в веб-студию.
При настройке sendmail нужно указывать параметры доступа к ящику (имя почтового сервера/IP, сам ящик и пароль от него). Если ящик создан на том же сервере — имя сервера нужно указать только localhost, иначе подключение не будет работать.
Для того чтобы использовать выделенный IP для отправки письма скриптами, нужно установить этот выделенный ip для www домена https://shhost.ru/wiki/apache-cgi и для почтового домена https://shhost.ru/wiki/mail-ip и в использовать email отправителя, о котором написано выше, созданный на почтовом домене, который настроен на этом выделенном ip.
How can i send an email using php?
Procedure for to send a user password via email using PHPMailer :
Step 1: First, Download PHPMailer Package from GitHub
You can just download the PHPMailer source files and include the required files manually.
You can download the ZIP file with the source code from the PHPMailer homepage[1],
clicking on the “Clone or download” green button (on the right) and then selecting “Download ZIP”.
Unzip the package inside the directory where you want to save the source files.
[1] https://github.com/PHPMailer/PHPMailer
Step 2: Then, open (From Gmail Address) Google Account and do the following steps:
- Disable Two factor password verification in google account.
- Turn on Less Security.
- Allow third party app.
Step 3: Try to use below Code (Note: Here, I have provided only the functional code for to send a user password via email using PHP and MySQL)
<?php
session_start();
use PHPMailerPHPMailerPHPMailer; //add use in starting of the code
$db = mysqli_connect('localhost', 'root', '', '[Enter your Database Name]'); // connect to database
if (isset($_POST['forgot_btn'])) {
forgotpassword();
}
function forgotpassword(){
global $db;
$user_id = $_POST['user_id'];
$result = mysqli_query($db,"SELECT * FROM users where user_id='$user_id'");
$row = mysqli_fetch_assoc($result);
$fetch_user_id=$row['user_id'];
$name=$row['name'];
$email_id=$row['email_id'];
$password=$row['password'];
if($user_id==$fetch_user_id) {
require '../PHPMailer/vendor/autoload.php'; //Please correctly mention the PHPMailer installed directory (Don't follow my directory)
$mail = new PHPMailer(TRUE);
try{
$mail->setFrom('[Enter your From Email_Address]', '[Enter Sender Name]');
$mail->addAddress($email_id, $name); //[To Email Address and Name]
$mail->Subject = 'Regarding Forgot Password';
$mail->Body = 'Hi '.$name.',Your Login Password is:'.$password.'';
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = TRUE;
$mail->SMTPSecure = 'tls';
$mail->Username = '[Enter your From Email_Address]';
$mail->Password = '[Enter your From Email_Address -> Password]';
$mail->Port = 587;
if($mail->send())
{
echo "<script>alert('Password Sent Successfully');</script>";
}
else
{
echo "<script>alert('Please Check Your Internet Connection or From Email Address/Password or Wrong To Email Address');</script>";
}
}
catch (Exception $e)
{
echo "<script>alert('Please Check Your Internet Connection or From Email Address/Password or Wrong To Email Address');</script>";
}
}
}
?>
Refer to these docs[1] for further information:
[1]. https://alexwebdevelop.com/phpmailer-tutorial/
Как отправлять почту через скрипты на виртуальном хостинге? | макхост
# установка почтовых клиентов для ос windows
Удобнее всего пользоваться почтовыми клиентами с поддержкой автонастройки.
Это стандартные клиенты для ранних ОС Window, а также Windows Mail для более поздних версий.
Инструкцию по установке последнего читайте в этом разделе(opens new window).
Можно пользоваться и клиентом Mozilla Thunderbird(opens new window) —
для него мы тоже подготовили инструкциюВ последнее время письма отправляемые с хостингов через функции mail() и mb_send_mail() часто попадают в спам или совсем не доходят до адресатов. Альтернатива – это отправка e-mail через SMTP с реального почтового ящика.Проект на GitHub.com.Если при отправки писем возникает ошибка «Could not connect to SMTP host», то необходимо добавить следующие строки:В настройках почты нужно разрешить доступ к почтовому ящику с помощью почтовых клиентов:Если возникает ошибка при отправки почты, то нужно отключить двухфакторную авторизацию и разблокировать «ненадежные приложения» в настройках конфиденциальности аккаунта https://myaccount.google.com/security?pli=1Лимит – 2000 писем в день, но не более 5 в секунду.Доступ к сторонним почтовым серверам по SMTP-портам (25, 465, 587) ограничен, разрешена отправка не более 300 сообщений в сутки.Лимит – 3000 писем в день.Имя сервера можно узнать в разделе «Информация о включенных сервисах и паролях доступа»:В разделе «Услуги» нужно включить опцию «SMTP-сервер»:В настройках веб-сервера необходимо включить PHP расширение «openssl».
Функция mail()
Отправка почтовых сообщений в большинстве скриптов выполняется системной функцией mail(). Описание синтаксиса функции mail всегда можно найти в оригинальном руководстве. Эта функция принимает всего 5 параметров, из которых три являются обязательными, а остальные два — опциональными:to — Электронный адрес получателя сообщенияsubject — Тема сообщенияmessage — Тело сообщенияadditional_headers — дополнительные заголовкиadditional_parameters — дополнительные параметрыНа самом деле функция mail() просто формирует строку следующего вида: $additional_headers
To: $to
Subject: $subject
$message
а затем передает ее на обработку стандартной UNIX’овой команде отправки почты, которая носит имя /usr/sbin/sendmail. Сравнивая то, что выдает mail(), с тем, что должно получиться (см. пример выше), можно составить точный план подготовки переменных для передачи в функцию:Закодировать поле Subject с использованием base64, как в примере выше.Закодировать поле To.В случае необходимости создать $additional_headers, самостоятельно сформировав все необходимые заголовки (например, добавив поле «From:») и разделив эти заголовки парой символов «rn».После этого сформированный набор параметров можно передавать на вход функции mail().
Грамотная настройка сервера отправки почты для скриптов PHP, настройка функции mail()
В этом топике вы узнаете, как грамотно настроить, сервер исходящей почты и в частности функцию mail() в PHP. Сам являюсь жутким педантом. Люблю, что бы везде было все на своих местах, не терплю халтуры. Увидев один раз полную чушь в заголовках письма со своего сервера я разобрался с этим кардинально и безоговорочно. Под грамотной настройкой я подразумеваю такую, которая удовлетворяет потребности спам фильтров крупных почтовых систем, и просто выглядело красиво и осмысленно. Как известно протокол SMTP не подразумевает никаких средств защиты от спама и аутентификации пользователя, поэтому крупными и не очень компаниями были придуманы «фиксы» безопасности протокола. Если вы устанавливаете выделенный сервер с доменом размещенным на нем, очень рекомендуется выполнить данные настройки, что бы все было как надо. На изучение этого вопроса я потратил немало времени, разобравшись в каждом заголовке. Начал с базовой настройки из пакетов, при этом из предоставляемых пакетов выбрал, то что понравилось, а закончил тонким феншуем, который я так до конца не воплотил, ибо это уже было совсем изыск.Название заголовка выбрал именно такое, так как вначале своего пути я искал что-то вроде этого. Настраивать будем postfix, php, dns (ptr, spf), и другое. Эта статья будет интересная людям, настраивающим выделеные сервера, но не менее интересна для обычных программистов.
# Установка почтовых клиентов для устройств Apple
Удобнее всего пользоваться почтовыми клиентами с поддержкой автонастройки.
Один из них — стандартный клиент iOS Mail, для которого мы написали инструкцию по установке(opens new window).Для ОС macOS можно использовать macOS Mail — инструкцию по установке читайте в этом разделе(opens new window).
# Установка почтовых клиентов для смартфонов на ОС Android
Удобнее всего пользоваться почтовыми клиентами с поддержкой автонастройки.
Это Microsoft Outlook(opens new window) и myMail=?кодировка?способ кодирования?закодированный текст?=
Кодировка может быть любой из списка «windows-1251», «koi8-r», «utf-8» и т.д. Во всех случаях, как правило, кодировка сообщения будет совпадать с кодировкой, в которой работает сайт. То есть в большинстве случаев это будет «windows-1251», реже — «utf-8».Способ кодирования указывает на то, каким именно образом русские символы будут преобразованы в безопасный набор. Способа определяется два: так называемый «Q-encoding» (обозначается одной буквой «Q») и «Base64» (обозначается одной буквой «B»). К сожалению, штатной функции, которая могла бы обычную строку преобразовать в Q-encoded текст, в PHP нет, зато есть функция, которая умеет выполнять аналогичное преобразование в Base64. Итак, PHP код правильного создания заголовка темы почтового сообщения может выглядеть следующим образом:$subject = «=?windows-1251?b?» . base64_encode($_POST[«subject»]) . «?=»;
Здесь предполагается, что в переменной $_POST[«subject»] у Вас содержится тема почтового сообщения, записанная по-русски в кодировке windows-1251.
# Вход в web-интерфейс
В разделе УправлениеПочтовые ящики
наведите курсор на нужный ящик из списка и нажмите на соответствующую иконку в правой части страницы.
Вы попадёте в стандартный почтовый агент, предоставляемый Джино. Подробнее о работе почтового агента читайте в этом разделе.
Как настроить mail?
Настройка выполняется в конфигурационном файле php.ini. В этом файле нужно прописать путь к лог-файлам, а также задать значения порта. Общее описание функции: Список основных параметров:
1. to — получатель (получатели) письма. Формат должен соответствовать » RFC 2822. Пример — [email protected];
2. subject — тема отправляемого письма;
3. message — отправляемое сообщение.Строка отделяется символом CRLF (rn). Сами строки не д. б. длиннее семидесяти символов.
4. additional_headers — этот параметр является необязательным. Обозначает строку либо массив, которые вставляются в самый конец отправляемых заголовков.
5. additional_parameters — тоже необязателен.Используют для передачи дополнительных флагов в качестве аргументов командной строки для программы, которая сконфигурирована для отправки писем и указана директивой sendmail_path. К примеру, есть возможность установить отправителя при применении sendmail и с помощью опции -f.Приведём пример: Если вы являетесь веб-мастером и используете Денвер, то информация, которая будет вами отправлена, сохранится на виртуальном диске Z в папке «tmp!sendmail».
# Резервные копии
Бэкапы создаются автоматически с периодичностью 1 раз в 2-11 дней и хранятся 20 дней. Создать бэкап можно в разделе УправлениеУправлениеПочтовые ящики. Выберите из списка нужный ящик и справа от него нажмите иконку Редактировать. В открывшемся окошке кликните на Настройка перенаправления и введите адрес, куда будут отправляться копии писем. Можно указать несколько адресов через запятую.
Устранение проблем в коде
Для отладки кода был использован класс Exception библиотеки PHPMailer, который способен отследить все возможные ошибки. В конструктор объекта PHPMailer был передан аргумент true, который указывает на необходимость отображения полной информации об исключениях.В зависимости от типа системы, наиболее распространенной ошибкой при использовании встроенной функции mail() в фоновом режиме является следующая: Mailer Error: Could not instantiate mail function. Если нужно получить больше сведений о возникшей ошибке, можно добавить следующий код в блок catch{}: print_r(error_get_last()); Как правило, ошибки использования функции mail() связаны с тем, что почтовый сервер не был сконфигурирован. В этом случае функция error_get_last вернёт следующее: Array (⠀⠀⠀⠀[type] => 2⠀⠀⠀⠀[message] => mail(): Failed to connect to mailserver at «localhost» port 25, verify your «SMTP» and «smtp_port» setting in php.ini or use ini_set()⠀⠀⠀⠀[file] => OUR_PATH vendorphpmailerphpmailersrcPHPMailer.php⠀⠀⠀⠀[line] => 863`)Чтобы избежать этой весьма распространённой проблемы, рекомендуется использовать протокол SMTP.
Приступим
— СоветГоспода, я люблю ставить все пакетами и новичкам не советую заниматься самодеятельностью, во многих пакетах уже есть скрипты автоматической настройки, результаты которых надо только чутка подправить и все будет хорошо. Кроме того, из репозиториев оно само обновляется и вообще меньше запары просто потому что её меньше.— Настройка PHPСтавим как хотим php, это вы как-нибудь без меня. Идем в настройки php, заменяем эквивалентно: Этим мы указали заголовок Return-Path: Кстати 1: это будет таковым для всех виртуальных доменов сервера, что бы это исправить и настроить под текущий, то требуется передать 5-й параметр в функцию mail(). Кстати 2: если вы поставите 5-й параметр на обычном виртуальном хостинге, то вам тоже рекомендуется проводить настройку вашего домена, как это описано ниже. Обращаю внимание, что операцию с PTR записями сделать невозможно, так как 1 IP = Домен, ну или по крайней мере не рекомендуется делать их 2, не помню уже.— Настройка MTA, он же локальный сервер исходящей почты Я вам искренне советую postfix, далее идем в настройки /etc/postfix/main.cf для тех, кто уже нарвался на sendmail, и понял как они трудно выпиливаются из системы, советую команду:
# Удаление
В разделе УправлениеПочтовые ящики наведите курсор на нужный ящик из списка и выберите иконку «Удалить» в правой части страницы.
Восстановить данные удалённого почтового ящика можно из его резервной копии.
Конфигурация после установки
Большинство smtp-серверов требуют аутентификации по паролю для отправки почты. Поэтому postfix нужно будет знать этот пароль. Также есть такие вещи, как шифрование, которое нужно учитывать (что вам придется гуглить). Вот как вы настраиваете postfix с использованием аутентификации по паролю (sasl):Это должно делать это в большинстве случаев. Тем не менее, некоторые провайдеры SMTP требуют определенного адреса в качестве отправителя или шифрования. Связанный: PEAR :: Mail интерфейс также может быть интересен для вас. Gmail (и, возможно, другим службам) может не понравиться то, что вы пытаетесь отправлять почту таким образом, поскольку это может считаться небезопасным по их стандартам, и это может заблокировать вашу попытку, т. Е. На экране ничего не произойдет, или какое-то место всего процесса заблокирует ваша аутентификация. Также ваш POP3 должен быть включен.Чтобы противостоять этому, смотрите здесь. (Если вы хотите быть в безопасности, создайте фиктивную учетную запись Gmail)
Другие особенности mail()
Применение данной функции имеет множество нюансов, список которых зависит от используемой платформы (ОС) и других параметров. Основные из них я попробую перечислить: Отправляемое email должно содержать установленный заголовок From, который задается через 4 (необязательный) параметр additional_headers. Его отсутствии может стать причиной того, что функция mail PHP не будет работать. Все заголовки, установленные через additional_headers, должны быть разделены сочетанием управляющих символов новой строки и перевода каретки(rn). Некоторые почтовые агенты, работающие на Unix, могут автоматически заменять n на rn. В результате заголовки разделяются двумя символами перевода строки и одним переводом каретки, что может привести к выводу ошибки. Если email не отсылается, попробуйте разделить все хедеры одним символом n. Но помните, что такой синтаксис является нарушением существующих стандартов.Длина каждой строки не должна быть больше 70 символов. Строки между собой разделяются сочетанием управляющих символов rn.
Формат почтового сообщения
Для того чтобы быть уверенным, что ваше сообщение отправляется действительно верно, необходимо иметь по меньшей мере базовые представления о формате почтового сообщения. Формат почтового сообщения описан в нескольких стандартизирующих документах, основными из которых являются RFC 822 (описывает формат передачи простого текста на английском языке) и RFC 2045 (описывает расширения этого формата для передачи произвольных данных).Ниже приведен самый простой пример текстового сообщения, составленного в соответствии с приведенными выше стандартами и готового к отправке:
Что делать, если функция не отправляет письма?
Даже если учесть всё вышеперечисленное, mail в PHP иногда не работает, причём на локальном сервере всё отправляется нормально. Одна из причин — некорректная настройка функции непосредственно на хостинге. Для решения проблемы рекомендуется обратиться к конфигурационному файлу php.ini и посмотреть на параметры функции «disable_functions».Идём дальше. Мы можем проверить работоспособность, написав простой код и разместив его в корневом каталоге созданного веб-проекта (сайта): Если всё функционирует верно, на экране браузера мы увидим цифру один — «1». Её нам вернёт «print» после выполнения. В качестве кодировки рекомендуется использовать UTF-8.
Лирическое отступление
Прежде чем двигаться дальше, давайте немного вспомним теорию. Чтобы отправлять письма, нам потребуется почтовый сервер SMTP. Но это не проблема, т. к. он есть практически на всех современных платных хостингах. SMTP — сетевой протокол (protocol), используемый для передачи почты в сетях TCP/IP. Почтовые серверы и прочие агенты пересылки задействуют SMTP для получения и отправки сообщений.Для приёма почты нам понадобится POP-сервер. Также следует понимать, что сам по себе PHP не отправляет сообщение, а лишь передаёт команды приложению sendmail — именно оно занимается отправкой, следовательно, его нужно иметь (если используете Денвер, то данное приложение уже встроено). Вдобавок ко всему, все сообщения почты помещаются в директорию под названием «tmp/!sendmail».
# Установка почтовых клиентов для ОС Linux
Удобнее всего пользоваться почтовыми клиентами с поддержкой автонастройки.
Один из самых популярных — Mozilla Thunderbird(opens new window).
Его можно установить в любой из ОС семейства Linux.
Преамбула
Кто-то пользуется либами, которые заменяют функцию mail (например phpmailer), они могут общаться с SMTP напрямую, а могут отправлять и на локальный сервер. Но лучше использовать стандартную встроенную и настроенную функцию PHP mail() которая будет отправлять почту на локальный сервер исходящей почты, который в свою очередь будет с ней сам разбираться.Статья отформатирована не самым лучшим образом. Извиняюсь, время поджимает, а рассказать хочется пока вспомнил, а то потом не времени будет.
# Установка почтового клиента The Bat
Читайте инструкцию по установке The Bat! в этом разделе(opens new window).
Отправка обычного текстового сообщения
PHP использует функцию mail() для отправки электронной почты. Для этой функции необходимы три обязательных аргумента, в которых указывают адрес электронной почты получателя, тема электронного письма и само письмо, кроме того, имеются два других необязательных параметра.Ниже приводится описание каждого аргумента. После вызова функции mail, она попытается отправить электронное письмо, после этого она возвращает значение true, если письмо отправлено успешно, или false, если письмо не было отправлено. В качестве первого аргумента функции mail() могут быть указаны несколько получателей, их адреса указываются списком через запятую.
Автор
Елена имеет профессиональное техническое образование в области информационных технологий и опыт программирования на разных языках под разные платформы и системы. Более 10 лет посвятила сфере веб, работая с разными CMS, такими как: Drupal, Joomla, Magento и конечно же наиболее популярной в наши дни системой управления контентом – WordPress. Её статьи всегда технически выверены и точны, будь то обзор для WordPress или инструкции по настройке вашего VPS сервера.источник
Защита от спама
Спамеры очень часто для рассылки используют плохо написанные формы отправки почты на PHP. Дело в том, что стандарт допускает использование нескольких получателей, которые могут быть перечислены через запятую в заголовке «To», а также использование произвольного количества специальных заголовков с именем «Сс» (копия)и «Bcc» (скрытая копия). Предположим, что в Вашей форме есть поле темы, которое без изменений транслируется в заголовок «Subject». Для того чтобы отправить произвольное сообщение на тысячу адресов, спамеру достаточно в поле Subject вписать примерно такой текст:
Отображение сообщений об ошибках на требуемом языке
Свойство $ mail-> ErrorInfo отображает сведения о возникающих ошибках на 43 различных языках. Для этого нужно скопировать каталог с языками из исходного кода библиотеки PHPMailer в каталог проекта. Например, чтобы сообщения об ошибках отображались на русском языке, нужно установить соответствующий язык объекта PHPMailer с помощью метода setLanguage() с аргументом “ru” как показано ниже:$mail->setLanguage(«ru»); В папку language также можно добавить любой другой язык из 43 доступных.
Как все это сделать проще
Использование готовых решений для отправки почты. В качестве примера можно привести класс PHPMailer, который легко позволяет реализовать все возможности, описанные выше, и еще целый ряд того, о чем не было упомянуто. Тарифы на php хостинг
Wordpress
Для данной CMS существует специальный модуль «WP Mail SMTP», пример его конфигурации описан на странице модуля. Обратите внимание на иллюстрацию в примере, в условиях нашей почтовой системы требуется использовать 25-й порт и SSL-шифрование не требуется.
Как отправлять письма, используя ASP.NET?
Если вы используете версию 2.0, то используя
класс MailMessage (используется пространство имен System.Net.Mail), хорошо описанный здесь. Ниже приведены примеры его использования для языков «C#» и «VisualBasic»:
# Работа с почтовыми ящиками
Перед созданием почтового ящика убедитесь, что: ваш домен перенесён на Джино;A-запись вашего домена указывает на IP-адрес вашего сервера;MX-запись вашего домена содерджит имя почтового ящика, который вы собираетесь создать.Для доменных имён, купленных в Джино.Магазине или зарегистрированных через Джино A-запись и MX-запись создаются автоматически. Для доменов, перенесённых на Джино содержание записей нужно проверить на актуальность.
Еще немного слов о заголовках (все вперемешку)
X-Mru-BL: 0:0:0:0 упаси вас иметь что-нибудь кроме нолей, это блеклисты. X-Mru-OF: интерфейс с которого посылается, я так и не понял от чего это зависит. X-PHP-Originating-Script: — я бы советовал добавлять, хотя если вы очень печетесь о безопасности и неразглашении, то можно и запретить. Делается это неподалеку от той настройки PHP которой мы делали. По умолчанию включено.Еще можно и интересно посмотреть что пишет Яндекс при приеме, очень интересно.
Отправка HTML-письма
Когда вы отправляете текстовое сообщение с использованием PHP, то весь контент будет рассматриваться как простой текст. Даже если вы будете включать в текстовое сообщение HTML-теги, сообщение будет отображаться как простой текст, а HTML-теги не будут отформатированы в соответствии с синтаксисом HTML.
NetCat
Данная CMS не имеет встроенных функций для работы с SMTP-сервером. Для отправки почты скриптами сайта мы можем предложить использовать наше решение, для его подключения необходимо выполнить следующие действия: domain.tld следует заменить на имя вашего домена. Предлагаемое решение работает со всеми модулями NetCat, которые используют стандартные функции данной CMS для отправки почты.
# DKIM
Цифровая DKIM-подпись — это скрытый код, добавленный в заголовок письма. Она подтверждает подлинность адреса отправителя на указанном домене и защищает от мошенников. Чтобы установить DKIM для домена, нужно создать TXT-запись с публичным ключом к подписи. Если вы делегировали домен на Джино, DKIM-подпись настраивается автоматически. В остальных случаях TXT-запись нужно настраивать на том сервере, который отвечает за отправку писем.
# SPF
SPF-запись — это TXT-запись в DNS-зоне домена. Она содержит список адресов серверов, через которые отправляется почта с ящиков на вашем домене. Это позволяет снизить возможность попадания письма в спам. Чтобы установить SPF для домена, нужно создать TXT-запись. Если вы делегировали домен на Джино, она настраивается автоматически. В остальных случаях TXT-запись нужно настроить на тех серверах, куда делегирован ваш домен.
Заключение
Теперь вы знаете как происходит отправка email PHP. Хотя это руководство предназначено для тестирования, такой же синтаксис можно использовать для разработки контактной формы на вашем сайте. Однако, если вам понадобится более сложная отправка email PHP, то скрипты для этого можно поискать здесь:
# Автоматическая настройка почтовых клиентов
Для автоматической настройки почтового клиента вам нужно будет указать только имя отправителя, e-mail и пароль. Автонастройка доступна в следующих клиентах: для ОС Windows — Microsoft Outlook, Windows Mail, Mozilla Thunderbird;для ОС Linux — Mozilla Thunderbird;для ОС iOS — iOS Mail;для ОС macOS — macOS Mail;для ОС Android — Microsoft Outlook, myMail.
# allow_call_time_pass_reference
Некоторые CMS требуют включить параметр php.iniallow_call_time_pass_reference. Для этого создайте в нужной папке (например, в папке, куда устанавливаете скрипт) файл .htaccess и поместите в него такую директиву: Если файл .htaccess в нужной папке уже существует, то просто добавьте эту строку в конец. Действие этой директивы распространяется и на все подпапки.
Method #3: Using PHPMailer
PHPMailer is a popular e-mail implementation that provides another way to send messages from PHP scripts. It supports many features, including SMTP authentication, and makes formatting e-mail messages correctly much easier. To learn to install PHPMailer with this article.
Drupal
Эта CMS так же имеет собственный модуль для работы с SMTP-сервером, основанный на базе PHPMailer. Загрузить данный модуль можно на его странице на сайте CMS Drupal, описание установки модуля доступно в архиве с ним.
# register_globals
Некоторые скрипты требуют включения директивы register_globals. Для этого в папке скрипта или в папке домена создайте файл .htaccess и поместите в него следующую директиву: Если файл .htaccess в нужной папке уже существует, то просто добавьте эту строку в конец. Действие этой директивы распространяется и на все подпапки.
Извлечение писем через протокол POP3
Библиотека PHPMailer поддерживает отправку писем по методу аутентификации POP перед SMTP. Иначе говоря, вы сможете пройти аутентификацию через POP и отправлять почту через SMTP. К сожалению, в PHPMailer реализована только возможность отправки электронных писем, поэтому получать почту по протоколу POP3 с использованием библиотеки не получится.
Как отправлять письма, используя ASP?
С помощью Collaboration Data Objects. Обратите внимание, что при использовании нашего smtp-сервера требуется авторизация, поэтому не забудьте добавить в скрипт соответствующие реквизиты доступа, например:
Method #2: Using the PEAR Mail class
Although the PEAR Mail class requires more configuration than the PHP mail() function, it is also much more powerful. With the PEAR Mail class, you can send e-mail messages using SMTP authentication, and specify many other e-mail settings. To do this, follow these steps:
Добрый день, не приходит на почту заявки
if ($_SERVER[‘REQUEST_METHOD’] == ‘POST’ && isset($_POST[‘formid’]) && $_POST[‘formid’] == ‘layer9’)
{
$mailto = ‘9257147369@mail.ru’;
$mailfrom = isset($_POST[’email’]) ? $_POST[’email’] : $mailto;
$subject = ‘Что за объект по стяжке пола’;
$message = »;
$success_url = ‘./spasibo.html’;
$error_url = »;
$eol = «n»;
$error = »;
$internalfields = array («submit», «reset», «send», «filesize», «formid», «captcha_code», «recaptcha_challenge_field», «recaptcha_response_field», «g-recaptcha-response»);
$boundary = md5(uniqid(time()));
$header = ‘From: ‘.$mailfrom.$eol;
$header .= ‘Reply-To: ‘.$mailfrom.$eol;
$header .= ‘MIME-Version: 1.0’.$eol;
$header .= ‘Content-Type: multipart/mixed; boundary=»‘.$boundary.'»‘.$eol;
$header .= ‘X-Mailer: PHP v’.phpversion().$eol;
try
{
if (!ValidateEmail($mailfrom))
{
$error .= «The specified email address (» . $mailfrom . «) is invalid!n
«;
throw new Exception($error);
}
$message .= $eol;
foreach ($_POST as $key => $value)
{
if (!in_array(strtolower($key), $internalfields))
{
if (!is_array($value))
{
$message .= ucwords(str_replace(«_», » «, $key)) . » : » . $value . $eol;
}
else
{
$message .= ucwords(str_replace(«_», » «, $key)) . » : » . implode(«,», $value) . $eol;
}
}
}
$body = ‘This is a multi-part message in MIME format.’.$eol.$eol;
$body .= ‘—‘.$boundary.$eol;
$body .= ‘Content-Type: text/plain; charset=UTF-8’.$eol;
$body .= ‘Content-Transfer-Encoding: 8bit’.$eol;
$body .= $eol.stripslashes($message).$eol;
if (!empty($_FILES))
{
foreach ($_FILES as $key => $value)
{
if ($_FILES[$key][‘error’] == 0)
{
$body .= ‘—‘.$boundary.$eol;
$body .= ‘Content-Type: ‘.$_FILES[$key][‘type’].’; name=’.$_FILES[$key][‘name’].$eol;
$body .= ‘Content-Transfer-Encoding: base64’.$eol;
$body .= ‘Content-Disposition: attachment; filename=’.$_FILES[$key][‘name’].$eol;
$body .= $eol.chunk_split(base64_encode(file_get_contents($_FILES[$key][‘tmp_name’]))).$eol;
}
}
}
$body .= ‘—‘.$boundary.’—‘.$eol;
if ($mailto != »)
{
mail($mailto, $subject, $body, $header);
}
header(‘Location: ‘.$success_url);
}
catch (Exception $e)
{
$errorcode = file_get_contents($error_url);
$replace = «##error##»;
$errorcode = str_replace($replace, $e->getMessage(), $errorcode);
echo $errorcode;
}
exit;
}
if ($_SERVER[‘REQUEST_METHOD’] == ‘POST’ && isset($_POST[‘formid’]) && $_POST[‘formid’] == ‘layer13’)