Warning: Creating default object from empty value in /var/www/u0668192/data/www/kuzevich.ru/components/com_k2/views/itemlist/view.html.php on line 743
Материалы отфильтрованы по дате: августа 2018
PHP скрипт отправки почты через SMTP SSL mail.ru
Выкладываю для общего пользования пример PHP-скрипта для отправки почты через SMTP ssl mail.ru
<?php function get_data($smtp_conn) { $data=""; while($str = fgets($smtp_conn,515)) { $data .= $str; if(substr($str,3,1) == " ") { break; } } return $data; } $header="Date: ".date("D, j M Y G:i:s")." +0700\r\n"; $header.="From: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode('ВашеИмя')))."?= <ВашаПочта@mail.ru>\r\n"; $header.="X-Mailer: The Bat! (v3.99.3) Professional\r\n"; $header.="Reply-To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode('ВашеИмя')))."?= <ВашаПочта@mail.ru>\r\n"; $header.="X-Priority: 3 (Normal)\r\n"; $header.="Message-ID: <172562218.".date("YmjHis")."@mail.ru>\r\n"; $header.="To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode('ИмяПолучателя')))."?= <АдресПолучателя@gmail.com>\r\n"; $header.="Subject: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode('проверка')))."?=\r\n"; $header.="MIME-Version: 1.0\r\n"; $header.="Content-Type: text/plain; charset=windows-1251\r\n"; $header.="Content-Transfer-Encoding: 8bit\r\n"; $text="привет, проверка связи."; $smtp_conn = fsockopen("ssl://smtp.mail.ru", 465,$errno, $errstr, 10); $data = get_data($smtp_conn); $code = substr($data,0,3); print 'Connection:'.$data; print '<br>'; fputs($smtp_conn,"EHLO mail.ru\r\n"); $data = get_data($smtp_conn); $test='qwe'; $code = substr($data,0,3); echo 'EHLO:'.$data; print '<br>'; fputs($smtp_conn,"AUTH LOGIN\r\n"); $data = get_data($smtp_conn); $code = substr($data,0,3); echo 'AUTH:'.$data; print '<br>'; fputs($smtp_conn,base64_encode("ВашаПочта@mail.ru")."\r\n"); $data = get_data($smtp_conn); $code = substr($data,0,3); echo $data; print '<br>'; fputs($smtp_conn,base64_encode("ВашПароль")."\r\n"); $data = get_data($smtp_conn); $code = substr($data,0,3); echo 'pass:'.$data; print '<br>'; fputs($smtp_conn,"MAIL FROM:ВашаПочта@mail.ru\r\n"); $data = get_data($smtp_conn); $code = substr($data,0,3); echo 'MAIL:'.$data; print '<br>'; fputs($smtp_conn,"RCPT TO:АдресПолучателя@gmail.com\r\n"); $data = get_data($smtp_conn); $code = substr($data,0,3); echo 'RCPT:'.$data; print '<br>'; fputs($smtp_conn,"DATA\r\n"); $data = get_data($smtp_conn); $code = substr($data,0,3); echo 'DATA:'.$data; print '<br>'; fputs($smtp_conn,$header."\r\n".$text."\r\n.\r\n"); $data = get_data($smtp_conn); $code = substr($data,0,3); echo 'header:'.$data; print '<br>'; fputs($smtp_conn,"QUIT\r\n"); $data = get_data($smtp_conn); $code = substr($data,0,3); echo 'QUIT:'.$data; print '<br>'; ?>
ocStore 2.3.0.2.3 не отправляются письма smtp через mail.ru
Столкнулся с проблемой отправки писем из интернет-магазина на базе ocStore 2.3.0.2.3
Для начала проверьте настройки магазина в админке: Система-Настройки
Откройте редактирование магазина и на вкладке почта установите:
Почтовый протокол: SMTP
Параметры функции mail оставьте пустым
SMTP хост: ssl://smtp.mail.ru
SMTP логин: вашапочта@mail.ru
SMTP пароль: вашпароль
SMTP порт: 465
SMTP таймаут: 60
Затем посмотрите логи /log/error.log
У меня там была ошибка: PHP Fatal error: Uncaught Exception: Error: RCPT TO not accepted from server! in /var/www/clients/client1/web1/web/system/library/mail.php:340
Не работала форма обратной связи и не приходили на почту заказы клиентов.
Я начал с исправления формы обратной связи.
Для этого нужно поправить файл /catalog/controller/information/contact.php
исправить строку
$mail->setReplyTo($this->request->post['email']);
на
$mail->setReplyTo($this->config->get('config_email'));
Если все исправили, то при отправке формы получите сообщение: Ваш запрос был успешно отправлен администрации магазина!
Для того чтобы приходило оповещение о заказе, нужно исправить файл /system/storage/modification/catalog/model/checkout/order.php
в 3х местах найти строки
$mail->setTo($order_info['email']);
или
$mail->setTo($this->config->get('config_email'));
и заменить их на:
$mail->setTo($this->config->get('config_email'));
$mail->setReplyTo($this->config->get('config_email'));
Если все получилось, то в конце оформления заказа, будете получать сообщение:
Заказ успешно сформирован!
Ваш заказ был успешно сформирован!