SMPT 451 오류는 인터넷 메일 메시지의 모든 라인과 라인 피드(LF) 및 캐리지 리턴 (CR)을 준수하지 않고 메일을 보내려 할때 발생하는 오류 코드로 규칙을 준수하지 않을 경우 822bis 섹션 2.3의 위반으로 메일 서버에 의해 거부 된다.
$config['mailtype'] = 'html'; $config['charset']='utf-8'; $config['crlf'] = "\r\n"; $config['newline']="\r\n"; $config['wordwrap'] = TRUE; switch( 'smtp' ) { case 'gmail': $config['protocol']='smtp'; $config['smtp_host']='ssl://smtp.googlemail.com'; $config['smtp_port']='465'; $config['smtp_timeout']='30'; $config['smtp_user']='userid@gmail.com'; $config['smtp_pass']='password'; break; case 'nate': $config['protocol']='smtp'; $config['smtp_host']='ssl://smtp.mail.nate.com'; $config['smtp_port']='465'; $config['smtp_timeout']='30'; $config['smtp_user']='userid@empal.com'; $config['smtp_pass']='password'; break; case 'naver': // 네이버 > 메일 > 환경설정 > POP3/SMTP 사용설정 필요 $config['protocol']='smtp'; $config['smtp_host']='ssl://smtp.naver.com'; $config['smtp_port']='465'; $config['smtp_timeout']='30'; $config['smtp_user']='userid@naver.com'; $config['smtp_pass']='password'; break; case 'yahoo': $config['protocol']='smtp'; $config['smtp_host']='ssl://smtp.mail.yahoo.com'; $config['smtp_port']='465'; $config['smtp_timeout']='30'; $config['smtp_user']='userid@yahoo.com'; $config['smtp_pass']='password'; break; case 'smtp': $config['protocol']='smtp'; $config['smtp_host']='mail.domain.com'; $config['smtp_port']='25'; $config['smtp_timeout']='100'; $config['smtp_user']=''; $config['smtp_pass']=''; break; case 'sendmail': /* follow default */ default: $config['protocol'] = 'sendmail'; $config['mailpath'] = '/usr/sbin/sendmail'; break; }
만약 위 방법으로도 451 에러가 발생한다면 코드이그나이터 Email Lib를 확장해서 문제를 해결
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * * @author stepone.kr@gmail.com * * SMTP 451 Error 해결 * http://stratosprovatopoulos.com/web-development/php/smtp-451-error-codeigniter/ */ class MY_Email extends CI_Email { protected function _prep_q_encoding($str, $from = FALSE) { $str = str_replace(array("\r", "\n"), array('', ''), $str); // Line length must not exceed 76 characters, so we adjust for // a space, 7 extra characters =??Q??=, and the charset that we will add to each line $limit = 75 - 7 - strlen($this->charset); // these special characters must be converted too $convert = array('_', '=', '?'); if ($from === TRUE) { $convert[] = ','; $convert[] = ';'; } $output = ''; $temp = ''; for ($i = 0, $length = strlen($str); $i < $length; $i++) { // Grab the next character $char = substr($str, $i, 1); $ascii = ord($char); // convert ALL non-printable ASCII characters and our specials if ($ascii < 32 OR $ascii > 126 OR in_array($char, $convert)) { $char = '='.dechex($ascii); } // handle regular spaces a bit more compactly than =20 if ($ascii == 32) { $char = '_'; } // If we're at the character limit, add the line to the output, // reset our temp variable, and keep on chuggin' if ((strlen($temp) + strlen($char)) >= $limit) { $output .= $temp."\n"; $temp = ''; } // Add the character to our temporary line $temp .= $char; } $str = $output.$temp; // wrap each line with the shebang, charset, and transfer encoding // the preceding space on successive lines is required for header "folding" $str = trim(preg_replace('/^(.*)$/m', ' =?'.$this->charset.'?Q?$1?=', $str)); return str_replace(array("\n"), array("\r\n"), $str); } }
반응형
'lang > php' 카테고리의 다른 글
window xampp 속도문제 - 가속엔진이 없을 경우 (0) | 2015.05.29 |
---|---|
PHP han2eng (0) | 2015.03.05 |
CodeIgniter Rest Server Format jsonp,cvs Error (0) | 2014.12.12 |
CodeIgniter Straight Model (0) | 2014.12.09 |
PHP 비기너 동영상 튜토리얼 (0) | 2014.10.29 |