【问题标题】:failed to send activation message with Mythauth使用 Mythauth 发送激活消息失败
【发布时间】:2022-01-14 03:30:36
【问题描述】:

我正在使用神话身份验证来注册我的网站,在 localhost 中它的工作,但是在托管时,将激活发送到电子邮件总是显示错误“无法发送激活消息”,有人可以帮助我吗?

【问题讨论】:

    标签: codeigniter-4


    【解决方案1】:

    像我一样做

      /**
         * Resend activation account.
         * @param AuthEntity $entity
         */
        public
        function sendActivateCodeViaEmail(AuthEntity $entity): void
        {
            if (is_null($entity)) $this->httpException(lang('Shared.api.validation'), ResponseInterface::HTTP_NOT_ACCEPTABLE);
    
            $findUser = $this->userModel->where('email', $entity->email)
                ->where('active', 0)
                ->first();
    
            if (is_null($findUser)) $this->httpException(lang('Auth.activationNoUser'), ResponseInterface::HTTP_CONFLICT);
    
    
            $isSent = $this->email
                ->setTo($entity->email)
                ->setSubject(lang('Auth.activationSubject'))
                ->setMessage(view($this->authConfig->views['emailActivation'],
                    ['hash' => $entity->toArray()['activate_hash']]))
                ->setMailType('html')->send();
    
            if (!$isSent) {
    
    
                $this->httpException(lang('Auth.unknownError'),
                    ResponseInterface::HTTP_BAD_REQUEST, $this->email->printDebugger(['headers']['headers'] ?? lang('Auth.unknownError')));
    
            }
            unset($entity->email);
    
    
            if (!$this->userModel->update($findUser->id, $entity)) {
    
    
                $this->httpException(lang('Shared.api.reject'), ResponseInterface::HTTP_BAD_REQUEST, serializeMessages($this->userModel->errors()));
    
            }
    
        }
    
    

    电子邮件配置

    <?php
    
    namespace Config;
    
    use CodeIgniter\Config\BaseConfig;
    
    class Email extends BaseConfig
    {
        /**
         * @var string
         */
        public $fromEmail='admin@emaple.ir';
    
        /**
         * @var string
         */
        public $fromName='admin';
    
        /**
         * @var string
         */
        public $recipients;
    
        /**
         * The "user agent"
         *
         * @var string
         */
        public $userAgent = 'CodeIgniter';
    
        /**
         * The mail sending protocol: mail, sendmail, smtp
         *
         * @var string
         */
        public $protocol = 'smtp';
    
        /**
         * The server path to Sendmail.
         *
         * @var string
         */
        public $mailPath = '/usr/sbin/sendmail';
    
        /**
         * SMTP Server Address
         *
         * @var string
         */
        public $SMTPHost='mail.emaple.ir';
    
        /**
         * SMTP Username
         *
         * @var string
         */
        public $SMTPUser='admin@emaile.ir';
    
        /**
         * SMTP Password
         *
         * @var string
         */
        public $SMTPPass='X04r0U2ikd';
    
        /**
         * SMTP Port
         *
         * @var int
         */
        public $SMTPPort = 25;
    
        /**
         * SMTP Timeout (in seconds)
         *
         * @var int
         */
        public $SMTPTimeout = 5;
    
        /**
         * Enable persistent SMTP connections
         *
         * @var bool
         */
        public $SMTPKeepAlive = false;
    
        /**
         * SMTP Encryption. Either tls or ssl
         *
         * @var string
         */
        public $SMTPCrypto = '';
    
        /**
         * Enable word-wrap
         *
         * @var bool
         */
        public $wordWrap = true;
    
        /**
         * Character count to wrap at
         *
         * @var int
         */
        public $wrapChars = 76;
    
        /**
         * Type of mail, either 'text' or 'html'
         *
         * @var string
         */
        public $mailType = 'text';
    
        /**
         * Character set (utf-8, iso-8859-1, etc.)
         *
         * @var string
         */
        public $charset = 'UTF-8';
    
        /**
         * Whether to validate the email address
         *
         * @var bool
         */
        public $validate = false;
    
        /**
         * Email Priority. 1 = highest. 5 = lowest. 3 = normal
         *
         * @var int
         */
        public $priority = 3;
    
        /**
         * Newline character. (Use “\r\n” to comply with RFC 822)
         *
         * @var string
         */
        public $CRLF = "\r\n";
    
        /**
         * Newline character. (Use “\r\n” to comply with RFC 822)
         *
         * @var string
         */
        public $newline = "\r\n";
    
        /**
         * Enable BCC Batch Mode.
         *
         * @var bool
         */
        public $BCCBatchMode = false;
    
        /**
         * Number of emails in each BCC batch
         *
         * @var int
         */
        public $BCCBatchSize = 200;
    
        /**
         * Enable notify message from server
         *
         * @var bool
         */
        public $DSN = false;
    }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多