2016-08-01 131 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

你的问题不是很清楚,但我会在你问以此来猜测。

请勿使用提交者的电子邮件地址作为发件人地址。它是伪造的,通常意味着您因SPF违规被拒绝或最终进入垃圾邮件文件夹。出于这个原因,Gmail不允许您使用任意地址(尽管您可以在gmail偏好设置中预定义别名),它只是简单地使用您的用户名地址。

将提交者地址设置为回复(请参阅PHPMailer中的addReplyTo())和您自己的地址作为发件人地址。这样你就不会伪造任何东西,而且回复会去正确的地方。就像这样:

$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中说的是什么setFrom Value意味着用户电子邮件和用户名称在我打电话时不会发送cods好的,谢谢你的帮助 –

+0

你确实需要设置一个From地址,但是不要使用表单中的用户值,这是不安全的。我会修改我的答案来提供一个例子。 – Synchro

0

如果是从Gmail的服务器尝试,试试这个(不使用TLS加密):

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

OR(使用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,但我也会尝试,请告诉为什么发件人的电子邮件和名称没有收到我收到来自根@本地主机的信息 –

相关问题