PHPMailer将无法使用Yahoo Mail地址($ mail-> AddCC方法的问题)

use*_*345 0 php email phpmailer

我对PHPMailer有点困惑.我正在尝试在一个网站中使用它,其中一个人填写表格,并包括他们的姓名,电子邮件信息.

我正在尝试将这些信息通过电子邮件发送给我,并将副本通过电子邮件发送给该人 - 因此使用$mail->addCC($email)方法.

但是,每次我尝试从雅虎电子邮件地址发送测试电子邮件时,它都不起作用.它适用于gmail地址.

编辑 - 当我说它不适用于雅虎电子邮件地址时,从技术上讲,我得到的是来自他们的"邮件传递失败"电子邮件.

我有一个$mail->addCC($email)方法的目的是将副本发送给用户,并且发送给我的那个是我可以回复的那个.

我已经尝试$mail->addCustomHeader($email);但仍然会产生同样的问题,即雅虎邮件不会提供它.

如何使这个PHPMailer工作,以便将副本发送给我和用户?

另外,我是否错误地使用此PHPMailer表单?我很困惑,$mail->From = $email;我目前已将其设置为来自用户的电子邮件地址,因此我可以回复它.那是错的吗?

$first_name = $_POST['first-name'];
$last_name = $_POST['last-name'];
$email = $_POST['email'];
$message = nl2br($_POST['message']);

require 'PHPMailerAutoload.php';

$mail = new PHPMailer;

$mail->isSMTP();                        // Set mailer to use SMTP
$mail->Host = 'host info';              // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                 // Enable SMTP authentication
$mail->Username = 'user info';          // SMTP username
$mail->Password = 'pw';                 // SMTP password
$mail->SMTPSecure = 'tls';              // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; 

$mail->From = $email;
$mail->FromName = $first_name;
$mail->addAddress('my email address');  // Add a recipient  
$mail->addCC($email);                   // Add a recipient

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

$mail->Subject = 'Hotel Room Request';
$mail->Body    = $message; 

$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    header('location: url here');
} else {
    header('location: url here');
}
Run Code Online (Sandbox Code Playgroud)

Pat*_*ore 5

将From设置为发件人(在本例中为Yahoo,但其他ISP也将阻止)是您的问题.接收邮件服务器可以快速识别它没有发送消息 - 一旦它发送,它就会怀疑垃圾邮件.

相反,将From设置为服务器上的某个地址(no-reply @是我通常使用的),然后将发件人添加为Reply-To标头.

回复标题完全符合它的含义:当您单击"回复"按钮时,它会填充发送到该值而不是实际发件人的新邮件.

$mail->addReplyTo( $email, $first_name );
$mail->addAddress( $email, $first_name );
$mail->addAddress( 'your@email.com', 'You' );
$mail->From = 'your@email.com';
$mail->FromName = $first_name;
Run Code Online (Sandbox Code Playgroud)

为了回应你以后的评论,关于回复是自己用户的地址,我会这样处理:

$mail = new PHPMailer;

$mail->isSMTP();                        // Set mailer to use SMTP
$mail->Host = 'host info';              // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                 // Enable SMTP authentication
$mail->Username = 'user info';          // SMTP username
$mail->Password = 'pw';                 // SMTP password
$mail->SMTPSecure = 'tls';              // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; 

$mail->From = 'your@email.com';
$mail->FromName = $first_name;

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

$mail->Subject = 'Hotel Room Request';
$mail->Body    = $message; 

$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

// SEND TO YOURSELF

$mail->addReplyTo( $email, $first_name );
$mail->addAddress( 'your@email.com', 'You' );
$mail->send();

// CLEAR REPLY TO AND RECIPIENTS 

$mail->clearReplyTos();
$mail->clearAllRecipients();

// SEND TO THE USER

$mail->addAddress( $email, $first_name );
$mail->addReplyTo( 'your@email.com', 'You' );


if(!$mail->send()) {
    header('location: url here');
} else {
    header('location: url here');
}
Run Code Online (Sandbox Code Playgroud)