Intereting Posts
PDO-версия mysql_num_rows ($ result) == 0) Командные команды в Laravel Artisan Scheduler? Используя PHP или JavaScript Facebook SDK, как я могу заставить пользователя войти на мой сайт? Как получить IP-адрес пользователя REST CodeIgniter CLI, дающий ошибку system_path ", как представляется, неправильно настроен." как правильно отправлять push-уведомления Лучший способ написать инструкцию PHP SQL Update Обновите содержимое div только в том случае, если в базу данных добавлен новый контент Как создать массив из вывода массива, напечатанного с помощью print_r? Лучший способ инициализировать (пустой) массив в PHP PHP cURL в аутентифицированный сайт, когда он уже вошел в систему Только переменные должны передаваться по ссылке … в строке 13 Fail как сделать поле ввода даты больше или равно другому полю даты, используя валидацию в laravel запуск скрипта из cron каждую секунду Как получить значение строки запроса из значения URL, хранящегося в переменной?

PHP Специальная функция SMTP-почты Возврат ERROR fputs send bytes failed errno = 32 Разбитая труба

Я написал следующую пользовательскую функцию PHP для отправки почты через SMTP MAIL SERVER.

function send($format = 'text'){ $smtpServer = 'mail.mymailserver.com.mx'; $port = '25'; $timeout = '60'; $username = 'myuser'; $password = 'mypassword'; $localhost = 'www.mydomain.com.mx'; $newLine = "\r\n"; $smtpConnect = fsockopen( $smtpServer, $port, $errno, $errstr, $timeout ); fputs( $smtpConnect,'AUTH LOGIN'.$newLine ); fputs( $smtpConnect, base64_encode( $username ) . $newLine ); fputs( $smtpConnect, base64_encode( $password ) . $newLine ); fputs( $smtpConnect, 'HELO ' . $localhost . $newLine ); fputs( $smtpConnect, 'MAIL FROM: ' . $this->from . $newLine ); fputs( $smtpConnect, 'RCPT TO: ' . $this->to . $newLine ); if( !empty( $this->cc ) ){ fputs( $smtpConnect, 'RCPT TO: ' . $this->cc . $newLine ); } if( !empty( $this->bcc ) ){ fputs( $smtpConnect, 'RCPT TO: ' . $this->bcc . $newLine ); } fputs( $smtpConnect, 'DATA' . $newLine ); fflush( $smtpConnect ); $raw = ""; $raw = @fread( $smtpConnect, 255 ) . "@"; $raw .= @fread( $smtpConnect, 255 ); fputs( $smtpConnect, 'To: ' . $this->to . $newLine ); fputs( $smtpConnect, 'From: <' . $this->from .'>' . $newLine ); fputs( $smtpConnect, 'Subject:' . $this->subject . $newLine ); $format = 'html'; if( $format == 'text' ){ $headers = "Content-Type: text/plain; charset=\"iso-8859-1\"" . "\r\n"; $headers .= "Content-Transfer-Encoding: 7bit" . "\r\n"; $message = $this->bodyText(); fputs( $smtpConnect, $headers . $newLine . $newLine ); fputs( $smtpConnect, $message . $newLine . '.' . $newLine ); }else{ $random_hash = md5(date('r', time())); $headers = "Content-Type: multipart/alternative; boundary=\"PHP-alt-".$random_hash."\"\r\n"; $headers .= "--PHP-alt-" . $random_hash . "\r\n"; $headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"" . "\r\n"; $headers .= "Content-Transfer-Encoding: 7bit" . "\r\n"; $message = $this->bodyText(); fputs( $smtpConnect, $headers . $newLine ); fputs( $smtpConnect, $message . $newLine ); $headers = "--PHP-alt-" . $random_hash . "\r\n"; $headers .= "Content-Type: text/html; charset=\"iso-8859-1\"" . "\r\n"; $headers .= "Content-Transfer-Encoding: 7bit" . "\r\n"; $message = $this->bodyHtml(); fputs( $smtpConnect, $headers . $newLine ); fputs( $smtpConnect, $message . $newLine ); $headers = "--PHP-alt-" . $random_hash . "--\r\n"; fputs( $smtpConnect, $headers . '.' . $newLine ); } fputs( $smtpConnect,'QUIT' . $newLine ); return true; } 

Функция работала очень хорошо, но в последние дни я получал следующие ошибки php:

Обратите внимание: fputs () [function.fputs]: ошибка отправки 8192 байт с errno = 32 Разбитая труба в /cakeapp/trunk/app/controllers/components/email.php в строке 165

Обратите внимание: fputs () [function.fputs]: ошибка 49 байтов с ошибкой = 32 Разбитая труба в /cakeapp/trunk/app/controllers/components/email.php в строке 169

Обратите внимание: fputs () [function.fputs]: ошибка отправки 6 байтов с errno = 32 Разбитая труба в /cakeapp/trunk/app/controllers/components/email.php в строке 182

Я искал в Google некоторые предложения, но информация, которую я нашел, рассказывала о проблеме, связанной с отключением времени соединения!

Может ли кто-нибудь предложить способ устранить эту проблему?

У меня была та же проблема, и я нашел решение, установив протокол «mail» (конечно, это не тот случай, когда вам всегда нужно использовать «почту» в качестве протокола, я использовал «smtp» в качестве протокола на другом веб-сайте и отлично работает, но тот же код, который я скопировал и вставил на какой-то другой сайт, и не работал, поэтому мне пришлось изменить его на «почту»). Моя конфигурация образца выглядит так (замените слова верхнего регистра своими собственными учетными данными):

 'protocol' => 'mail', 'smtp_host' => 'mail.YOUR_WEBSITE_DOMAIN.com.au', 'smtp_port' => 25, 'smtp_user' => 'YOUR_EMAIL_ACCOUNT@YOUR_WEBSITE_DOMAIN.com.au', 'smtp_pass' => 'YOUR_PASSWORD_FOR_YOUR_EMAIL_ACCOUNT', 'smtp_timeout' => 5,// The default value 'mailtype' => 'html' //default: text 

http://tools.ietf.org/html/rfc2045 Закодированные строки должны содержать не более 76 символов, не считая завершающего CRLF. Если в поступающих закодированных данных обнаружены более длинные строки, надежная реализация может тем не менее декодировать строки и может сообщать пользователю ошибочную кодировку.

Итак, если у вас была такая же проблема, попробуйте «chunk_split»! Например: $ message = chunk_split ($ message)