【发布时间】:2015-02-24 02:13:05
【问题描述】:
我们有一个使用 Codeigniter 框架构建的网站。该网站在过去 2 周之前一直运行良好(约 8 个月)。
所以我们有一个表单,一旦用户提交表单,我们将数据插入我们的 MySQL 数据库并向用户发送电子邮件。现在,数据库部分工作正常。但电子邮件功能在 2 周前停止工作。而且我确定我没有更改代码中的任何内容。
我为此创建了一个测试
public function test_email(){
$this->load->config('email');
$this->load->library('custom_email');
$ddd = $this->load->config('email');
$data = array(
//must have
'recipient' => 'test@test.com',
'recipient_name' => 'Test',
'title' => 'Ms',
'subject' => 'Email Test',
'admin_email' => $this->config->item('auto_bcc_to'),
"smtp" =>$this->config->item('smtp_host')
);
ch_printr($data);
$this->custom_email->send('test_email',$data,TRUE);
}
还有我的库/custom_email.php
class custom_email {
function __construct() {
$this->ci = & get_instance();
$this->ci->load->helper('html');
$this->ci->load->library('email');
}
function send($type,$data,$debug_mode = FALSE){
$data['site_name'] = $this->ci->config->item('site_name');
$data['message'] = $this->ci->parser->parse('email/email--'.$type,$data,TRUE);
return $this->_send($data,$debug_mode);
}
private function _send($data,$debug_mode = FALSE){
$this->ci->config->load("email");
$email = $data['recipient'];
$email_message = $data['message'];
$subject = $data['subject'];
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
// Additional headers
$headers .= 'From: '.$this->ci->config->item('system_sender_name').'<'.$this->ci->config->item('system_sender_mail').'>' . "\r\n";
$headers .= 'To: '.$data['recipient_name'].'<'.$data['recipient'].'>' . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion();
if(mail($email, '=?UTF-8?B?'.base64_encode($subject).'?=', $email_message, $headers)){ //error is pointed here
return true;
}else{
return false;
}
}
}
和配置/email.php
$config = Array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.gmail.com',
'smtp_port' => 465,
'smtp_user' => 'webmaster@test.com',
'smtp_pass' => 'myPassword',
'mailtype' => 'html',
'charset' => 'utf-8',
'crlf' => "\r\n",
'newline' => "\r\n",
'system_sender_mail' => 'webmaster@test.com',
'system_sender_name' => 'Webmaster',
'auto_bcc_to' => 'admin@test.com'
);
现在,电子邮件停止工作,我们收到此错误
Message: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
Filename: libraries/custom_email.php
Line Number: 110
我尝试 print_r 电子邮件配置项(smtp 设置)并检索到正确的数据。我应该如何进行?
提前谢谢你。
【问题讨论】:
-
乍一看,您的配置看起来还不错。您确定您的邮件服务器正在运行并正确处理电子邮件吗?检查您的日志以确定。
-
@SolarBear 您好,感谢您的评论。是的,我确信我们的邮件服务器运行良好。我们可以毫无问题地使用我们的办公室电子邮件(同一台服务器)。如果我错了,请纠正我 - 但系统上的问题是,custom_email() 没有读取电子邮件配置数组。我的理解正确吗?
-
我们使用谷歌邮件服务器仅供参考
标签: php codeigniter email