iTurki
iTurki

Reputation: 16398

Email sent in localhost but not in server

When I try to send emails from localhost, everything works fine. But when I uploaded my app to the server, the email functionality doesn't work anymore! I uses a Gmail account.

Here is my config/email.php file:

$config['useragent']        = 'CodeIgniter';        
$config['protocol']         = 'smtp';        
$config['mailpath']         = '/usr/sbin/sendmail';
$config['smtp_host']        = 'ssl://smtp.googlemail.com';
$config['smtp_user']        = '[email protected]';
$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']       = '[email protected]';
$config['to_email']       = '[email protected]';
$config['email_subject']       = 'Email Subject';

And this is how I sent an email in my controller:

$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);

And this is the error I receive:

A PHP Error was encountered

Severity: Warning

Message: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.googlemail.com:465 (Connection refused)

Filename: libraries/Email.php

Line Number: 1689

A PHP Error was encountered

Severity: Warning

Message: fwrite() expects parameter 1 to be resource, boolean given

Filename: libraries/Email.php

Line Number: 1846

A PHP Error was encountered

Severity: Warning

Message: fgets() expects parameter 1 to be resource, boolean given

Filename: libraries/Email.php

Line Number: 1869

Upvotes: 0

Views: 3219

Answers (4)

Shivam Kumar
Shivam Kumar

Reputation: 17

 $config = Array(
      'protocol' => 'mail',
      'smtp_host' => 'ssl://smtp.googlemail.com',
      'smtp_port' => 465,
      'smtp_user' => '[email protected]', // 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();

Upvotes: 0

rightstuff
rightstuff

Reputation: 6522

Message: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.googlemail.com:465 (Connection refused)

It's possible that your server's IP address is blacklisted by Google due to previous spamming attempts... Is it a shared hosting account? A cloud hosting account? Etc? All those are susseptable to stuff like this.

There might also be a reverse DNS lookup mismatch with the domain name and from address, or the domain's DNS might have SPF policy settings that are preventing Google from accepting mail, or an envelop issue with the host-name, or it's using 127.0.0.1 as the originating address.

Also check your php.ini settings to make sure you are using / or not-using sendmail_from= and mail.add_x_header= the same way on both systems.

Upvotes: 1

sakibmoon
sakibmoon

Reputation: 2032

Use this config options

    $config['protocol'] = 'smtp';
    $config['mail_path'] = 'ssl://smtp.googlemail.com';
    $config['smtp_host'] = 'ssl://smtp.googlemail.com';
    $config['smtp_port'] = 465;

And add this line, after loading email library

$this->load->library('email', $config);
$this->email->set_newline("\r\n");

Upvotes: 0

Biswajit Maji
Biswajit Maji

Reputation: 889

Try using smtp host as "smtp.gmail.com" $config['smtp_host'] = 'smtp.gmail.com';

Upvotes: 0

Related Questions