php - 为什么 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/");
}
?>
请帮我解决这个问题,并在此先感谢。
解决方案
首先,您使用的是非常旧的 PHPMailer 版本;更新到最新版本。
虽然你说它很慢,但你没有说有多慢- 1 秒?30秒?10分钟?您使用默认mail()
传输发送,这意味着您正在提交到本地邮件服务器 - 这可能配置错误或速度缓慢,但这超出了 PHPMailer 的责任范围。
您正在伪造“发件人”地址(如果您的邮件服务器允许您这样做),将导致 SPF 检查失败,这通常会将您放入垃圾邮件文件夹。改为这样做:
$mail->setFrom('me@example.com', 'My Name');
$mail->addAddress('me@example.com');
$mail->addReplyTo($_POST['email']);
也就是说,从您自己发送给您自己,但使用提交者的回复。这样,对消息的回复将发送给提交者,但您不会伪造发件人地址。
我建议您使用PHPMailer 提供的联系表单示例重新开始。
推荐阅读
- text - 谷歌语音是否有任何 URL 结构可以准备好数字输入?
- r - 非线性最小二乘故障排除
- .net - 将 .net core 2.2 升级到 3.0
- c++ - 如何将指针传递给指针向量?
- python - 将 tf-idf 与 FastText 向量一起使用
- javascript - 使用 time.split 后替换字符在 DialogFlow 中不起作用
- javascript - 在反应中,在等待/异步完成之前运行函数序列的最佳方法是什么?- 使用执行时间
- facebook-prophet - Facebook-Prophet:拟合时出现溢出错误
- swift - 如何将数据保存到 swift/firebase 中特定登录用户的特定 uid
- mongodb - 在 mongo 函数中执行聚合查询