2016-10-10 6 views
1

Я использую этот код для своей контактной формы на веб-сайте html, но почта не входит в папку «Входящие» Gmail.Электронная почта не поступает в почтовый ящик Gmail, используя этот код php

Может кто-нибудь помочь мне, я пытаюсь решить эту проблему, но у меня нет руководства.

<?php 
session_cache_limiter('nocache'); 
$subject = $_REQUEST['subject']; // Subject of your email 
$to = "[email protected]"; //Recipient's E-mail 

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= "From: " . $_REQUEST['name'].'<'.$_REQUEST['email'] .'>'. "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

$message = 'Name: ' . $_REQUEST['name'] . "<br>"; 
$message .= 'Company: ' . $_REQUEST['company'] . "<br>"; 
$message .= $_REQUEST['message']; 

if (@mail($to, $subject, $message, $headers)) 
{ 
    // Transfer the value 'sent' to ajax function for showing success message. 
    echo 'sent'; 
    // header('Location: ../index.html'); 
} 
else 
{ 
    // Transfer the value 'failed' to ajax function for showing error message. 
    echo 'failed'; 
} 
?> 
+0

использование почты функция вместо at.mail, at.mail функция не бросает все предупреждения/ошибки – user3099298

+0

проверить вас спам. – Veer

+0

Обратите внимание, что вам нужно указать правильный идентификатор почты. Я столкнулся с той же проблемой несколько дней назад. –

ответ

0

Если вы разрабатываете эту программу на локальном сервере. Письма не будут отправляться на ваш аккаунт gmail.

Если вы хотите протестировать свой код на локальном компьютере, пожалуйста, установите Test Mail Server Tool.

Не будет доставлено электронное письмо во время работы на локальной машине, но вы получите представление о том, как будет выглядеть электронное письмо.

При запуске на сервере веб-хостинга электронное письмо будет отправлено на идентификатор электронной почты, указанный в поле $to.

1

Есть проблемы с настройкой заголовка. И самое главное, что вам нужно определить правильный и действительный идентификатор электронной почты в разделе From, потому что Google обычно используется для проверки домена, из которого поступает почта.

Если это не указано в белом списке на конец Google, оно автоматически отправит письмо спаму, что происходит сейчас, как я думаю.

Проблема проста в том, что функция PHP-Mail не использует хорошо настроенный SMTP-сервер. В настоящее время почтовые клиенты и серверы выполняют массивные проверки на сервере отправки электронной почты, например обратном DNS-поиске, Graylisting и whatevs. Все эти тесты потерпят неудачу с помощью функции php mail(). Если вы используете динамический ip, его еще хуже. Используйте PHPMailer-Class и настройте его на использование smtp-auth вместе с хорошо сконфигурированным выделенным SMTP-сервером (либо локальным, либо удаленным), и ваши проблемы:

Вы можете попробовать приведенный ниже код.

$headers = "From: [email protected]\r\n"; 
$headers .= "Reply-To: [email protected]\r\n"; 
$headers .= "Return-Path: [email protected]\r\n"; 
$headers .= "CC: [email protected]\r\n"; 
$headers .= "BCC: [email protected]\r\n"; 

Ссылка Ссылка. https://github.com/PHPMailer/PHPMailerPHPMailer/PHPMailerPHPMailer

Существует еще один код, который вы можете попробовать:

function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) { 
$file = $path.$filename; 
$file_size = filesize($file); 
$handle = fopen($file, "r"); 
$content = fread($handle, $file_size); 
fclose($handle); 
$content = chunk_split(base64_encode($content)); 
$uid = md5(uniqid(time())); 
$header = "From: ".$from_name." <".$from_mail.">\r\n"; 
$header .= "Reply-To: ".$replyto."\r\n"; 
$header .= "MIME-Version: 1.0\r\n"; 
$header .= "Content-Type: multipart/mixed;boundary=\"".$uid."\"\r\n\r\n"; 
$header .= "This is a multi-part message in MIME format.\r\n"; 
$header .= "--".$uid."\r\n"; 
$header .= "Content-type:text/plain;charset=iso-8859-1\r\n"; 
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; 
$header .= $message."\r\n\r\n"; 
$header .= "--".$uid."\r\n"; 
$header .= "Content-Type: application/octet-stream;name=\"".$filename."\"\r\n"; 
// use different content types here$header .= "Content-Transfer-Encoding: base64\r\n"; 
$header .= "Content-Disposition: attachment;filename=\"".$filename."\"\r\n\r\n"; 
$header .= $content."\r\n\r\n"; 
$header .= "--".$uid."--"; 
if (mail($mailto, $subject, "", $header)) {echo "mail send ... OK"; 
    // or use booleans here} else {echo "mail send ... ERROR!"; 
} 
} 
+0

Обратите внимание, что вам нужно указать правильный идентификатор почты. –