[英]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.