Codeigniter - отправка писем с использованием различных настроек SMTP - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть система, которая использует разные электронные письма для разных частей системы. У меня есть настройки с электронной почтой без ответа. Однако, если я попытаюсь отправить электронное письмо, используя другие настройки SMTP, он попытается использовать настройки конфигурации электронной почты, а не настройки массива, которые я указал.

Это настройки, которые находятся в моем файле конфигурации электронной почты

$config['protocol'] = 'smtp';
$config['smtp_host'] = 'smtp.office365.com'; 
$config['smtp_user'] = 'REMOVED';
$config['smtp_pass'] = 'REMOVED';
$config['smtp_port'] = '587';
$config['mailtype'] = 'html';
$config['charset'] = 'utf8';
$config['wordwrap'] = TRUE;
$config['newline'] = "\r\n"; 
$config['crlf'] = "\r\n"; 
$config['smtp_timeout'] = '120';
$config['smtp_crypto'] = 'tls';

Ниже приведен список настроек, которые я указал в массиве (это настройки, которые я хочу отправлять именно этим письмом через Gmail, а не через Office365)

$config['protocol'] = 'smtp';
$config['smtp_host'] = 'smtp.gmail.com';
$config['smtp_user'] = 'REMOVED';
$config['smtp_pass'] = 'REMOVED';
$config['smtp_port'] = '587';
$config['mailtype'] = 'html';
$config['charset'] = 'utf8';
$config['wordwrap'] = TRUE;
$config['newline'] = "\r\n"; 
$config['crlf'] = "\r\n";
$config['smtp_timeout'] = '120';
$config['smtp_crypto'] = 'tls';

Есть ли способ отправлять электронные письма через другие настройки SMTP, чем те, которые указаны в файле конфигурации электронной почты? Я пытался отправить это письмо через настройки Gmail, но оно всегда пытается отправить через настройки конфигурации электронной почты.

РЕШЕНИЕ:

 $config = array();
                        $config['protocol'] = 'smtp';
                        $config['smtp_host'] = 'smtp.gmail.com';
                        $config['smtp_user'] = 'REMOVED';
                        $config['smtp_pass'] = 'REMOVED';
                        $config['smtp_port'] = '587';
                        $config['mailtype'] = 'html';
                        $config['charset'] = 'utf8';
                        $config['wordwrap'] = TRUE;
                        $config['newline'] = "\r\n"; //use double quotes to comply with RFC 822 standard
                        $config['crlf'] = "\r\n";
                        $config['smtp_timeout'] = '120';
                        $config['smtp_crypto'] = 'tls';

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

Исправлена ​​проблема, и теперь я могу отправить электронное письмо через учетную запись Ad-Hoc Gmail, а не через Office365.

1 Ответ

0 голосов
/ 06 сентября 2018

Вы можете переопределить конфигурацию в файле config/Email.php (office365 в вашем случае) на конкретный (gmail, в вашем случае), создав массив $config в контроллере, а затем использовать его для инициализации библиотеки электронной почты. с:

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

Чтобы это работало, вы должны инициализировать библиотеку, используя переопределение $config, прежде чем делать что-либо еще, кроме класса, иначе настройки по умолчанию будут использоваться автоматически

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...