Офис НП AMWAY в Ярославле
Купить продукцию Амвей в Ярославле, офис Amway
На карте Купить AMWAY: офис в ЯрославлеКонсультации, презентации, мастер–классы, знакомство с продукцией, заказ и выдача купленного товара:
Адрес: улица Валентины Терешковой, дом 1 (Вход со двора)
Телефон: +7 (920) 112-00-91
Email: matyxho@mail.ru
Сайт: https://www.amway.ru/user/lebedem
Визитка: http://yar.meweb.ru
Иерархия статей
Статьи » Программирование » PHPMailer: установка, подключение, настройка скрипта
Сниппет
Весьма качественный и полезный скрипт для рассылки (отправки) email сообщений с вашего сайта. Приведу пару примеров его настройки: отправка письма с вложением и массовая рассылка с вложением.
PHPMailer: установка, подключение, настройка скрипта
Опубликовал  Pisatel Добавлено  27-04-2015 15:31 27 Апрель 2015 15:31:14 49747  Прочтений 49747 Прочтений  509 Комментариев 509 Комментариев
Обновлено: 27-04-2015 15:53 Обновлено: 27 апреля 2015 15:53:29  printer
В статье расскажу об установке и настройке скрипта для отправки email сообщений PHPMailer, скачать который можно здесь: https://github.co.../PHPMailer. Нам потребуются файлы и директории:
  • /language/
  • PhpMailerAutoload.php
  • class.phpmailer.php
  • class.smtp.php
  • class.pop3.php
Итак, создадим папку, например, /mailer/, и все файлы скрипта загрузим в нее. Ну а далее я приведу пару примеров функции для отправки письма (писем). Не буду останавливаться на письмах в стандарте text, все наши письма будут в стандарте html. Итак, начнем с самого простого: функция для отправки письма с изображением (логотип сайта), но без аутентификации smtp:

Код: PHP
        function sendemail($fromemail, $fromname, $toemail, $toname, $subject, $message) {

date_default_timezone_set("Europe/Moscow"); // устанавливаем часовую зону

require "PHPMailerAutoload.php"; // подключаем файл автозагрузки

$mail = new PHPMailer(); // инициализируем класс

file_exists("/language/phpmailer.lang-ru.php") ? $mail->SetLanguage("ru", "/language/") : $mail->SetLanguage("en", /language/"); // подключили языковой пакет для вывода ошибок и отчетов

$mail->isMAIL(); // указали, что не смтп

$mail->CharSet = "UTF-8"; // кодировка заголовков

$mail->setFrom($fromemail, $fromname); // от кого

$mail->addReplyTo($fromemail, $fromname); // адрес и имя для ответа

$mail->Subject = $subject; // заголовок письма (тема сообщения)

$plain = $mail->html2text($message); // создаем текстовую версию для устройств, не поддерживающих html

$mail->isHTML(true); // указали, что сообщение в стандарте html

$img_path = "/images/mylogo.png"; // адрес логотипа

$img_cid = md5($img_path); // сид логотипа

$img_name = "mylogo"; // имя логотипа

$mail->addEmbeddedImage($img_path, $img_cid, $img_name); // добавили в тело письма логотип

$body = "<!DOCTYPE html>"; // создаем тело письма

$body .= "<html><head>"; // структуру я минимизирую, шаблонов в сети много, либо создайте свой

$body .= "<meta charset='UTF-8' />";

$body .= "<title>".$subject."</title>";

$body .= "</head><body>";

$body .= "<table><tr><td>";

$body .= "<table style='width:600px'><tr><td>";

$body .= "<a href='http://www.meweb.ru/' title='MeWEB' target='_blank'><img src='cid:".$img_cid."' alt='MeWEB' /></a></td>"; // указали место, где будет отображен логотип

$body .= "<td>";

$body .= "<a href='http://www.meweb.ru/' title='MeWEB' target='_blank'>MeWEB</a><br /><br /><a href='mailto:".$fromemail."'>".$fromemail."</a></td></tr>";

$body .= "<tr><td colspan='2'>&nbsp;</td></tr>";

$body .= "<tr><td colspan='2'><h3 syle='text-align:center'>".$subject."</h3>".nl2br($message)."</td></tr>"; // вывели в тело тему письма и само письмо

$body .= "<tr><td colspan='2'><em>All rights reserved | Copyright &copy; <a href='http://www.meweb.ru/' title='MeWEB' target='_blank'>MeWEB</a> ".date("Y")."</em></td></tr>";

$body .= "</table></td></tr></table>";

$body .= "</body></html>";

$mail->msgHTML($body); // формируем тело

$mail->AltBody = $plain; // альтернативное тело письма

$mail->addAddress($toemail, $toname); // добавляем получателя и отправляем

if (!$mail->send()) { // если произошла ошибка при отправке

$return = $toname." | ".str_replace("@", "&#64;", $toemail)." ".$mail->ErrorInfo." | ".date("d-m-Y в H:i:s"); // возвращаем сообщение об ошибке

} else {

$return = $toname." | ".str_replace("@", "&#64;", $toemail)." | ".date("d-m-Y в H:i:s");

} // если сообщение отправлено удачно- возвращаем время отправки

$mail->clearAddresses();

$mail->clearCustomHeaders();

$mail->clearAttachments();

$mail->clearReplyTos(); // чистим все заголовки

return $return;

}




Пример использования функции. Назовем наш файл с функцией sendemail.php и кинем в нашу папку /mailer/:

Код: PHP
    require_once "mailer/sendemail.php";

$sending = sendemail("от_кого@домен.ру", "Ваше_имя", "кому@домен.ру", "Имя_кому", "Тема_письма", "Сообщение");

echo "<div>".$sending."</div>";




Как видим, в принципе, ничего сложного нет. Функция вернет нам результат отправки.

Ну а в следующем примере я чуть усложню задачу: мы будем использовать SMTP и отправим письма сразу нескольким пользователям, но это будут не копии (скрытые копии) CC и BCC, а именно рассылка. То есть, фактически, ниже будет небольшой скрипт спамера))) Имена и email мы будем брать из бд. В заголовках письма и в самом письме будем посылать ссылку для отписки, чтобы меньше было шансов попасть в спам-лист почтовых сервисов. Для этого нужно будет создать страницу, перейдя на которую пользователь сразу автоматически отпишется от рассылки. Например, страница будет называться unsubscribe.php, а в качестве идентификатора пользователя мы будем передавать его уникальный id, под которым он существует в нашей бд. Что ж, начнем:

