2016-08-01 2 views
0

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

Благодаря

<?php 
require 'PHPMailerAutoload.php'; 
$name = $_POST['fname']; 
$mail = $_POST['email']; 
$subject = $_POST['subj']; 
$message = $_POST['mssg']; 


$mail = new PHPMailer; 

$mail->isSMTP();  // Set mailer to use SMTP 
$mail->Host = 'xxxxhost.com'; // Specify main and backup SMTP servers 
$mail->SMTPAuth = true; // Enable SMTP authentication 
$mail->Username = '[email protected]';  // SMTP username 
$mail->Password = 'xxxxxxxxxxxx';    // SMTP password 
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted 
$mail->Port = 25; // TCP port to connect to 

$mail->setFrom($mail, $name); // this value not received 
// Add a recipient 
$mail->addAddress('[email protected]'); // Name is optional 


$mail->isHTML(true); // Set email format to HTML 

$mail->Subject = $subject; 
$mail->Body = $message; 


if(!$mail->send()) { 
echo 'Message could not be sent.'; 
echo 'Mailer Error: ' . $mail->ErrorInfo; 
} else { 
echo 'Message has been sent'; 
} 
?> 

ответ

0

Вы вопрос не очень понятно, но я возьму догадываться, что вы просите.

Не используйте адрес электронной почты отправителя как адрес From. Это подделка и обычно означает, что вы отклоняетесь для нарушений SPF или попадаете в папки спама. По этой причине Gmail не позволяет использовать произвольные адреса из адресов (хотя вы можете предопределять псевдонимы в префайлах gmail), и вместо этого он будет просто использовать ваш адрес пользователя.

Задайте адрес отправителя как ответ (см. addReplyTo() в PHPMailer) и ваш собственный адрес как адрес. Таким образом, вы ничего не будете подделывать, а ответы вернутся в нужное место. Как это:

$mail->addReplyTo($_POST['email'], $_POST['name']); 
$mail->setFrom('[email protected]', 'My Name'); 

Это хорошая идея, чтобы поместить эти значения в тело сообщения, а также в случае, если это неверный адрес электронной почты из-за простую опечатку, например user @example.com. Ответ-не будет работать, но у вас все еще будут данные.

+0

Возможно, я не могу объяснить, что мне нужно, но, наконец, я его решаю –

+0

$ mail-> setFrom ($ mail, $ name); // эта строка трески не работает, но когда я прямо ставил $ _POST, ее работа была приятной $ mail-> setFrom ($ _ POST ['email'] ;, $ _POST ['name'];); // его рабочий , может быть, это не правильный формат для размещения треков, но его работа для меня снова я скажу вам, что я пытался сказать в моем Qsn setFrom Value означает, что адрес электронной почты пользователя и имя пользователя не были отправлены, когда я вызываю это cods Ну спасибо за вашу помощь –

+0

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

0

Если вы пытаетесь с сервера Gmail, попробуйте это (без Tls шифрования):

$mail->Host = "mail.xxxhost.com"; 
$mail->Port = 26; 

ИЛИ (с шифрованием TLS):

$mail->SMTPSecure = "tls"; 
$mail->Host = "smtp.gmail.com"; 
$mail->Port = 587; 

мая вам необходимо исправить в своем коде

$mail->host = "mail.xxxhost.com"; 

из

$mail->host = 'xxxhost.com'; 
+0

Я предполагаю, что 'xxxhost.com' был заменяющим доменом, поэтому, возможно, это просто опечатка. – Martin

+0

Спасибо, что хорошо, а не Gmail, я использую свой серверный хост wc-122.atnoc.com, но я тоже попробую это, и, пожалуйста, скажите, почему отправитель электронной почты и имя не получено. Я получаю сообщение от root @ localhost –

Смежные вопросы