簡體   English   中英

Codeigniter - 使用不同的 SMTP 設置發送電子郵件

[英]Codeigniter - Sending emails using different SMTP settings

我有一個系統,該系統對系統的不同部分使用不同的電子郵件。 我已經使用無回復電子郵件進行了配置設置。 但是,如果我嘗試使用不同的 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 帳戶發送電子郵件。

您可以通過在控制器中構建$config數組來使用特定的(在您的情況下為 gmail)文件覆蓋config/Email.php (在您的情況下為 office365)文件中的$config ,然后使用它來初始化電子郵件庫:

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

為此,您必須在實際執行需要該類的任何其他操作之前使用覆蓋的$config初始化庫,否則將自動使用默認設置

暫無
暫無

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

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