Код: PHP
     function sendemail_to_all($fromemail, $fromname, $subject, $message, $data) {

date_default_timezone_set("Europe/Moscow"); // временная зона

require "PHPMailerAutoload.php"; // подключили скрипт

$mail = new PHPMailer(); // инициализация класса

file_exists("/language/phpmailer.lang-ru.php") ? $mail->SetLanguage("ru", "/language/") : $mail->SetLanguage("en", "/language/"); // языковой пакет

$mail->isSMTP(); // указали, что работаем по протоколу смтп

$mail->Host = "smtp.yordomain.ru"; // хост

$mail->Port = "25"; // порт

$mail->SMTPAuth = true; // аутентификация включена

$mail->Username = "name@yourdomain.ru"; // реальный ящик, желательно совпадающий с вашим доменным именем

$mail->Password = "123456789"; // пароль от ящика

$mail->CharSet = "UTF-8"; // кодировка

$mail->setFrom($fromemail, $fromname); // от кого

$mail->addReplyTo($fromemail, $fromname); // кому ответить

$mail->Subject = $subject; // тема письма (заголовок)

$plain = $mail->html2text($message); // тело альтернативного письма

$mail->isHTML(true);

$img_path = "/images/mylogo.png"; // адрес логотипа

$img_cid = md5($img_path); // сид логотипа

$img_name = "mylogo"; // имя логотипа

$mail->addEmbeddedImage($img_path, $img_cid, $img_name); // добавили в тело письма логотип

$body = "<!DOCTYPE html>"; // создаем тело письма

$body .= "<html><head>"; // структуру я минимизирую, шаблонов в сети много, либо создайте свой

$body .= "<meta charset='UTF-8' />";

$body .= "<title>".$subject."</title>";

$body .= "</head><body>";

$body .= "<table><tr><td>";

$body .= "<table style='width:600px'><tr><td>";

$body .= "<a href='http://www.meweb.ru/' title='MeWEB' target='_blank'><img src='cid:".$img_cid."' alt='MeWEB' /></a></td>"; // указали место, где будет отображен логотип

$body .= "<td>";

$body .= "<a href='http://www.meweb.ru/' title='MeWEB' target='_blank'>MeWEB</a><br /><br /><a href='mailto:".$fromemail."'>".$fromemail."</a></td></tr>";

$body .= "<tr><td colspan='2'>&nbsp;</td></tr>";

$body .= "<tr><td colspan='2'><h3 syle='text-align:center'>Здравствуйте, {USER_NAME} !</h3>".nl2br($message)."<br /><br />Чтобы отписаться от рассылки, перейдите по ссылке <a href='http://www.meweb.ru/mailer/unsubscribe.php?delete={USER_ID}' target='_blank'>Отписаться</a></td></tr>"; // вывели в тело имя пользователя и само сообщение с ссылкой для отписки

$body .= "<tr><td colspan='2'><em>All rights reserved | Copyright &copy; <a href='http://www.meweb.ru/' title='MeWEB' target='_blank'>MeWEB</a> ".date("Y")."</em></td></tr>";

$body .= "</table></td></tr></table>";

$body .= "</body></html>";

$mail->msgHTML($body); // формируем тело

$mail->AltBody = $plain; // альтернативное тело письма

$i = 0;

foreach ($data as $row) { // проход по массиву из бд

unset($user); // вначале каждый раз очищаем переменную

$user = $row['user_id']; // уникальный id пользователя

$mail->addCustomHeader("Precedence", "bulk"); // добавили заголовок, чтобы дать понять почтовым сервисам, что это рассылка

$mail->AddCustomHeader("List-Unsubscribe", "<http://www.meweb.ru/mailer/unsubscribe.php?delete=".$user.">"); // добавили заголовок с ссылкой для отписки от рассылки

$mail->addAddress($row['user_email'], $row['user_name']); // добавили адрес и имя получателя

$mail->Body = str_replace(array("{USER_NAME}", "{USER_ID}"), array($row['user_name'], $user), $body); // вставляем в сообщение имя пользователя и уникальный id для ссылки

$mail->AltBody = str_replace(array("{USER_NAME}", "{USER_ID}"), array($row['user_name'], $user), $plain); // аналогично для альтернативного сообщения

if (!$mail->send()) { // если письмо не отправлено

$return[] = "ierror | ".$row['user_name']." | ".str_replace("@", "&#64", $row['user_email'])." ".$mail->ErrorInfo." | ".date("d-m-Y в H:i:s"); // возвращаем массив с ошибкой

break; // останавливаем перебор массива

} else { // если отправка прошла удачно

$return[] = "isuccess | ".$row['user_name']." | ".str_replace("@", "&#64", $row['user_email'])." | ".date("d-m-Y в H:i:s"); // возвращаем массив с отчетом

($i % 2 == 0) ? sleep(0.2) : sleep(0.4); // делаем паузу при рассылке между сообщениями

}

$mail->clearAddresses(); // в цикле чистим адрес, чтобы при новом проходе добавить другой

$mail->clearCustomHeaders(); // чистим в цикле заголовки, чтобы при новом проходе добавить новые

$i++;

}

$mail->clearAttachments();

$mail->clearReplyTos(); // очищаем

return $return; // функция возвращает нам результат в массиве

}




