php - PHPMailer 不使用 GoDaddy 发送电子邮件
问题描述
我在 GoDaddy 上设置了一个邮件程序,我的代码如下所示:
$mail = new PHPMailer(true);
$mail->IsSMTP();
$mail->SMTPDebug = 3;
$mail->SMTPAuth = false;
$mail->Port = 25;
$mail->Host = "localhost";
$mail->Username = 'username';
$mail->Password = 'password';
$mail->isSendmail();
$mail->From = $email;
$mail->FromName = "Website";
$mail->AddAddress("jn@website.com");
$mail->Subject = "Inquiry - " . $name;
$mail->WordWrap = 80;
$mail->MsgHTML($message);
$mail->IsHTML(true);return $mail->send();
我得到的输出如下:
使用 sendmail 发送:
Sendmail path: /usr/sbin/sendmail -t -i
Sendmail command: /usr/sbin/sendmail -t -i -oi -ft@t.com -t
Envelope sender: t@t.com
Headers: Date: Wed, 21 Apr 2021 22:43:52 +0000To: jn@website.comFrom: Website <t@t.com>Subject: Inquiry - testMessage-ID: <Km4AQw3yoiFLxzzxLhULZdgQjrgPSBSTT66rxurg4@website.com>X-Mailer: PHPMailer 6.3.0 (https://github.com/PHPMailer/PHPMailer)MIME-Version: 1.0Content-Type: multipart/alternative; boundary="b1_Km4AQw3yoiFLxzzxLhULZdgQjrgPSBSTT66rxurg4"Content-Transfer-Encoding: 8bit
Result: true
问题是我没有收到这些电子邮件。
提前感谢您的任何回复。
解决方案
@zanderwar 的回答大多是正确的,但不幸的是并不那么相关。您可以使用任何语言同样出色地欺骗电子邮件来源,但这就是我们拥有 SPF 和 DKIM 的原因。
这里的主要问题是使用 GoDaddy。他们阻止出站 SMTP,并要求您仅通过他们自己的secureserver.net
服务器发送,无需加密或身份验证。这足以防止在除 GoDaddy 拥有的域之外的几乎所有情况下进行有用的发送。您可以通过一种机制将它们添加到您的 SPF 记录中include
,但这不太可能对接收者产生太大影响。
你还有一些其他的问题。
您正在调用isSMTP()
,但是isSendmail()
- 后者是最后调用的,因此将是实际使用的,这意味着您的所有 SMTP 设置都将被忽略。选择一种发送机制。
isSendmail()
接下来,无论如何您都不太可能真正想要使用;这适用于那些自定义安装自己的邮件服务器软件的用户,这些软件需要特殊处理mail()
(例如 qmail)或 SMTP 到 localhost(极少数情况)不支持。您在 GoDaddy 上,这意味着您无论如何都不能这样做。要么使用默认值isMail()
,要么最好使用 SMTP localhost
(最快和最安全的方法,也提供最好的反馈)。
你很难说出发生了什么,因为你没有错误处理。您没有检查任何返回值,没有异常处理(您也需要在 PHPMailer 中启用),没有显示错误消息,也没有启用调试输出(尽管这仅对 SMTP 发送非常有用)。我建议您将代码基于PHPMailer 提供的示例,这些示例展示了如何执行这些操作。
是的,您还应该与 DKIM 签约,但同样,GoDaddy 在这里将无济于事。
最后,发帖前先搜索;这里有很多关于将PHPMailer 与 GoDaddy一起使用的问题和答案,其中大部分与使用 GoDaddy 所固有的问题完全相同。如果可能的话,我建议转移到一个不会让电子邮件变得如此混乱的主机。
推荐阅读
- node.js - NodeJS - Promise returns undefined object inside a redis pool await
- angular - 如何将动态值附加到 URL?
- python-3.x - 从python中的日期列表中添加日期
- python - TensorFlow 异常:模块 'tensorflow.tools.api.generator.api.math' 没有属性 'log'
- apache-flex - Flex mxmlc ant 任务给出 java.lang.OutOfMemoryError: Java heap space
- scala - 如何构建多个 Spark 数据帧并并行运行?
- microsoft-graph-api - 如何将 onedrive 文件共享给组织外的人员
- go - 如何使用gorm创建到mysql的ssl连接?
- angularjs - 使用 angularjs 显示 API 内容
- linux - rc.local 的环境