2017-02-09 10 views
2

Ну, у меня проблема, что у меня нет никакой подсказки и я уже прочитал все, что мог найти.Отправка почты php с использованием gmail SMTP don`t прибывает

У меня есть код в php, использующий phpMailer, который использует gmail, письма поступают туда, где они должны, когда php-архив открывается терминалом, но, когда я загружаюсь на сервер, электронные письма просто приходят к окончательной судьбе, если они никогда не приходите на почту.

В моем случае я хочу отправить сообщение по электронной почте [email protected], то есть письмо Gmail.

Я просто не могу понять, почему электронные письма работают только в конечном итоге, когда они отправляются на учетную запись hotmail или gmail ([email protected]), но на экземпляр [email protected] (то есть gmail) не работает.

Заранее благодарен!

код PHP:

<?php 

date_default_timezone_set('Etc/UTC'); 

require 'PHPMailerAutoload.php'; 


$mail = new PHPMailer(); 


$mail->SMTPDebug = 2; 

$mail->Debugoutput = 'html'; 


$mail->Host = 'smtp.gmail.com'; 



$mail->Port = 587; //same problem with other ports 


$mail->SMTPSecure = 'tls'; //same problem with ssl 


$mail->SMTPAuth = true; 


$mail->Username = "[email protected]"; 


$mail->Password = "password"; 


$name = strip_tags($_POST['name']); 
$email = strip_tags($_POST['email']); 
$message = strip_tags($_POST['message']); 

$mail->setFrom($email, $name); 


$mail->addAddress('[email protected]', 'exemple Name');  

$mail->Subject = 'Contact'; 


$mail->Body = $message; 


if (!$mail->send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { 
    echo "Message sent!"; 
} 

EDIT:

я узнал ответ, мой сервер был от GoDaddy, так:

GoDaddy

Популярные США хостинг-провайдер GoDaddy накладывает очень строгие (вплоть до почти бесполезного) ограничения на отправку электронной почты. Они блокируют исходящий SMTP для портов 25, 465 и 587 для всех серверов, кроме их собственных. Эта проблема является предметом многих разочаровывающих вопросов о переполнении стека. Если вы обнаружите, что ваш скрипт работает на вашем локальном компьютере, но не при загрузке его в GoDaddy, это будет то, что происходит с вами. Решение очень плохо задокументированы GoDaddy: Вы должны послать через свои серверы, а также отключить все функции безопасности, имя пользователя и пароль (большой, да ?!), что дает вам этот конфиг для PHPMailer:

$mail->isSMTP(); 
$mail->Host = 'relay-hosting.secureserver.net'; 
$mail->Port = 25; 
$mail->SMTPAuth = false; 
$mail->SMTPSecure = false; 
GoDaddy also refuses to send with a From add 

ССГ принадлежность для любых доменов aol, gmail, yahoo, hotmail, live, aim или msn (см. их документы). Это связано с тем, что все эти области развертывают анти-фальшивые меры SPF и DKIM, а подделка вашего адреса - подделка.

Возможно, вам будет легче переключиться на более просвещенного хостинг-провайдера.

+0

что такое сообщение об ошибке, что вы получите? – Sooraj

+0

Если отправленное вами письмо прибывает в hotmail и gmail и не работает в companyName.io, проблема возникает в companyName.io (а не в вашем скрипте). Может быть, есть брандмауэр или фильтр, и он получает спам? –

+0

@Sooraj я не получаю ошибки, php посылает электронное письмо, но если это не gmail, он никогда не прибывает:/ –

ответ

1

Я думаю, вам не хватает IsSMTP() установка:

$mail = new PHPMailer(); 
$mail->IsSMTP(); 
+0

Я уже пробовал это, но когда я пишу и запускаю, появляется такая ошибка: ** SMTP ERROR: Не удалось подключиться к серверу: php_network_getaddresses: getaddrinfo не удалось: имя или услуга неизвестны (0) Ошибка SMTP connect(). https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting Ошибка Mailer: сбой SMTP connect(). https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting** Итак, я видел на этом посту, что могу взять, если отключено: [http: // stackoverflow.com/questions/39445338/phpmailer-mail-error-smtp-connect] Большое спасибо за беседу, я буду больше читать о том, как снять $ mail-> IsSMTP() –

+0

, вы очень много поможете! tx много! редактирование с правильным ответом на вопрос на вершине! : D: D –