簡體   English   中英

為什么我在嘗試使用phpmailer發送電子郵件激活新用戶帳戶時收到此錯誤

[英]Why am i getting this error when trying to send email for activation of new user account with phpmailer

我試圖理解為什么我的index.php中的主題方法觸發了一個沒有被定義的錯誤。我正在使用phpmailer 5.2.7與php 7.2和wampserver 3.1.7

//這是phpmailer的擴展類//

<?php
include('phpmailer.php');

class Mail extends PhpMailer
{

    // Set default variables for all new objects

    public $From     = 'xxxxxx@gmail.com';
    public $FromName =  MM;
    public $Host     = 'smtp.gmail.com';
    public $Mailer   = 'smtp';
    public $SMTPAuth =  true;
    public $Username = 'xxxxxxx@gmail.com';
    public $Password = 'xxxxxx';
    public $SMTPSecure = 'ssl';
    public $WordWrap = 75;



    public function subject($subject)
    {
        $this->Subject = $subject;
    }

    public function body($body)
    {
        $this->Body = $body;
    }

    public function send()
    {
        $this->AltBody = strip_tags(stripslashes($this->Body))."\n\n";
        $this->AltBody = str_replace("&nbsp;", "\n\n", $this->AltBody);
        return parent::send();
    }
}

這是我的索引頁面的一部分,我已經定義了我的變量

$to = $_POST['email'];
            $subject = "Registration Confirmation";
            $body = "<p>Thank you for registering at demo site.</p>
            <p>To activate your account, please click on this link: <a href='".DIR."activate.php?x=$id&y=$activasion'>".DIR."activate.php?x=$id&y=$activasion</a></p>
            <p>Regards Site Admin</p>";

            $mail = new PHPMailer(true);
            $mail->setFrom(SITEEMAIL);
            $mail->addAddress($to);
            $mail->subject($subject);
            $mail->body($body);
            $mail->send();

            //redirect to index page
            header('Location: index.php?action=joined');
            exit;

首先,為什么你使用的PHPMailer版本已經過時了? 獲取最新的 ,具有新功能,修復錯誤和更少的安全漏洞。 在升級時,請考慮切換到使用composer來管理依賴項。

您遇到的問題非常簡單:您創建了一個添加subject()方法的子類,但您在腳本中創建的實例是原始的PHPMailer類,而不是您的子類。 改為:

$mail = new Mail(true);

使用非常通用的“郵件”名稱命名您的類很可能會為您帶來意想不到的關於為什么命名空間是一個好主意的教訓,因此我建議為您的應用添加命名空間以避免名稱沖突。

雖然像這樣的子類很容易設置默認值,但它也會邀請您檢查源代碼庫的憑據,這通常是個壞主意。 最好使用你的子類使用像這樣的包從環境文件(“dot env”)中讀取這些值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM