PHPMailer 不适用于 Yahoo Mail 地址($mail->AddCC 方法的问题)
PHPMailer won't work with Yahoo Mail addresses (issues with $mail->AddCC method)
我对 PHPMailer 有点困惑。我试图在一个网站中使用它,一个人在其中填写表格,并包括他们的姓名、电子邮件信息。
我正在尝试通过电子邮件将这些信息发送给我,并将副本发送给那个人 - 因此使用了 $mail->addCC($email)
方法。
但是,每次我尝试从 yahoo 电子邮件地址发送测试电子邮件时,它都不起作用。它确实适用于 gmail 地址。
编辑 - 当我说它不适用于雅虎电子邮件地址时,从技术上讲,我收到的是来自他们的 "mail delivery failed" 电子邮件。
我使用 $mail->addCC($email)
方法的目的是将副本发送给用户,而发送给我的就是我可以回复的副本。
我试过$mail->addCustomHeader($email);
,但仍然会产生同样的问题,即,yahoo 邮件无法投递。
如何使这个 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');
}
将 From 设置为来自发件人(在本例中为 Yahoo,但其他 ISP 也会阻止)是您的问题。接收邮件服务器可以快速识别它没有发送邮件 - 一旦发送,它就会怀疑是垃圾邮件。
相反,将发件人设置为您服务器上的某个地址(no-reply@ 是我通常使用的地址),然后将发件人添加为 Reply-To header.
Reply-To header 确实听起来像:当您单击 "Reply" 按钮时,它会填充一条新消息发送到该值 ,而不是 [=实际发件人的 21=]。
$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;
针对您后来的评论,关于Reply-To是自己用户的地址,我会这样处理:
$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');
}
我对 PHPMailer 有点困惑。我试图在一个网站中使用它,一个人在其中填写表格,并包括他们的姓名、电子邮件信息。
我正在尝试通过电子邮件将这些信息发送给我,并将副本发送给那个人 - 因此使用了 $mail->addCC($email)
方法。
但是,每次我尝试从 yahoo 电子邮件地址发送测试电子邮件时,它都不起作用。它确实适用于 gmail 地址。
编辑 - 当我说它不适用于雅虎电子邮件地址时,从技术上讲,我收到的是来自他们的 "mail delivery failed" 电子邮件。
我使用 $mail->addCC($email)
方法的目的是将副本发送给用户,而发送给我的就是我可以回复的副本。
我试过$mail->addCustomHeader($email);
,但仍然会产生同样的问题,即,yahoo 邮件无法投递。
如何使这个 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');
}
将 From 设置为来自发件人(在本例中为 Yahoo,但其他 ISP 也会阻止)是您的问题。接收邮件服务器可以快速识别它没有发送邮件 - 一旦发送,它就会怀疑是垃圾邮件。
相反,将发件人设置为您服务器上的某个地址(no-reply@ 是我通常使用的地址),然后将发件人添加为 Reply-To header.
Reply-To header 确实听起来像:当您单击 "Reply" 按钮时,它会填充一条新消息发送到该值 ,而不是 [=实际发件人的 21=]。
$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;
针对您后来的评论,关于Reply-To是自己用户的地址,我会这样处理:
$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');
}