Далее — пример использования функции. Поместим ее в нашу папку /mailer/ в файл с именем sendemail_to_all.php. Априори подразумевается, что бд с пользователями (id, name, email) у вас уже существует и все подключения к ней выполнены. Поехали:

Код: PHP
    require "mailer/sendemail_to_all.php"; // подключили нашу функцию

$result = mysqli_query($db, "SELECT user_id, user_name, user_email FROM myusers"); // сделали выборку из базы

if (mysqli_num_rows($result)) { // если результат больше 0

while($arrs = mysqli_fetch_assoc($result)) { // запускаем цикл

$data[] = $arrs; // и формируем массив с данными пользователей

}

$sending = sendemail_to_all("mymail@mydomain.ru", "MyName", $subject, $message, $data); // отправляем письмо всем и записываем результат в переменную в виде массива, который отдаст функция

} else { иначе, если пользователей 0

$sending = "<div style='text-align:center'>База пуста!</div>"; // задаем переменную с сообщением

}

$onw = "";

$c = 0;

if (is_array($sending)) { // если переменная является массивом

foreach($sending as $wmess) { // проходим циклом

$m = explode(" | ", $wmess); // разбиваем строку по разделителю, превращая в массив, чтобы удобнее обращаться к элементам

$onw .= "<div>".((strpos($m[0], "isuccess") !== false) ? "<span style='color:green'>Отправлено: </span>" : "<span style='color:red'>Ошибка: </span>")." Имя: ".$m[1]." Email: ".$m[2]." Время: ".$m[3]."</div>";

$c++;

}

$all = $c; // счетчик

} else {

$onw .= $sending;

$all = 0;

}

echo $onw; // выводим результат

echo "Всего отправлено: ".$all;




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

Страницу для отписки, думаю, состряпаете сами, если возникнут вопросы или трудности — пишем в комментариях.

