Как лучше всего отправлять письма?

Yurecm
На сайте с 25.02.2007
Offline
233
979

Это не спам рассылка, но писем 100 в месяц будет на разные email.

Если делать через стандартную функцию mail, то часть писем не доходит.

mail($to, "Письмо с сайта", $mess,

"From: ".$from."\n".
"Reply-To: ".$from."\n".
"Content-Type: text/plain; charset=windows-1251\n\n");

Может в коде что не так?

Есть ли еще какие-то 100% альтернативы?

Заранее спасибо :)

DiAksID
На сайте с 02.08.2008
Offline
218
#1

с функцией mail всй нормально. та часть писем, которые "не доходят", наверняка просто отсеиваются почтовиками из за кривой записи PTR . так почтовые службы пытаются бороться со спамерами на домашних серверах и криворукими умельцами/хитрецами.

трясите хостера, пусть пропишет корректные PTR для ваших IP и все письма будут доходить на любой почтовик, 100%. ничего там хитрого нет, просто чётко обозначьте задачу...

show must go on !!!...
LEOnidUKG
На сайте с 25.11.2006
Offline
1730
#2

Сделайте рассылку через SMTP отпадёт много проблем.

mail() в основном нужен для отправки писем на локальную почту.

Если хотите чтобы всё работала на нём, то нужно настраивать и сервер и скрипты.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
Yurecm
На сайте с 25.02.2007
Offline
233
#3
LEOnidUKG:
Сделайте рассылку через SMTP отпадёт много проблем.

насколько сложно это сделать?

Joker-jar
На сайте с 26.08.2010
Offline
154
#4

Я отправляю письма функцией mail, но настроена она таким образом, что письма отправляются при помощи внешнего SMTP-сервера (Яндекс). Для этого дела задействовал ssmtp (пакет есть во многих дистрибутивах). Точно не скажу, но, кажется, подобное можно сделать и через exim. В /etc/ssmtp/ssmtp.conf прописывается mailhub (например, smtp.yandex.ru), для каждого виртуального хоста указывается почтовый ящик, который будет использоваться при отправки почты:

php_admin_value sendmail_path "/usr/sbin/ssmtp -t -i -aunoreply@site.ru -appassword"

сами почтовые ящики создаю в ppd.yandex.ru. Непосредственно в PHP-скрипте отправка почты по такой схеме выглядит так:


$headers = 'From: Администрация www.Site.ru <noreply@site.ru>' . NEWLINE;
$headers .= 'Content-type: text/html; charset=utf-8' . NEWLINE;

$email = 'somebody@othersite.ru';

mail($email, 'Тема письма', 'текст письма', $headers);

Такую схему родил сам :) Может можно и проще, но мне нравится.

LEOnidUKG
На сайте с 25.11.2006
Offline
1730
#5
Yurecm:
насколько сложно это сделать?

Берёте class.phpmailer.php он есть в интернете.

Потом в коде:

function smtpmail($to, $subject, $content, $attach=false)

{

include_once ($_SERVER['DOCUMENT_ROOT']."/class.phpmailer.php");

$__smtp = array(

"host" => "", //Я сюда вбиваю IP сервака

"debug" => 0, //Отладка

"auth" => true, //Авторизация в SMPT

"port" => 25, // Какой порт

"username" => "@", //Логин почты

"password" => "pass", //Пароль на почту

"addreply" => "@", //Какую почту подставлять в раздел "Ответить"

"replyto" => ""

);

$mail = new PHPMailer(true);

$mail->IsSMTP();

try {

$mail->Host = $__smtp['host'];

$mail->SMTPDebug = $__smtp['debug'];

$mail->SMTPAuth = $__smtp['auth'];

$mail->Host = $__smtp['host'];

$mail->Port = $__smtp['port'];

$mail->Username = $__smtp['username'];

$mail->Password = $__smtp['password'];

$mail->AddReplyTo($__smtp['addreply'], $__smtp['username']);

$mail->AddAddress($to);

$mail->SetFrom($__smtp['addreply'], $__smtp['username']);

$mail->AddReplyTo($__smtp['addreply'], $__smtp['username']);

$mail->Subject = htmlspecialchars($subject);

$mail->MsgHTML($content);

if($attach) $mail->AddAttachment($attach);

$mail->Send();

} catch (phpmailerException $e) {

} catch (Exception $e) {

}

}

Ну и как уже догадались:

smtpmail('Кому',тема письма, сообщение,файл-если нужно);

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий