首页 > 解决方案 > 为什么 PHPMailer 花费太多时间来发送电子邮件,而且一旦发送电子邮件,我就会收到垃圾邮件

问题描述

我想使用用户输入的电子邮件地址发送电子邮件到我的电子邮件地址,使用 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/");
}
 ?>

请帮我解决这个问题,并在此先感谢。

标签: phpemailphpmailer

解决方案


首先,您使用的是非常旧的 PHPMailer 版本;更新到最新版本

虽然你说它很慢,但你没有说有多慢- 1 秒?30秒?10分钟?您使用默认mail()传输发送,这意味着您正在提交到本地邮件服务器 - 这可能配置错误或速度缓慢,但这超出了 PHPMailer 的责任范围。

您正在伪造“发件人”地址(如果您的邮件服务器允许您这样做),将导致 SPF 检查失败,这通常会将您放入垃圾邮件文件夹。改为这样做:

$mail->setFrom('me@example.com', 'My Name');
$mail->addAddress('me@example.com');
$mail->addReplyTo($_POST['email']);

也就是说,从您自己发送给您自己,但使用提交者的回复。这样,对消息的回复将发送给提交者,但您不会伪造发件人地址。

我建议您使用PHPMailer 提供的联系表单示例重新开始。


推荐阅读