На этом заканчиваю. Основной целью данной статьи была необходимость показать, как работает скрипт PHPMailer. Это, конечно, далеко не все его возможности, и если будет время, как–нибудь мы еще поговорим о нем. Удачи всем и всего самого доброго.
Понравилась статья?
Метки для данной статьи
Похожие статьи
Поделиться:   
Комментарии
#501 | AndrewprimB 20 марта 2020 04:37:18
No Avatar
Гость
teen and mature lesbians tumblr tesreijetgefe.ml old lesbian strapon.
is online dating dangerous charmed dead man dating dating a manic pixie dream girl.
a cup teen nude black ebony teen porn workout perfect teen body nude.
amateur teens having sex craftogwarmlog amateur throat fuck cim babe.
free granny sex cams tralmantetacwalk.tk amature hidden sex cams.
live anal sex cams versdesbipe live amature sex cams.
amateur ebony lesbian tube lesbian videos julia ann jessie andrews penny flame lesbian porn.
adult japanese women nude gif skinny asian street meat anal creampie nude american indian women.
dating a transgender woman congcloskibamic dating sites in las vegas.
#502 | AndrewprimB 20 марта 2020 05:51:11
No Avatar
Гость
duogasm chaturbate zapsxiweacacha ok_kassidy_ok twitter chaturbate.
vintage amateur interracial homemade videos drapisesun gay amateur sex videos.
teen fingers milf pussy milf no pants nude big ass ebony milf.
what is thesis in essay leteresubszy.cf college essay about coffee.
free get laid sites varemako completely free online dating sites.
chaturbate recorded shows chaturbate romanian how to download chaturbate stream.
older guy and teen masturbate fuerecbucomney teen homemade threesome sex tape.
free dating sites in europe planelulamma good usernames for dating sites.
meetme hookup vieplanrusgefe sex hookup apps 2016 free.
#503 | AndrewprimB 20 марта 2020 07:07:08
No Avatar
Гость
dating a younger woman advice zaycalparesc.tk new free dating sites 2018 and 2019.
amateur mom and son porn easacplanhawmust.tk amateur side boob gifs.
korean actress sex scene moordcestkeetge asian bikini girl nude.
love happiness and dating dardtsotultiuwil.tk roblox stop online dating audio.
free teen lesbian videos cindy starfall porn lesbian lesbian celebrity porn.
free gay sex cams berdobepins.ml free home cams sex.
farmers dating site billing support number andudecela online dating not working.
good introduction for an elderly interview essay example which colleges require the sat essay persuasive essay on smoking.
hotel amateur interracial pawg gregerevnachun black amateur mature porn.
#504 | AndrewprimB 20 марта 2020 09:40:13
No Avatar
Гость
porn college girl pov infobicy.tk fucking college girls gif.
dating site with free messaging zaycalparesc social media dating sites.
little titty milf porn inuliznocfe.gq beautiful milf mom lez asshole tonguing gape.
amateur tits and nips gif amateur wife anal gif spread amateur bodystocking pussy tits.
beautiful black teen porn bingmipedinsmet.cf asian sucking black cock.
tumblr black college sex neugrimumxyz.tk college fuck pool table.
lesbian box truck sex tumblr homemade lesbian videos lesbian face sitting videos.
dating site pick up lines get married online gay dating sites.
how to start a body paragraph in an essay minisowar.cf which colleges require sat essay.
#505 | AndrewprimB 20 марта 2020 10:57:53
No Avatar
Гость
shy nude asian girl pagepobu.tk japanese family taboo sex.
amature teen sex videos interracial teen porn legal teen ass in thong.
amateur hebe chan naked gif cialefhopecom.gq porn pics amateur cocks dripping precum.
adults looking for sex unadoccoicrac.tk what is the best hookup site.
how to write an argument essay why did ron belgau remove his side b essay how to structure a narrative essay.
amateur step sister sex amateur busty milf lingerie nude amateur ebony sucks small white dick porn.
pinterest amateur nude hairy amateur ebony bbw porn amateur sub slut blindfolded gang bang.
dating a much younger woman best dating site for open relationships best bbw dating site.
amateurs teen first black man video lawkindrifi.tk amateur white wife interracial dp.
#506 | AndrewprimB 20 марта 2020 12:16:10
No Avatar
Гость
amateur teen thong bikini amateur wife fucks two guys amateur selfie nude petite teen girl pictures.
japanese lesbian porn uncensored consharrisucne japanese porn with subtitles.
amateur lesbian wives pics berworkbrisor.tk amateur daughter nude pics.
amateur latina throat fucked rablolaredis spread amateur mom pussy tits.
park min young dating othedviatrud sissy and black men dating.
innocent wife massage sex amateur pics hacked amateur porn pics small tits amateur.
amateur girl in panties domacomli naked amateur girls home alone on webcam.
older chinese lady naked pagepobu.tk asian forced anal porn vid.
charmed ones milf nudes taiplurenkhabgun.ml japanese small tit milf.
#507 | AndrewprimB 20 марта 2020 13:30:25
No Avatar
Гость
jiggling boobs milf doggy style mature milfs nude anal white guy hentai milf big ass.
lesbian pussy squirt gif upinselawnmus lesbian mom daughter porn.
free mature porn chat scenpickmone.tk uncensored japanese mature lesbian massage.
sexy naked mature women pics decutlaylara mature japanese anal gif.
best ddlg dating apps condhalera dating a divorced woman.
summary response essay sample contmoromotech.tk example of an essay.
black big ass porn rofollaforth.tk creampied thick and curvy black pussy.
asian huge cock anal lyasulvetipen japanese mind control porn.
free lesbian dating sites in usa osetlyree dating site kansas city.
#508 | AndrewprimB 20 марта 2020 14:47:54
No Avatar
Гость
browse free asian dating termethiveni.ga dating a religious guy.
lesbian webcam porn throwmuisuppkab.tk lesbian black porn.
petite amateur first anal machipbariret chubby ebony bbw amateur.
naked black women playing sports african american naked ladies gay black bear porn.
stories of mom fucking college boys tramegbenoca.ml real college sex tumblr.
article analysis essay example jenrediraf should you use contractions in college essays.
college guy fucked by huge cock spacciplaefinut photos of naked college boys.
my hairy blond mature ex wife muterwaynurco.tk mature wife fucked by younger man cum.
milf stepmom lesbian seduction big tit milf pictures milf hunter sex videos.
#509 | Allennum 20 марта 2020 16:50:24
No Avatar
Гость
amateur asian sex videos busty amateur milf porn ebony amateur anal porn.
free mature amateur anal scanaremmaamu amateur teens film at family nudist resort.
media analysis essay of the gilmore girls 50 essays a portable anthology 5th edition pdf how to cite a quote in an essay mla.
amateur wife loves to fuck alotumulem.ml naked dare amateurs in public.
sex websites best sex dating website ashleymadison.com.
www.facebook.com+ no 1 dating site singles com dating site.
best dating site in asia camflystdocuarrio.cf completely free dating sites for singles.
thai sex korean lesbian videos buipreceledzen alison tyler puffy pussy naked lesbian.
autism dating site reviews camflystdocuarrio.cf online dating scammer photos.
Добавить комментарий
Имя:

