当我尝试从localhost
发送电子邮件时,一切正常。但是当我将我的应用程序上传到服务器时,电子邮件功能不再起作用了!我使用的是Gmail帐户。
这是我的config/email.php
文件:
$config['useragent'] = 'CodeIgniter';
$config['protocol'] = 'smtp';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['smtp_host'] = 'ssl://smtp.googlemail.com';
$config['smtp_user'] = 'myemail@gmail.com';
$config['smtp_pass'] = 'my_password';
$config['smtp_port'] = 465;
$config['smtp_timeout'] = 80;
$config['wordwrap'] = TRUE;
$config['wrapchars'] = 76;
$config['mailtype'] = 'html';
$config['charset'] = 'utf-8';
$config['validate'] = FALSE;
$config['priority'] = 3;
$config['crlf'] = "\r\n";
$config['newline'] = "\r\n";
$config['bcc_batch_mode'] = FALSE;
$config['bcc_batch_size'] = 200;
$config['sender_name'] = 'Name';
$config['from_email'] = 'myemail@gmail.com';
$config['to_email'] = 'myemail@gmail.com';
$config['email_subject'] = 'Email Subject';
这就是我在控制器中发送电子邮件的方式:
$this->load->library('email');
$this->email->from($this->config->item('from_email'), $this->config->item('sender_name'));
$this->email->to($this->config->item('to_email'));
$this->email->subject($this->config->item('email_subject'));
$this->email->message($string);
if (!$this->email->send())
{
$data['success'] = FALSE;
}
else
{
$data['success'] = TRUE;
}
$this->_example_output('layouts/sendemail_confirm.php', $data);
这是我收到的错误:
遇到PHP错误
严重性:警告
消息:fsockopen()[function.fsockopen]:无法连接 ssl://smtp.googlemail.com:465(拒绝连接)
文件名:libraries / Email.php
行号:1689
遇到PHP错误
严重性:警告
消息:fwrite()期望参数1为资源,布尔值为
文件名:libraries / Email.php
行号:1846
遇到PHP错误
严重性:警告
消息:fgets()期望参数1为资源,布尔值为
文件名:libraries / Email.php
行号:1869
答案 0 :(得分:1)
消息:fsockopen()[function.fsockopen]:无法连接到ssl://smtp.googlemail.com:465(拒绝连接)
由于以前的垃圾邮件尝试,您的服务器的IP地址可能被Google列入黑名单......它是共享主机帐户吗?云托管帐户?等等?所有这些对于这样的东西都是可以接受的。
可能还存在反向DNS查找与域名和地址不匹配,或者域的DNS可能具有阻止Google接受邮件的SPF策略设置,或主机名的信封问题,或者它正在使用127.0.0.1作为始发地址。
同时检查您的php.ini设置,确保您在两个系统上以相同的方式使用/不使用sendmail_from=
和mail.add_x_header=
。
答案 1 :(得分:0)
尝试使用smtp主机作为“smtp.gmail.com” $ config ['smtp_host'] ='smtp.gmail.com';
答案 2 :(得分:0)
使用此配置选项
$config['protocol'] = 'smtp';
$config['mail_path'] = 'ssl://smtp.googlemail.com';
$config['smtp_host'] = 'ssl://smtp.googlemail.com';
$config['smtp_port'] = 465;
在加载电子邮件库
后添加此行$this->load->library('email', $config);
$this->email->set_newline("\r\n");
答案 3 :(得分:0)
$config = Array(
'protocol' => 'mail',
'smtp_host' => 'ssl://smtp.googlemail.com',
'smtp_port' => 465,
'smtp_user' => 'iskpro.it@gmail.com', // change it to yours
'smtp_pass' => 'afycon@123', // change it to yours
'mailtype' => 'html',
'charset' => 'iso-8859-1',
'wordwrap' => TRUE
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");
$this->email->from($from); // change it to yours
$this->email->to($to);// change it to yours
$this->email->subject($subject);
$this->email->message($message);
$this->email->send();