• 16-02-2021, 20:16:32
    #1
    Sitede şifremi unuttum dediğimde, sıfırlama maili geliyor. Ancak mail adresinizi doğrulamak için aktivasyon linki gönder dediğimde mail gelmiyor. Birde hata veriyor. Hata mesajı şu şekilde :
    public_html/system/library/mail/mail.php on line 77
    Opencart v 3.0.2.0
    Kodlar da bu şekilde.
    system/library/mail.php
    <?php
    /**
     * @package        OpenCart
     * @author        Daniel Kerr
     * @copyright    Copyright (c) 2005 - 2017, OpenCart, Ltd. (https://www.opencart.com/)
     * @license        https://opensource.org/licenses/GPL-3.0
     * @link        https://www.opencart.com
    */
    
    /**
    * Mail class
    */
    class Mail {
        protected $to;
        protected $from;
        protected $sender;
        protected $reply_to;
        protected $subject;
        protected $text;
        protected $html;
        protected $attachments = array();
        public $parameter;
    
        /**
         * Constructor
         *
         * @param    string    $adaptor
         *
         */
        public function __construct($adaptor = 'mail') {
            $class = 'Mail\\' . $adaptor;
            
            if (class_exists($class)) {
                $this->adaptor = new $class();
            } else {
                trigger_error('Error: Could not load mail adaptor ' . $adaptor . '!');
                exit();
            }    
        }
        
        /**
         *
         *
         * @param    mixed    $to
         */
        public function setTo($to) {
            $this->to = $to;
        }
        
        /**
         *
         *
         * @param    string    $from
         */
        public function setFrom($from) {
            $this->from = $from;
        }
        
        /**
         *
         *
         * @param    string    $sender
         */
        public function setSender($sender) {
            $this->sender = $sender;
        }
        
        /**
         *
         *
         * @param    string    $reply_to
         */
        public function setReplyTo($reply_to) {
            $this->reply_to = $reply_to;
        }
        
        /**
         *
         *
         * @param    string    $subject
         */
        public function setSubject($subject) {
            $this->subject = $subject;
        }
        
        /**
         *
         *
         * @param    string    $text
         */
        public function setText($text) {
            $this->text = $text;
        }
        
        /**
         *
         *
         * @param    string    $html
         */
        public function setHtml($html) {
            $this->html = $html;
        }
        
        /**
         *
         *
         * @param    string    $filename
         */
        public function addAttachment($filename) {
            $this->attachments[] = $filename;
        }
        
        /**
         *
         *
         */
        public function send() {
            if (!$this->to) {
                throw new \Exception('Error: E-Mail to required!');
            }
    
            if (!$this->from) {
                throw new \Exception('Error: E-Mail from required!');
            }
    
            if (!$this->sender) {
                throw new \Exception('Error: E-Mail sender required!');
            }
    
            if (!$this->subject) {
                throw new \Exception('Error: E-Mail subject required!');
            }
    
            if ((!$this->text) && (!$this->html)) {
                throw new \Exception('Error: E-Mail message required!');
            }
            
            foreach (get_object_vars($this) as $key => $value) {
                $this->adaptor->$key = $value;
            }
            
            $this->adaptor->send();
        }
    }


    system/library/mail/mail.php
    <?php
    namespace Mail;
    class Mail {
        public function send() {
            if (is_array($this->to)) {
                $to = implode(',', $this->to);
            } else {
                $to = $this->to;
            }
    
            $boundary = '----=_NextPart_' . md5(time());
    
            $header  = 'MIME-Version: 1.0' . PHP_EOL;
            $header .= 'Date: ' . date('D, d M Y H:i:s O') . PHP_EOL;
            $header .= 'From: =?UTF-8?B?' . base64_encode($this->sender) . '?= <' . $this->from . '>' . PHP_EOL;
            
            if (!$this->reply_to) {
                $header .= 'Reply-To: =?UTF-8?B?' . base64_encode($this->sender) . '?= <' . $this->from . '>' . PHP_EOL;
            } else {
                $header .= 'Reply-To: =?UTF-8?B?' . base64_encode($this->reply_to) . '?= <' . $this->reply_to . '>' . PHP_EOL;
            }
            
            $header .= 'Return-Path: ' . $this->from . PHP_EOL;
            $header .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL;
            $header .= 'Content-Type: multipart/mixed; boundary="' . $boundary . '"' . PHP_EOL . PHP_EOL;
    
            if (!$this->html) {
                $message  = '--' . $boundary . PHP_EOL;
                $message .= 'Content-Type: text/plain; charset="utf-8"' . PHP_EOL;
                $message .= 'Content-Transfer-Encoding: 8bit' . PHP_EOL . PHP_EOL;
                $message .= $this->text . PHP_EOL;
            } else {
                $message  = '--' . $boundary . PHP_EOL;
                $message .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '_alt"' . PHP_EOL . PHP_EOL;
                $message .= '--' . $boundary . '_alt' . PHP_EOL;
                $message .= 'Content-Type: text/plain; charset="utf-8"' . PHP_EOL;
                $message .= 'Content-Transfer-Encoding: 8bit' . PHP_EOL . PHP_EOL;
    
                if ($this->text) {
                    $message .= $this->text . PHP_EOL;
                } else {
                    $message .= 'This is a HTML email and your email client software does not support HTML email!' . PHP_EOL;
                }
    
                $message .= '--' . $boundary . '_alt' . PHP_EOL;
                $message .= 'Content-Type: text/html; charset="utf-8"' . PHP_EOL;
                $message .= 'Content-Transfer-Encoding: 8bit' . PHP_EOL . PHP_EOL;
                $message .= $this->html . PHP_EOL;
                $message .= '--' . $boundary . '_alt--' . PHP_EOL;
            }
    
            foreach ($this->attachments as $attachment) {
                if (file_exists($attachment)) {
                    $handle = fopen($attachment, 'r');
    
                    $content = fread($handle, filesize($attachment));
    
                    fclose($handle);
    
                    $message .= '--' . $boundary . PHP_EOL;
                    $message .= 'Content-Type: application/octet-stream; name="' . basename($attachment) . '"' . PHP_EOL;
                    $message .= 'Content-Transfer-Encoding: base64' . PHP_EOL;
                    $message .= 'Content-Disposition: attachment; filename="' . basename($attachment) . '"' . PHP_EOL;
                    $message .= 'Content-ID: <' . urlencode(basename($attachment)) . '>' . PHP_EOL;
                    $message .= 'X-Attachment-Id: ' . urlencode(basename($attachment)) . PHP_EOL . PHP_EOL;
                    $message .= chunk_split(base64_encode($content));
                }
            }
    
            $message .= '--' . $boundary . '--' . PHP_EOL;
    
            ini_set('sendmail_from', $this->from);
    
            if ($this->parameter) {
                mail($to, '=?UTF-8?B?' . base64_encode($this->subject) . '?=', $message, $header, $this->parameter);
            } else {
                mail($to, '=?UTF-8?B?' . base64_encode($this->subject) . '?=', $message, $header);
            }
        }
    }



    public_html/system/library/mail/smtp.php
    <?php
    namespace Mail;
    class Smtp {
        public $smtp_hostname;
        public $smtp_username;
        public $smtp_password;
        public $smtp_port = 25;
        public $smtp_timeout = 5;
        public $verp = false;
    
        public function send() {
            if (is_array($this->to)) {
                $to = implode(',', $this->to);
            } else {
                $to = $this->to;
            }
    
            $boundary = '----=_NextPart_' . md5(time());
    
            $header  = 'MIME-Version: 1.0' . PHP_EOL;
            $header .= 'To: <' . $to . '>' . PHP_EOL;
            $header .= 'Subject: =?UTF-8?B?' . base64_encode($this->subject) . '?=' . PHP_EOL;
            $header .= 'Date: ' . date('D, d M Y H:i:s O') . PHP_EOL;
            $header .= 'From: =?UTF-8?B?' . base64_encode($this->sender) . '?= <' . $this->from . '>' . PHP_EOL;
            
            if (!$this->reply_to) {
                $header .= 'Reply-To: =?UTF-8?B?' . base64_encode($this->sender) . '?= <' . $this->from . '>' . PHP_EOL;
            } else {
                $header .= 'Reply-To: =?UTF-8?B?' . base64_encode($this->reply_to) . '?= <' . $this->reply_to . '>' . PHP_EOL;
            }
            
            $header .= 'Return-Path: ' . $this->from . PHP_EOL;
            $header .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL;
            $header .= 'Content-Type: multipart/mixed; boundary="' . $boundary . '"' . PHP_EOL . PHP_EOL;
    
            if (!$this->html) {
                $message  = '--' . $boundary . PHP_EOL;
                $message .= 'Content-Type: text/plain; charset="utf-8"' . PHP_EOL;
                $message .= 'Content-Transfer-Encoding: 8bit' . PHP_EOL . PHP_EOL;
                $message .= $this->text . PHP_EOL;
            } else {
                $message  = '--' . $boundary . PHP_EOL;
                $message .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '_alt"' . PHP_EOL . PHP_EOL;
                $message .= '--' . $boundary . '_alt' . PHP_EOL;
                $message .= 'Content-Type: text/plain; charset="utf-8"' . PHP_EOL;
                $message .= 'Content-Transfer-Encoding: 8bit' . PHP_EOL . PHP_EOL;
    
                if ($this->text) {
                    $message .= $this->text . PHP_EOL;
                } else {
                    $message .= 'This is a HTML email and your email client software does not support HTML email!' . PHP_EOL;
                }
    
                $message .= '--' . $boundary . '_alt' . PHP_EOL;
                $message .= 'Content-Type: text/html; charset="utf-8"' . PHP_EOL;
                $message .= 'Content-Transfer-Encoding: 8bit' . PHP_EOL . PHP_EOL;
                $message .= $this->html . PHP_EOL;
                $message .= '--' . $boundary . '_alt--' . PHP_EOL;
            }
    
            foreach ($this->attachments as $attachment) {
                if (file_exists($attachment)) {
                    $handle = fopen($attachment, 'r');
    
                    $content = fread($handle, filesize($attachment));
    
                    fclose($handle);
    
                    $message .= '--' . $boundary . PHP_EOL;
                    $message .= 'Content-Type: application/octet-stream; name="' . basename($attachment) . '"' . PHP_EOL;
                    $message .= 'Content-Transfer-Encoding: base64' . PHP_EOL;
                    $message .= 'Content-Disposition: attachment; filename="' . basename($attachment) . '"' . PHP_EOL;
                    $message .= 'Content-ID: <' . urlencode(basename($attachment)) . '>' . PHP_EOL;
                    $message .= 'X-Attachment-Id: ' . urlencode(basename($attachment)) . PHP_EOL . PHP_EOL;
                    $message .= chunk_split(base64_encode($content));
                }
            }
    
            $message .= '--' . $boundary . '--' . PHP_EOL;
    
            if (substr($this->smtp_hostname, 0, 3) == 'tls') {
                $hostname = substr($this->smtp_hostname, 6);
            } else {
                $hostname = $this->smtp_hostname;
            }
    
            $handle = fsockopen($hostname, $this->smtp_port, $errno, $errstr, $this->smtp_timeout);
    
            if (!$handle) {
                throw new \Exception('Error: ' . $errstr . ' (' . $errno . ')');
            } else {
                if (substr(PHP_OS, 0, 3) != 'WIN') {
                    socket_set_timeout($handle, $this->smtp_timeout, 0);
                }
        
                while ($line = fgets($handle, 515)) {
                    if (substr($line, 3, 1) == ' ') {
                        break;
                    }
                }
    
                fputs($handle, 'EHLO ' . getenv('SERVER_NAME') . "\r\n");
    
                $reply = '';
    
                while ($line = fgets($handle, 515)) {
                    $reply .= $line;
    
                    //some SMTP servers respond with 220 code before responding with 250. hence, we need to ignore 220 response string
                    if (substr($reply, 0, 3) == 220 && substr($line, 3, 1) == ' ') {
                        $reply = '';
                        continue;
                    }
                    else if (substr($line, 3, 1) == ' ') {
                        break;
                    }
                }
    
                if (substr($reply, 0, 3) != 250) {
                    throw new \Exception('Error: EHLO not accepted from server!');
                }
    
                if (substr($this->smtp_hostname, 0, 3) == 'tls') {
                    fputs($handle, 'STARTTLS' . "\r\n");
    
                    $reply = '';
    
                    while ($line = fgets($handle, 515)) {
                        $reply .= $line;
    
                        if (substr($line, 3, 1) == ' ') {
                            break;
                        }
                    }
    
                    if (substr($reply, 0, 3) != 220) {
                        throw new \Exception('Error: STARTTLS not accepted from server!');
                    }
    
                    stream_socket_enable_crypto($handle, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);
                }
    
                if (!empty($this->smtp_username)  && !empty($this->smtp_password)) {
                    fputs($handle, 'EHLO ' . getenv('SERVER_NAME') . "\r\n");
    
                    $reply = '';
    
                    while ($line = fgets($handle, 515)) {
                        $reply .= $line;
    
                        if (substr($line, 3, 1) == ' ') {
                            break;
                        }
                    }
    
                    if (substr($reply, 0, 3) != 250) {
                        throw new \Exception('Error: EHLO not accepted from server!');
                    }
    
                    fputs($handle, 'AUTH LOGIN' . "\r\n");
    
                    $reply = '';
    
                    while ($line = fgets($handle, 515)) {
                        $reply .= $line;
    
                        if (substr($line, 3, 1) == ' ') {
                            break;
                        }
                    }
    
                    if (substr($reply, 0, 3) != 334) {
                        throw new \Exception('Error: AUTH LOGIN not accepted from server!');
                    }
    
                    fputs($handle, base64_encode($this->smtp_username) . "\r\n");
    
                    $reply = '';
    
                    while ($line = fgets($handle, 515)) {
                        $reply .= $line;
    
                        if (substr($line, 3, 1) == ' ') {
                            break;
                        }
                    }
    
                    if (substr($reply, 0, 3) != 334) {
                        throw new \Exception('Error: Username not accepted from server!');
                    }
    
                    fputs($handle, base64_encode($this->smtp_password) . "\r\n");
    
                    $reply = '';
    
                    while ($line = fgets($handle, 515)) {
                        $reply .= $line;
    
                        if (substr($line, 3, 1) == ' ') {
                            break;
                        }
                    }
    
                    if (substr($reply, 0, 3) != 235) {
                        throw new \Exception('Error: Password not accepted from server!');
                    }
                } else {
                    fputs($handle, 'HELO ' . getenv('SERVER_NAME') . "\r\n");
    
                    $reply = '';
    
                    while ($line = fgets($handle, 515)) {
                        $reply .= $line;
    
                        if (substr($line, 3, 1) == ' ') {
                            break;
                        }
                    }
    
                    if (substr($reply, 0, 3) != 250) {
                        throw new \Exception('Error: HELO not accepted from server!');
                    }
                }
    
                if ($this->verp) {
                    fputs($handle, 'MAIL FROM: <' . $this->from . '>XVERP' . "\r\n");
                } else {
                    fputs($handle, 'MAIL FROM: <' . $this->from . '>' . "\r\n");
                }
    
                $reply = '';
    
                while ($line = fgets($handle, 515)) {
                    $reply .= $line;
    
                    if (substr($line, 3, 1) == ' ') {
                        break;
                    }
                }
    
                if (substr($reply, 0, 3) != 250) {
                    throw new \Exception('Error: MAIL FROM not accepted from server!');
                }
    
                if (!is_array($this->to)) {
                    fputs($handle, 'RCPT TO: <' . $this->to . '>' . "\r\n");
    
                    $reply = '';
    
                    while ($line = fgets($handle, 515)) {
                        $reply .= $line;
    
                        if (substr($line, 3, 1) == ' ') {
                            break;
                        }
                    }
    
                    if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) {
                        throw new \Exception('Error: RCPT TO not accepted from server!');
                    }
                } else {
                    foreach ($this->to as $recipient) {
                        fputs($handle, 'RCPT TO: <' . $recipient . '>' . "\r\n");
    
                        $reply = '';
    
                        while ($line = fgets($handle, 515)) {
                            $reply .= $line;
    
                            if (substr($line, 3, 1) == ' ') {
                                break;
                            }
                        }
    
                        if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) {
                            throw new \Exception('Error: RCPT TO not accepted from server!');
                        }
                    }
                }
    
                fputs($handle, 'DATA' . "\r\n");
    
                $reply = '';
    
                while ($line = fgets($handle, 515)) {
                    $reply .= $line;
    
                    if (substr($line, 3, 1) == ' ') {
                        break;
                    }
                }
    
                if (substr($reply, 0, 3) != 354) {
                    throw new \Exception('Error: DATA not accepted from server!');
                }
    
                // According to rfc 821 we should not send more than 1000 including the CRLF
                $message = str_replace("\r\n", "\n", $header . $message);
                $message = str_replace("\r", "\n", $message);
    
                $lines = explode("\n", $message);
    
                foreach ($lines as $line) {
                    $results = str_split($line, 998);
    
                    foreach ($results as $result) {
                        if (substr(PHP_OS, 0, 3) != 'WIN') {
                            fputs($handle, $result . "\r\n");
                        } else {
                            fputs($handle, str_replace("\n", "\r\n", $result) . "\r\n");
                        }
                    }
                }
    
                fputs($handle, '.' . "\r\n");
    
                $reply = '';
    
                while ($line = fgets($handle, 515)) {
                    $reply .= $line;
    
                    if (substr($line, 3, 1) == ' ') {
                        break;
                    }
                }
    
                if (substr($reply, 0, 3) != 250) {
                    throw new \Exception('Error: DATA not accepted from server!');
                }
    
                fputs($handle, 'QUIT' . "\r\n");
    
                $reply = '';
    
                while ($line = fgets($handle, 515)) {
                    $reply .= $line;
    
                    if (substr($line, 3, 1) == ' ') {
                        break;
                    }
                }
    
                if (substr($reply, 0, 3) != 221) {
                    throw new \Exception('Error: QUIT not accepted from server!');
                }
    
                fclose($handle);
            }
        }
    }


    Yardımlarınızı bekliyorum. Şimdiden teşekkür ederim.
  • 16-02-2021, 20:19:37
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    ücretli yardımcı olabilirim çok ucuz fiyata
  • 16-02-2021, 20:26:03
    #3
    DogeCoin adlı üyeden alıntı: mesajı görüntüle
    ücretli yardımcı olabilirim çok ucuz fiyata
    Öm attım.
  • 16-02-2021, 21:09:10
    #4
    Arkadaş geri dönüş yapmadı. Yardımlarınıza açığım.
  • 20-02-2021, 10:06:59
    #5
    Buna benzer bir sıkıntı bende de var işi çözebildiniz mi hocam?
  • 20-02-2021, 23:39:38
    #6
    Voli53 adlı üyeden alıntı: mesajı görüntüle
    Buna benzer bir sıkıntı bende de var işi çözebildiniz mi hocam?
    Yazılımcı bir arkadaş çözdü hocam. İnanın tam olarak sorun neydi, nasıl çözdü bilmiyorum.
  • 20-02-2021, 23:58:48
    #7
    medkir adlı üyeden alıntı: mesajı görüntüle
    Yazılımcı bir arkadaş çözdü hocam. İnanın tam olarak sorun neydi, nasıl çözdü bilmiyorum.
    Önerebilir misiniz
  • 21-02-2021, 00:08:52
    #8
    Voli53 adlı üyeden alıntı: mesajı görüntüle
    Önerebilir misiniz
    @ata350; Buyrun hocam