未收到PhpMailer的用户名和电子邮件地址
未收到发件人电子邮件和姓名。 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';
}
?>
你的问题不是很清楚,但我会在你问以此来猜测。
请勿使用提交者的电子邮件地址作为发件人地址。它是伪造的,通常意味着您因SPF违规被拒绝或最终进入垃圾邮件文件夹。出于这个原因,Gmail不允许您使用任意地址(尽管您可以在gmail偏好设置中预定义别名),它只是简单地使用您的用户名地址。
将提交者地址设置为回复(请参阅PHPMailer中的addReplyTo()
)和您自己的地址作为发件人地址。这样你就不会伪造任何东西,而且回复会去正确的地方。就像这样:
$mail->addReplyTo($_POST['email'], $_POST['name']);
$mail->setFrom('[email protected]', 'My Name');
这是把这些值转换成邮件正文以及在情况下,它是一个无效的电子邮件地址是一个好主意,由于一个简单的错字,例如user @example.com
。答复将不起作用,但您仍然可以获得数据。
如果是从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';
我认为'xxxhost.com'是一个替代域名,所以可能只是一个错字。 – Martin
感谢您的答以及它不是Gmail我使用我的服务器主机wc-122.atnoc.com,但我也会尝试,请告诉为什么发件人的电子邮件和名称没有收到我收到来自根@本地主机的信息 –
也许我无法解释什么我需要但最后我解决它 –
$ mail-> setFrom($ mail,$ name); //这行鳕鱼不工作,但当我直接把$ _POST它的工作很好 $ mail-> setFrom($ _ POST ['email'] ;, $ _POST ['name'];); //它的工作 也许它不是一个正确的格式来放鳕鱼,但它为我工作 再次我会告诉你我在QSn setFrom中说的是什么setFrom Value意味着用户电子邮件和用户名称在我打电话时不会发送cods好的,谢谢你的帮助 –
你确实需要设置一个From地址,但是不要使用表单中的用户值,这是不安全的。我会修改我的答案来提供一个例子。 – Synchro