PhpMailer

时间:2016-08-01 13:51:18

标签: php 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 = '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';
}
?>

2 个答案:

答案 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。回复将无效,但您仍然可以获得数据。