Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > отправка почты


Автор: Areostar 22.7.2015, 17:12
отсылаю письма следущим образом:
Код


$to      =  $adrress;
    $subject = "report";
    $message =  $content;
    $headers = 'From: [email protected]' . "\r\n" .
    'Reply-To: [email protected]' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();




письма не на все почты доходят а если дохрдят то часто в спаме оказываются.

Как исправить ситуацию!?

Может каким готовым скриптом пользоваться!? 

Автор: tzirechnoy 22.7.2015, 17:41
1) Добавить заголовок To:
2) Убедиться, что адрес в конверте (MAIL FROM) правильный -- т.е. то жэ значение, что и в Reply-To: и From:
3) Убедиться, что этот адрес -- достижым.
4) Использовать для отправки почтовый сервер, адрес которого не находится ни в каких блэклистах.
5) Убедиться, что содержымое $content соответствует RFC. В частности, не содержыт
слишком длинных строк и 8-битных символов.
6) Послать письмо на любой хост с спамассасином, и папкой Spam/ и посмотреть по заголовкам, какие проверки он провалил (и исправить по возможности).

Автор: Areostar 22.7.2015, 17:44
CCылку или примерчик можно??

Автор: Areostar 23.7.2015, 08:22
пытаюсь пользовать вот это:

http://webi.ru/webi_files/php_libmail.html

но в gmail всёравно в спам скидывает!

Вычитал что надо как то так:
Код

$mail->smtp_on("ssl://smtp.gmail.com","login","passw", 465); 


что за логин и пороль тут нужен? 

Автор: Areostar 23.7.2015, 23:15
Вот заголовки что я получаю с письмом

Цитата

Delivered-To: [email protected]
Received: by 10.112.92.172 with SMTP id cn12csp680657lbb;
        Thu, 23 Jul 2015 13:07:51 -0700 (PDT)
X-Received: by 10.180.87.199 with SMTP id ba7mr20975437wib.81.1437682071382;
        Thu, 23 Jul 2015 13:07:51 -0700 (PDT)
