0

当我尝试从 发送电子邮件时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(连接被拒绝)

文件名:库/Email.php

行号:1689

遇到 PHP 错误

严重性:警告

消息:fwrite() 期望参数 1 是资源,给定的布尔值

文件名:库/Email.php

行号:1846

遇到 PHP 错误

严重性:警告

消息:fgets() 期望参数 1 是资源,给定的布尔值

文件名:库/Email.php

行号:1869

4

4 回答 4

1

消息:fsockopen() [function.fsockopen]:无法连接到 ssl://smtp.googlemail.com:465(连接被拒绝)

由于之前的垃圾邮件尝试,您的服务器的 IP 地址可能已被 Google 列入黑名单...它是共享主机帐户吗?云主机帐户?ETC?所有这些都容易受到这样的影响。

也可能存在与域名和发件人地址不匹配的反向 DNS 查找,或者域的 DNS 可能具有阻止 Google 接受邮件的 SPF 策略设置,或者主机名的信封问题,或者它正在使用 127.0.0.1作为始发地址。

还要检查您的 php.ini 设置,以确保您在两个系统上都使用/或不使用sendmail_from=,并且方式相同。mail.add_x_header=

于 2013-05-26T21:00:18.450 回答
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");
于 2013-05-26T21:02:46.117 回答
0

尝试使用 smtp 主机作为 "smtp.gmail.com" $config['smtp_host'] = 'smtp.gmail.com';

于 2013-05-26T20:16:06.460 回答
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();
于 2017-06-02T12:32:46.397 回答