未收到发件人电子邮件和姓名。
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 = 'xxxxxx@host.com'; // 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('support@example.com'); // 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 :(得分: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';
答案 1 :(得分:0)
你的问题不是很清楚,但我会猜测你在问什么。
请勿使用提交者的电子邮件地址作为发件人地址。它是伪造的,通常意味着您因SPF违规而被拒绝或最终被垃圾邮件文件夹拒绝。由于这个原因,Gmail不允许您使用任意地址(虽然您可以在gmail prefs中预定义别名),但它只会使用您的用户名地址。
将提交者的地址设置为回复(请参阅PHPMailer中的addReplyTo()
)和您自己的地址作为来自地址。这样你就不会伪造任何东西,回复将会到达正确的地方。像这样:
$mail->addReplyTo($_POST['email'], $_POST['name']);
$mail->setFrom('me@example.com', 'My Name');
将这些值放入邮件正文中是个好主意,以防由于简单的拼写错误导致邮件地址无效,例如user @example.com
。回复将无效,但您仍然可以获得数据。