Return-Path: <[email protected]>
Received: from srv.algolead.com ([46.166.173.16])
        by mx.google.com with ESMTPS id y8si8674360wiw.51.2015.07.23.13.07.51
        for <[email protected]>
        (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Thu, 23 Jul 2015 13:07:51 -0700 (PDT)
Received-SPF: neutral (google.com: 46.166.173.16 is neither permitted nor denied by best guess record for domain of [email protected]) client-ip=46.166.173.16;
Authentication-Results: mx.google.com;
       spf=neutral (google.com: 46.166.173.16 is neither permitted nor denied by best guess record for domain of [email protected]) [email protected];
       dmarc=fail (p=NONE dis=NONE) header.from=yandex.ru
Received: from algolead by srv.algolead.com with local (Exim 4.85)
    (envelope-from <[email protected]>)
    id 1ZIMmU-0007Xo-17
    for [email protected]; Thu, 23 Jul 2015 23:07:50 +0300
To: [email protected]
Subject: Report from ALGOLEAD
From: [email protected]
Reply-To: [email protected]
X-Mailer: PHP/5.4.42
Message-Id: <[email protected]>
Date: Thu, 23 Jul 2015 23:07:50 +0300
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - srv.algolead.com
X-AntiAbuse: Original Domain - otb-algo.com
X-AntiAbuse: Originator/Caller UID/GID - [503 513] / [47 12]
X-AntiAbuse: Sender Address Domain - srv.algolead.com
X-Get-Message-Sender-Via: srv.algolead.com: authenticated_id: algolead/only user confirmed/virtual account not confirmed

И чего тут нехватает и как исправить!?

Автор: major123 28.9.2015, 21:15
Цитата(Areostar @ 23.7.2015,  08:22)
пытаюсь пользовать вот это:

http://webi.ru/webi_files/php_libmail.html

но в gmail всёравно в спам скидывает!

Вычитал что надо как то так:
Код

$mail->smtp_on("ssl://smtp.gmail.com","login","passw", 465); 


что за логин и пороль тут нужен?

Если через  mail отправлял, то некоторые сервера её блокируют, не могу найти ссылку где выкладывали скрипт для отправки формы через smtp авторизацию, вот мой, думаю разберёшься:

Код

function get_data($fp)
 {
  $data="";
   while($str = fgets($fp,515)) 
   {
    $data .= $str;
     if(substr($str,3,1) == " ") { break; }
   }
   return $data;
 }
// $name - имя от кого, $fname - фамилия, $theme - тема, $text - текст сообщения
function smtp_mail($name, $fname = "", $theme, $text)
{
 $header="Date: ".date("D, j M Y G:i:s")." +0700\r\n"; 
$header.="From: =?utf-8?Q?".str_replace("+","_",str_replace("%","=",urlencode("$name $fname")))."?= <от кого отправить>\r\n"; 
$header.="X-Mailer: The Bat! (v3.99.3) Professional\r\n"; 
$header.="Reply-To: =?utf-8?Q?".str_replace("+","_",str_replace("%","=",urlencode("$name $fname")))."?= <от кого отправить>\r\n";
$header.="X-Priority: 3 (Normal)\r\n";
$header.="Message-ID: <172562218.".date("YmjHis")."@mail.ru>\r\n";
$header.="To: =?utf-8?Q?".str_replace("+","_",str_replace("%","=",urlencode('Имя кому письмо')))."?= <кому отправить почта>\r\n";
$header.="Subject: =?utf-8?Q?".str_replace("+","_",str_replace("%","=",urlencode("$theme")))."?=\r\n";
$header.="MIME-Version: 1.0\r\n";
$header.="Content-Type: text/plain; charset=utf-8\r\n";
$header.="Content-Transfer-Encoding: 8bit\r\n";

$smtp_conn = fsockopen("ssl://smtp.mail.ru", 465,$errno, $errstr, 10);

$data = get_data($smtp_conn);

fputs($smtp_conn,"EHLO vasya\r\n");
$data = get_data($smtp_conn);

fputs($smtp_conn,"AUTH LOGIN\r\n");
$data = get_data($smtp_conn);

fputs($smtp_conn,base64_encode("от кого отправить")."\r\n");
$data = get_data($smtp_conn);

fputs($smtp_conn,base64_encode("пароль")."\r\n");
$data = get_data($smtp_conn);

// считаем количество символов письма со всеми заголовками, чтобы передать какого размера будет письмо
$size_msg=strlen($header."\r\n".$text); 

fputs($smtp_conn,"MAIL FROM:<от кого отправить> SIZE=".$size_msg."\r\n");
$data = get_data($smtp_conn);

fputs($smtp_conn,"RCPT TO:<кому отправить почта>\r\n");
$data = get_data($smtp_conn);

fputs($smtp_conn,"DATA\r\n");
$data = get_data($smtp_conn);

fputs($smtp_conn,$header."\r\n".$text."\r\n.\r\n");
$data = get_data($smtp_conn);

fputs($smtp_conn,"QUIT\r\n");
$data = get_data($smtp_conn);

}

smtp_mail($names, $fnames = "", $themes, $text);

Это на примере mail.ru.
Работает, может есть косяки, давно дело было

Автор: s1lver 6.10.2015, 15:54
Если вопрос еще актуален, то советую использовать уже готовую библиотеку. Хорошим выбором будет использование https://github.com/PHPMailer/PHPMailer. Абсолютно никаких сложностей в использовании не должно быть.  smile 

Автор: Sanchezzz 8.10.2015, 14:31
https://github.com/swiftmailer/swiftmailer

Автор: Areostar 9.10.2015, 18:34
Цитата(s1lver @ 6.10.2015,  15:54)
Если вопрос еще актуален, то советую использовать уже готовую библиотеку. Хорошим выбором будет использование https://github.com/PHPMailer/PHPMailer. Абсолютно никаких сложностей в использовании не должно быть.  smile

Его и использовал. Но всё равно спасибо!

Добавлено через 40 секунд
Цитата(Sanchezzz @ 8.10.2015,  14:31)
https://github.com/swiftmailer/swiftmailer

Спасибо. Посмотрю!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)