电子邮件在localhost中发送但不在服务器中发送

时间:2013-05-26 20:02:17

标签: codeigniter email

当我尝试从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

4 个答案:

答案 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();