Как я могу заставить сервер Gmail SMTP снова работать? - PullRequest
0 голосов
/ 12 января 2020

Эй, ребята, у меня проблема с отправкой почты через SMTP-сервер gmails. Он работал совершенно недавно, оставил мой проект на два дня, когда я вернулся, он остановился. Пожалуйста помоги. Я попытался изменить порт smtp и все необходимые данные в php .ini, но ничего. Я пытаюсь добавить нового пользователя, но использую сервер google smtp, чтобы отправить подтверждение по электронной почте новому пользователю. Вот мой код для «контроллера присоединения».

function _email($email, $activation_code)
{
    $config = [
        'mailtype'      => 'html',
        'charset'       => 'utf-8',
        'protocol'      => 'smtp',
        'smtp_host'     => 'smtp.gmail.com',
        'smtp_user'     => 'someone@gmail.com', // gmail address
        'smtp_pass'     => 'xxxxxxx', // gmail password
        'smtp_crypto'   => 'ssl',
        'smtp_port'     => 465,
        'crlf'          => "\r\n",
        'newline'       => "\r\n"
    ];
    $this->load->library('email', $config);
    $this->email->from('someone@gmail.com', 'username');

    $this->email->to($email);
    $this->email->subject('[Confirmation Email]');

    $html = '
        <div style="margin-bottom: 20px; font-weight: bold;">Hello There,</div>

        <div>Thank you for using and for join.</div>
        <div style="margin-bottom: 10px;">To activate your account, please click this link and we will redirect you to login page: <a href="'.base_url('activate?code='.$kode_aktifasi.'&email='.$email).'">Confirm my email address</a>.
        </div>
        <div>If that link cannot working you can access this URL from your browser</div>
        <div><a href="'.base_url('activate?code='.$kode_aktifasi.'&email='.$email).'">'.base_url('activate?code='.$kode_aktifasi.'&email='.$email).'</a></div>

        <div style="margin-bottom: 20px; margin-top: 10px;">If you have a question reply this email and we will contact you as soon as possible, thank you!</div>
    ';

    $this->email->message($html);
    return $this->email->send();
}

}

Тогда получаю ошибку: PHP Ошибка

1 Ответ

0 голосов
/ 12 января 2020

Глядя на код, я предполагаю, что вы используете CodeIgniter? Версия 3?

Если это так, вам нужно инициализировать библиотеку с вашими настройками. После строки, в которую вы загружаете библиотеку, попробуйте добавить это:

$this->email->initialize($config);

Обязательно используйте настройки, поддерживаемые Gmail:

$config = Array(
    'protocol' => 'smtp',
    'smtp_host' => 'ssl://smtp.googlemail.com',
    'smtp_port' => 465,
    'smtp_user' => 'you@gmail.com',
    'smtp_pass' => 'xxx',
);

Также, потому что это не авторизация OAUTH или 2FA, вам, вероятно, потребуется включить менее безопасные приложения для подключения к учетной записи Gmail.

(ссылка на настройку параметров в вашей личной Gmail . Если вы используете служебную учетную запись Gmail, вашему системному администратору может потребоваться изменить этот параметр.)

...