Проверочный код:
Последние активные темы форума
  Темы Просмотров Ответов Последние сообщения
folder Плагин Email рассылки Mail To All by Pisatel
CMS PHP Fusion
14892 33 promask
27. апреля 2019
folder Вопрос по переделке bb-кода
PHP, MySQL
3821 5 Pisatel
26. мая 2017
folder Вопросы по Ajax форме обратной связи
CMS PHP Fusion
16168 48 Ditrin
19. февраля 2017
folder BBCode YouTube Video Colorbox mod
CMS PHP Fusion
8361 2 Pisatel
10. декабря 2016
folder Как лучше создать собственную страницу?
CMS PHP Fusion
8326 17 Pisatel
11. мая 2016
folder Небольшие вопросы по скриптам магазина и катало...
PHP, MySQL
57253 80 Pisatel
11. января 2016
folder BBCode Code mod
CMS PHP Fusion
4521 0 Pisatel
31. августа 2015
folder Ajax Like Dislike Article Panel
CMS PHP Fusion
8847 16 Pisatel
07. июля 2015
folder Хлебные крошки / BreadCrumbs SEO Panel
CMS PHP Fusion
10483 17 Pisatel
04. июля 2015
folder Abbr Description BBCode
CMS PHP Fusion
3487 0 Pisatel
15. июня 2015
folder Подозрительный трафик и прочие страшилки
Всякая хрень
6945 2 Ditrin
23. апреля 2015
folder Мод Newsletter - рассылка писем пользователям с...
CMS PHP Fusion
8720 13 Pisatel
10. апреля 2015
folder Мод отправки писем PHPMailer для PHP-Fusion
CMS PHP Fusion
45825 113 Ditrin
06. апреля 2015
folder Появление неизвестного файла subscriptions.php
CMS PHP Fusion
4121 2 Pisatel
06. апреля 2015
folder Autoban on IP
CMS PHP Fusion
14789 13 Pisatel
03. апреля 2015