2016-01-08 8 views
0

Я пытаюсь отправить электронное письмо, чтобы сбросить пароль пользователя, используя php mail(), но его отправляет в папку спама только в учетной записи Gmail в почте yahoo, которую я могу получить эта почта внутри почтовый ящик. я googled и видел, что некоторые люди говорят использовать SMTP-сервер почты через phpmailer.Почта, помеченная как спам только почтой gmail по php mail(), а также smtp

я пытался это тоже, но я получаю тот же результат, как PHP почте() функция сделал .. здесь мой PHP почты() код функции

$headers = 'From: [email protected]' . "\r\n"; 
$headers .= 'Reply-To: '.$to.''; 
$headers .= 'Subject: ' . $subject ." \r\n"; 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset="iso-8859-1"'. "\r\n"; 
@mail($to, $subject, $msg, $headers); 

и PHP Mailer SMTP код

date_default_timezone_set('Etc/UTC'); 

require_once 'PHPMailerAutoload.php'; 

$mail = new PHPMailer; 

//Tell PHPMailer to use SMTP 
$mail->isSMTP(); 

//Enable SMTP debugging 
// 0 = off (for production use) 
// 1 = client messages 
// 2 = client and server messages 
$mail->SMTPDebug = 2; 

//Ask for HTML-friendly debug output 
$mail->Debugoutput = 'html'; 

//Set the hostname of the mail server 
$mail->Host = 'mydomain.us'; 

// use 
// $mail->Host = gethostbyname('smtp.gmail.com'); 
// if your network does not support SMTP over IPv6 
//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission 
$mail->Port = 465; 

//Set the encryption system to use - ssl (deprecated) or tls 
$mail->SMTPSecure = 'ssl'; 

//Whether to use SMTP authentication 
$mail->SMTPAuth = true; 

//Username to use for SMTP authentication - use full email address for gmail 
$mail->Username = "[email protected]"; 

//Password to use for SMTP authentication 
$mail->Password = "pass"; 

//Set who the message is to be sent from 
$mail->setFrom('[email protected]', 'sender name'); 

//Set an alternative reply-to address 
$mail->addReplyTo('[email protected]', 'sender name'); 

//Set who the message is to be sent to 
$mail->addAddress($to, 'John Doe'); 

//Set the subject line 
$mail->Subject = $subject; 

//Read an HTML message body from an external file, convert referenced images to embedded, 
//convert HTML into a basic plain-text alternative body 
$mail->msgHTML($msg); 

//Replace the plain text body with one created manually 
//$mail->AltBody = 'This is a plain-text message body'; 

//Attach an image file 
//$mail->addAttachment('images/phpmailer_mini.png'); 

//send the message, check for errors 
if (!$mail->send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { 
    echo "Message sent!"; 
} 
+0

Ли ваше сообщение попадает в спам, не имеет слишком большого отношения к тому, как вы его отправляете, но больше связано с тем, что вы отправляете, и с тем, что ваши получатели делают с ним. Если получатели отмечают это как спам, в ближайшее время gmail начнет это делать по умолчанию. В Gmail есть история маркировки почти всего, что спам, и все хуже. – Synchro

ответ

0

Ваш код выглядит хорошо, но если IP-адрес вашего сервера был добавлен в спам-шпионы, которые используются для фильтрации спама, не имеет значения, как вы отправляете почту с вашего сервера.

Сделайте поиск в Google для чего-то вроде «черного списка почтовых серверов» и проверьте IP-адрес своего сервера, чтобы узнать, был ли он включен в черный список. Если вы арендуете сервер у хостинговой компании, изменения вашего IP-адреса были использованы другими людьми до вас.

Попробуйте создать тестовую учетную запись Gmail для своей компании и попробуйте отправить и отправить по электронной почте с вашего сервера, используя эту учетную запись Gmail с SMTP, и узнать, доставлено ли электронное письмо. От вашего имени будет отправлено электронное письмо с сервера Gmail.

Другим вариантом является использование службы API почтовой службы, например Mailgin.