gpt4 book ai didi

PHPMailer 不使用 GoDaddy 发送电子邮件

转载 作者:行者123 更新时间:2023-12-04 07:45:39 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





PHP mail function doesn't complete sending of e-mail

(29 个回答)


4 个月前关闭。




我正在 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
问题是我没有收到这些电子邮件。
预先感谢您的任何答复。

最佳答案

PHP 电子邮件可以轻松欺骗 From header 并且经常被拒绝。此处的可能性是您的接收方邮件服务器以潜在不安全为由拒绝了它。
请注意,仅仅因为电子邮件离开了您的服务器,并不意味着收件人的邮件服务器很乐意接收它。通常邮件服务器会回复 Status: OK即使它无意将其传递到收件人邮箱。
您可以尝试以下几件事:

  • 确保您的 From是一个有效的电子邮件地址。
  • DKIM 可以极大地帮助验证电子邮件是否来自有效位置
  • SPF 可以帮助验证电子邮件是否来自它所说的位置。
  • 修改 X-Mailer 头,一些 MX 服务器将 PHPMailer 视为不可信。看这里:https://phpmailer.github.io/PHPMailer/classes/PHPMailer.PHPMailer.PHPMailer.html#property_XMailer

  • DKIM
    DKIM 要求您使用自己生成的公钥/私钥在要发送的域上拥有 TXT DNS 记录:
    请注意,DNS 记录应使用 公钥
    v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4lox7LckG2/QtT/IY677O2JTgzh3z/FKKqGSVjAk6Gh+7Tyu8jjFUmPdLj/G5u9cFGkQvqa[..]QJZOGgxBeFv2V/Evk9GZtF+3yiHm5tZvi0Z4xhT17dt8ZxcFZ3QIDAQAB
    TXT DNS 记录的名称应为: whoeveryouare._domainkey.mydomain.com然后,您可以使用 PHPMailer 签署您的电子邮件,如下所示:
    // must match the domain in the "From"
    $this->DKIM_domain = "mydomain.com"

    // private key path
    $this->DKIM_private = "/path/to/dkim/private.key";

    // dns selector (this matches with TXT record with hostname: whoeveryouare._domainkey.mydomain.com)
    $this->DKIM_selector = 'whoeveryouare';

    // private key passphrase (has none)
    $this->DKIM_passphrase = '';

    //Suppress listing signed header fields in signature, defaults to true for debugging purpose
    $this->DKIM_copyHeaderFields = true; // SHOULD BE FALSE IN PRODUCTION

    // who is signing this email
    $this->DKIM_identity = $this->From;
    使用 DKIM 可以抑制说它们是“代表发送”的电子邮件,并提高收件人邮件服务器接受您的电子邮件的机会。
    防晒指数
    SPF 代表发件人政策框架。

    Sender Policy Framework (SPF) is an email authentication method designed to detect forging sender addresses during the delivery of the email


    SPF 有助于确保发件人(发件人地址)实际上来自它所说的地方。 SPF 记录如下所示
    v=spf1 +ip4:192.168.3.4 -all
    其中 192.168.3.4 是发送电子邮件的服务器的 IP 地址。

    我个人扩展 PHPMailer 并即时完成所有这些:
    /**
    * Class Mailer
    *
    * A wrapper class for the PHPMailer package
    */
    class Mailer extends \PHPMailer\PHPMailer\PHPMailer
    {
    /**
    * PHPMailer constructor.
    *
    * Automatically configure SMTP credentials and adjust X-Mailer header
    *
    * @param null $exceptions
    */
    public function __construct($exceptions = null)
    {
    parent::__construct($exceptions);

    $this->XMailer = "My Super Cool Platform";
    }

    /**
    * Automatically signs emails with a DKIM signature if enabled
    *
    * @return bool
    * @throws \PHPMailer\PHPMailer\Exception
    */
    public function send()
    {
    // must match the domain in the "From"
    $this->DKIM_domain = "mydomain.com"

    // private key path
    $this->DKIM_private = "/path/to/dkim/private.key";

    // dns selector (this matches with TXT record with hostname: whoeveryouare._domainkey.mydomain.com)
    $this->DKIM_selector = 'whoeveryouare';

    // private key passphrase (has none)
    $this->DKIM_passphrase = '';

    //Suppress listing signed header fields in signature, defaults to true for debugging purpose
    $this->DKIM_copyHeaderFields = true; // SHOULD BE FALSE IN PRODUCTION

    // who is signing this email
    $this->DKIM_identity = $this->From;


    return parent::send();
    }
    }
    处理电子邮件始终是一件乏味的事情,您可以通过使用 SMTP 服务器发送带有 DKIM/SPF 的电子邮件来解决您将面临的许多问题,这是一个重要的奖励。

    关于PHPMailer 不使用 GoDaddy 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67204452/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com