Error while sending an email with CodeIgniter

2019-01-19 20:56发布

问题:

While sending an email, I'm receiving a bunch of such errors:

A PHP Error was encountered

Severity: Notice

Message: fwrite(): send of 12 bytes failed with errno=32 Broken pipe

Filename: libraries/Email.php

Line Number: 1846

A PHP Error was encountered

Severity: Notice

Message: fwrite(): send of 39 bytes failed with errno=32 Broken pipe

Filename: libraries/Email.php

Line Number: 1846

A PHP Error was encountered

Severity: Notice

Message: fwrite(): send of 31 bytes failed with errno=32 Broken pipe

Filename: libraries/Email.php

Line Number: 1846

I have followed the CodeIgniter user guide to configure an SMTP:

$config['protocol']='smtp';  
$config['smtp_host']='ssl0.ovh.net';  
$config['smtp_port']='465';  
$config['smtp_timeout']='10';  
$config['smtp_user']='postmaster%example.com';  
$config['smtp_pass']='password';
$config['mailtype'] = 'html';
$config['charset'] = 'utf-8';
$config['newline'] = "\r\n";
$config['useragent'] = 'Project';

It seems like the configuration file is just fine, and correct (I've checked the OVH's email configuration files).

Any solution for that?

回答1:

If you are using cpanel for your website smtp restrictions are problem and cause this error.

SMTP Restrictions

This feature prevents users from bypassing the mail server to send mail, a common practice used by spammers. It will allow only the MTA, mailman, and root to connect to remote SMTP servers.

This control is also adjustable in Tweak Settings.

This setting has been updated.

The SMTP restriction is disabled.

I had a similar problem and had to disable SMTP Restrictions. After that all was ok.



回答2:

This is the answer that worked for me

http://biostall.com/resolving-error-with-sending-emails-via-smtp-using-codeigniter/

Be sure to use "\r\n" and not '\r\n'

Also you can set this in a config file:

$config['newline'] = "\r\n";
$config['crlf'] = "\r\n";


回答3:

Same problem here... but what worked for me was these set of configuration:

$config['protocol']     = 'smtp';
$config['smtp_host']    = XXX;
$config['smtp_user']    = XXX;
$config['smtp_port']    = 25; // was 465
$config['smtp_pass']    = XXX;
$config['newline']      = "\r\n";

And the message stopped. :D



回答4:

I too was in the same situation. Was getting:

Message: fwrite(): SSL: Broken pipe</p><p>Filename: libraries/Email.php</p><p>Line Number: 2250&

the change that really made a difference was the 'smtp_crypto' config option set to 'ssl'

$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://example.com';
$config['smtp_crypto'] = 'ssl';
$config['smtp_port'] = '465';
$config['smtp_user'] = 'user@example.com';
$config['smtp_pass'] = 'password';
$config['mailtype'] = 'html';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = 'TRUE';

I found this solution at https://www.codeigniter.com/user_guide/libraries/email.html by searching for SSL option.



回答5:

As far as CI is concerned, there are so many issues with your email config array that could cause this error.

If you are on local development enviroment, Try changing capitalization for "smtp" to "SMTP" with capital letters.

If you are on a live server, try changing them to small caps.

All in all playing with $config['protocol'] = 'smtp' capitalization some times helps.



回答6:

use smpt_port:25, it's worked for me



回答7:

I try this and it's work for me

$config['protocol'] = 'smtp';
$config['smtp_crypto'] = 'tls';
$config['smtp_host'] = 'smtp.gmail.com';    
$config['smtp_port'] = '587';