- PHP Mail
- Отправитель.
- Следующий параметр – кодировка.
- Php email charset utf 8
- Send HTML UTF-8 Email In PHP (A Simple Example)
- TLDR – QUICK SLIDES
- TABLE OF CONTENTS
- PHP UTF-8 EMAIL
- SENDING UTF-8 HTML EMAIL
- HOW ABOUT CSS?
- DOWNLOAD & NOTES
- SUPPORT
- EXAMPLE CODE DOWNLOAD
- EXTRA BITS & LINKS
- LINKS & REFERENCES
- INFOGRAPHIC CHEAT SHEET
- THE END
- Leave a Comment Cancel Reply
- Search
- Breakthrough Javascript
- Socials
- About Me
PHP Mail
Часто средствами PHP необходимо отправлять почту. Но как это сделать, чтобы письма приходили на максимально возможное количество разных почтовых систем?
На самом деле все очень просто, особенно, если ты знаешь где нажимать какие кнопочки. Но, чтобы найти действительно подходящее решение в данном вопросе, пришлось потратить много времени. А все мы помним, что время – это деньги!
Итак, приступим. Код письма может быть даже таким:
$date = date("Y-m-d H:i:s");
//email на который отправляем
$to = "";
//тема сообщения
$subject = "Новое сообщение. $date";
//как бы текст
$message = 'Текст письма
';
//headers
$headers = 'Content-type: text/html; charset="utf-8"';
$headers .= "From: ИМЯ ";
$headers .= "Reply-To: ";
mail($to, $subject, $message, $headers);
?>
Отправитель.
Важно понимать, что часть кода headres имеет очень важное значение. Т.к., например, mail.ru НЕ принимает письма, если Вы указываете автора письма (From), ненастоящего.
Т.е., например, Вы имеете сайт на сервере host.bo, при этом Mail.Ru знает, что письмо пришло оттуда, т.к. при отсылке письма отправляет еще и дополнительная информация, а не только та, которую Вы укажите.
Return-path:
Envelope-to: mailZero@inverser.pro
Delivery-date: Mon, 16 Oct 2017 16:42:03 +0300
Received: from user by thehost.ua with local (Exim 666)
(envelope-from )
id 56565-0580J2-1d
for mailZero@inverser.pro; Mon, 16 Oct 2017 16:42:02 +0300
To:
Subject: 2017-10-16 16:42:01 комментарий Inverser.PRO
X-PHP-Originating-Script: 1708:script.php
Content-type: text/html; charset=utf-8
From:
Reply-To:
Message-Id:
Date: Mon, 16 Oct 2017 16:42:02 +0300NAME: Inverser.
EMAIL: mailZero@inverser.pro
IP: 1.0.1.9
DATE: 2017-10-16 16:42:01
URL: inverser.pro/42
TEXT: Андрей, не знаю, кто такой Лукас, но благодарю, видимо, что-то хорошее.
Поэтому, если, например, Вы укажите отправителем почту mail@mail.ru, то почтовая система Mail.Ru НЕ примет это письмо, так как будет «знать», что оно пришло не с её серверов, а с сервера host.bo.
Именно поэтому, автора письма нужно указывать любого другого, но не mail.ru.
Следующий параметр – кодировка.
Чтобы не было «кракозябр» или нечитаемых символов в письме, необходимо четко соблюсти правила.
$headers = 'Content-type: text/html; charset="utf-8"';
должна быть именно ТАКОЙ, и никакой другой, если только Вы не используете другую кодировку (charset). Важную роль играют одинарные и двойные кавычки в этой строке. Желательно, чтобы она была именно такой, как указана выше, чтобы не было непонятных символов в письме:
Если в письме НЕ будет html тегов, а просто текст, то можно эту строку писать так:
$headers = 'Content-type: text/plain; charset="utf-8"';
Php email charset utf 8
Гостей: 6
Гости: | |
[Ваш IP] | 22:08:50 |
/Статьи | |
185.191.171.7 | 22:08:21 |
Поиск по тегам | |
88.99.240.224 | 22:06:05 |
/Поиск | |
Yandex [Bot] | 22:05:35 |
/ | |
185.191.171.12 | 22:04:18 |
Поиск по тегам | |
217.145.226.125 | 22:04:12 |
/Статьи |
Всего пользователей: 55
Новый пользователь: antalyaliali
JS- утилиты, фреймворки → Syntax Highlighter [1270]
PHP скрипты → Скрипт для проверки . [1054]
JS- утилиты, фреймворки → JQuery TimeAgo [970]
JS- утилиты, фреймворки → JQuery Form [924]
JS- утилиты, фреймворки → JQuery Validation Pl. [4037]
Безопасность → DKIM-подпись для почтового домена в I. [18388]
Собственное мнение → Page Rank и тИЦ ушли в небытие. [4540]
Собственное мнение → isset и empty — функции? Нет! [8103]
Программирование → PHP-Fusion: переход с mysql на mysqli. [8861]
Программирование → Перевод CMS PHP-Fusion с mysql_* на m. [6615]
PHP → Функция генерации нового названия
.htaccess → Принудительная кодировка страниц
JavaScript, JQuery → Вернуться на предыдущую страницу
CSS → Изменяем определенное в css прав.
CSS → Убираем полосы прокрутки
Да, смайлы зачетные )) Уже не помню, где брал их. Это далеко не все, лень добавлять просто, их там штук 70
→ На картеОфис AMWAY в Ярославле Прием и выдача заказов, презентация продукции Амвей, мастер–классы, вопросы по бизнесу Amway:
●Адрес: улица Валентины Терешковой, дом 1 (Вход со двора)
●Телефон:+7 (920) 112-00-91
●Email:matyxho@mail.ru
●Сайт:https://www.amway.ru/user/lebedem
●Визитка:http://yar.meweb.ru
Весьма часто встречается проблема при отправке писем через стандартную функцию PHP mail(), а именно: получателю приходит письмо в совершенно нечитабельном виде. Опишу один из способов решения проблемы.
Pisatel 10 Декабрь 2013 12:27:36 10997 Прочтений
Возникла тут одна проблема при отправке письма с сайта через стандартную функцию mail();, проблема, как всегда, была связана с «кракозябрами» в приходящем с сайта сообщении. Чуть погуглив и почесав репу, решение было найдено, не одно- а куча целая, вплоть до готовых скриптов, которые оставалось только подключить. Но их я рассматривать не буду, покажу самое простое решение для отправки html- содержимого в письме.
Итак, что нам нужно для отправки письма через стандартную функцию php mail():
Итак, для начала- пример с одним получателем. Кодировку ставим UTF-8, так как это самый оптимальный вариант. Помни: кодировка страницы, с которой отправляется сообщение, должна совпадать с кодировкой письма. Тему сообщения кодируем в base64, указывая на это в заголовке: так письма корректно будут приходить на горячо любимый всеми почтовый сервис Mail.ru.
$email = 'admin@meweb.ru';
$subject = 'Вам письмо с сайта '.$_SERVER['SERVER_NAME'];
$msg = '
';
$msg .= '';
$msg .= '';
// далее идут заголовки
$headers = array();
// указываем, что это html документ в кодировке utf-8
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-Type: text/html; charset="UTF-8"';
// указываем, что тема закодирована
$headers[] = 'Content-Transfer-Encoding: 7bit';
$headers[] = 'From: yourmail@domain.net';
$headers[] = 'X-Mailer: PHP v'.phpversion();
// ну и теперь- сама функция отправки
// заголовки разбиваем через implode(), добавляя переносы
mail($email, '=?UTF-8?B?'.base64_encode($subject).'?=', $msg, implode("\r\n", $headers));
Вот так вот, оказывается, все просто.
Ну а теперь отправим письма нескольким адресатам, взятым, например, из базы данных. После каждого адреса просто ставим запятую, но не забываем, что если адресов много, это может сильно грузить сервер. Теперь наш код будет выглядеть примерно так:
$manyemail = mysql_query("SELECT `user_email` FROM `users`") or die(mysql_error());
if (mysql_num_rows($manyemail) != 0)
$email = array();
while($row = mysql_fetch_array($manyemail))
$email[] = $row['user_email'];
>
$subject = 'Рассылка с сайта '.$_SERVER['SERVER_NAME'];
$msg = '
';
$msg .= '';
$msg .= '';
// далее идут заголовки
$headers = array();
// указываем, что это html документ в кодировке utf-8
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-Type: text/html; charset="UTF-8"';
// указываем, что тема закодирована
$headers[] = 'Content-Transfer-Encoding: 7bit';
$headers[] = 'From: yourmail@domain.net';
$headers[] = 'X-Mailer: PHP v'.phpversion();
// ну и далее- отправка письма, через implode добавляем в массив адресов запятую
mail(implode(", ", $email), '=?UTF-8?B?'.base64_encode($subject).'?=', $msg, implode("\r\n", $headers));
>
Вот, в общем, и все. Знаю, что это уже тысячу раз обсуждали, знаю, что функции mysql_query, mysql_fetch_array и mysql_num_rows устарели с версии php 5.3, но все, что здесь изложено — лишь для примера (хотя код рабочий), а вы уж сами решайте, куда это пихнуть и как изменить.
Send HTML UTF-8 Email In PHP (A Simple Example)
Welcome to a quick tutorial on how to send an HTML UTF-8 email in PHP. So you want to send out an HTML email in PHP? In a language that is not English? Yes, it is possible.
To send an HTML UTF8 email in PHP, we have to set the appropriate HTML and UTF-8 email headers. For example:
- $to = «jon@doe.com»;
- $subject = «SUBJECT»;
- $body ;
- $head = implode(«\r\n», [«MIME-Version: 1.0», «Content-type: text/html; charset=utf-8»]);
- mail($to, $subject, $body, $head);
That should answer the mystery, but let us walk through an actual example in this guide – Read on!
TLDR – QUICK SLIDES
TABLE OF CONTENTS
PHP UTF-8 EMAIL
All right, let us now get into an example of sending the PHP UTF-8 email.
SENDING UTF-8 HTML EMAIL
// (A2) MAIL HEADERS $head = [ "MIME-Version: 1.0", "Content-type: text/html; charset=utf-8" ]; // (A3) CC & BCC if ($cc !== null) < $head[] = "Cc: " . implode(", ", $cc); >if ($bcc !== null) < $head[] = "Bcc: " . implode(", ", $bcc); >// (A4) SEND MAIL return mail($to, $subject, $body, implode("\r\n", $head)); > // (B) SEND TEST MAIL echo umail ( "Test Email", "This is 強い.", "job@doe.com", ["joe@doe.com", "jon@doe.com"], ["jon@doe.com", "joy@doe.com"] ) ? "OK" : "ERROR";
- $subject The subject.
- $body The message itself.
- $to – The recipient. Use a string for a single recipient, and an array for multiple recipients.
- $cc $bcc The CC and BCC. Same as $to , omit or use null if none.
HOW ABOUT CSS?
Yes, it is possible to append style=»COSMETICS» directly to the HTML tags. But take note that tags will probably not work… Depending on the email client.
DOWNLOAD & NOTES
Here is the download link to the example code, so you don’t have to copy-paste everything.
SUPPORT
600+ free tutorials & projects on Code Boxx and still growing. I insist on not turning Code Boxx into a «paid scripts and courses» business, so every little bit of support helps.
EXAMPLE CODE DOWNLOAD
Click here for the source code on GitHub gist, just click on “download zip” or do a git clone. I have released it under the MIT license, so feel free to build on top of it or use it in your own project.
EXTRA BITS & LINKS
That’s it for all the code examples, and here are some extras that may be useful to you.
LINKS & REFERENCES
INFOGRAPHIC CHEAT SHEET
THE END
Thank you for reading, and we have come to the end of this tutorial. I hope that it has helped you to better understand mail in PHP, and if you have anything to share, please feel free to comment below. Good luck and happy coding!
Leave a Comment Cancel Reply
Search
Breakthrough Javascript
Take pictures with the webcam, voice commands, video calls, GPS, NFC. Yes, all possible with Javascript — Check out Breakthrough Javascript!
Socials
About Me
W.S. Toh is a senior web developer and SEO practitioner with over 20 years of experience. Graduated from the University of London. When not secretly being an evil tech ninja, he enjoys photography and working on DIY projects.
Code Boxx participates in the eBay Partner Network, an affiliate program designed for sites to earn commission fees by linking to ebay.com. We also participate in affiliate programs with Bluehost, ShareASale, Clickbank, and other sites. We are compensated for referring traffic.