我想使用用户输入的电子邮件地址将电子邮件发送到使用PHPMailer且不使用SMTP的电子邮件地址。但是发送电子邮件会花费太多时间,一旦发送电子邮件,我就会收到垃圾邮件而不是收件箱中的邮件。 下面是我的完整代码-
<?php
session_start();
require_once 'class.phpmailer.php';
$mail = new PHPMailer;
$mail->From = $_POST['email'];
$mail->FromName ='Contacted By : '.$_POST['fname'];
$mail->addAddress("dev5.veomit@gmail.com");
$mail->addReplyTo($_POST['email'], "Reply");
$mail->isHTML(true);
$mail->Subject = "Subject Text";
$mail->Body = "<b>Name : </b>".$_POST['fname'].'<br/><b>Email Address : </b>'.$_POST['email'].'<br/><b>Message : </b>'.$_POST['msg'];
$mail->AltBody = "This is the plain text version of the email content";
if(!$mail->send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
$_SESSION['sucess-email']='You Have Contacted Successfully.';
header("Location: https://m-expressions.com/test/voy/");
}
?>
请帮助我解决此问题,并先谢谢您。
答案 0 :(得分:0)
首先,您使用的是旧版本的PHPMailer; Update to the latest version。
虽然您说的很慢,但您没有说有多慢-1秒? 30秒? 10分钟?您正在使用默认的mail()
传输进行发送,这意味着您正在提交到本地邮件服务器-可能配置错误或速度较慢,但这不在PHPMailer的职责范围内。
您正在伪造“发件人”地址(如果您的邮件服务器允许您这样做),将导致SPF检查失败,这通常会使您进入垃圾邮件文件夹。改为这样做:
$mail->setFrom('me@example.com', 'My Name');
$mail->addAddress('me@example.com');
$mail->addReplyTo($_POST['email']);
也就是说,从您自己发送到自己,但使用提交者的答复。通过这种方式对邮件的回复将发送给提交者,但您不是在伪造发件人地址。