В предыдущей статье я писал как отправлять письмо через SMTP авторизацию, но тот метод в последствии заимел некоторые проблемы на различных хостерах и пришлось искать более универсальное решение. В данном примере прописываются все заголовки корректно и антиспам системы уже не будут ругаться на письма как в предыдущем решении. Но чтобы это сработало мне пришлось использовать чужие библиотеки. Так что перед использованием моего скрипта требуется скачать дополнительные файлы с классами для работы с SMTP отправлениями.
А вот собственно сам код рабочей функции:
// _____________________________________________________________________________
function sdf_email($_o)
// $_o - о=options - соджержит в себе различные опции при отправке письма
// $_o['address'] - email, кому отправляется письмо
// $_o['title'] - заголовок письма
// $_o['text_'] - содежание письма
// $_o['email_send'] - от кого отправлять письмо
// $_o['email_send_name'] - от кого представиться
// $_o['smtp_server'] - SMTP server
// $_o['smtp_server_port'] - SMTP port
// $_o['smtp_login'] - SMTP логин
// $_o['smtp_password'] - SMTP пароль
// $_o['path_lib'] - по какому пути находятся библитеки / классы для отправки писем
// $_o['html'] - если письмо нужно отправлять в HTML формате
// $_o['cp1251'] - 1 если требуется отправлять письмо в кодировке cp1251
{
$path=$_SERVER['DOCUMENT_ROOT'].'/!sd/other/';// путь по умолчанию, где лежат библиотеки
if (isset($_o['path_lib'])) { $path=$_o['path_lib']; }// если путь указан принудительно, то берем его
require_once($path.'phpmailer.php');// подгружаем основную библиотеку
require_once($path.'pop3.php');// подгружаем POP3 библиотеку
$mail=new PHPMailer();// создаем объект
if ((isset($_o['cp1251'])) and ($_o['cp1251']==1))// если требуется кодировка cp1251
{ $mail->CharSet='cp1251';// выставляем с какой кодировкой работать
$title=iconv('utf-8','windows-1251',$_o['title']);// кодируем заголовок
$text_=iconv('utf-8','windows-1251',$_o['text_']);// кодируем сам текст
}
else// иначе, по умолчанию используется кодировка UTF-8
{ $mail->CharSet='utf-8';// выставляем с какой кодировкой работать
$title=$_o['title'];// прописываем заголовок
$text_=$_o['text_'];// прописываем текст
}
$mail->IsSMTP();// устанавливаем флаг, что будем использовать SMTP авторизацию
$mail->SMTPAuth=true;// требуется применить, только SMTP идентификацию при отправке
$mail->Host=$_o['smtp_server'];// прописываем server / host для отправления
$mail->Port=$_o['smtp_server_port'];// прописываем port для отправления
$mail->Username=$_o['smtp_login'];// SMTP логин
$mail->Password=$_o['smtp_password'];// SMTP пароль
if ($_o['html']==1) { $mail->IsHTML(true); }// если письмо нужно отправлять в HTML формате
$mail->Body=$text_;// вставляем текст
$mail->From=$_o['email_send'];// от кого отправлять письмо
$mail->FromName=$_o['email_send_name']; // От кого представиться
$mail->Subject=$title;// устанавливаем тему письма
$mail->AddAddress($_o['address']);// добавляем адрес, кому отправляем письмо
$r=$mail->Send();// отправляем письмо
return $r;
}
Сам непосредственно вызов выглядет так
$o=array();// прописываем опции $o['email_send']='';// от кого письмо $o['email_send_name']='';// от кого письмо (Имя) $o['smtp_server']='';// SMTP server $o['smtp_server_port']=25;// SMTP port $o['smtp_login']='';// имя пользователя $o['smtp_password']='';// пароль пользователя $o['address']='';// кому письмо $o['title']='Subject test';// тема письма $o['html']=0;// 0 - письмо в текстовом формате, 1 - в HTML формате $o['text_']='Тестовый текст'."\n";// текст письма sdf_email($o);// отправка письма
Вот как то так.