«   2018/01   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
Archives
Today
415
Total
1,047,156
관리 메뉴

Blue Breeze

CodeIgniter Email SMTP 451 Error 본문

Framework/PHP-CodeIgniter

CodeIgniter Email SMTP 451 Error

푸른바람 푸른_바람 2015.01.30 08:30

PHP

CodeIgniter


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 */
		$config['protocol'] = 'sendmail';
		$config['mailpath'] = '/usr/sbin/sendmail';
	default:
		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);
	}
}

'Framework > PHP-CodeIgniter' 카테고리의 다른 글

CodeIgniter Stright layout lib - view, js, css 한번에 사용  (0) 2016.03.24
동영상 업로드  (0) 2015.08.21
CodeIgniter Email SMTP 451 Error  (0) 2015.01.30
CodeIgniter Rest Server Format jsonp,cvs Error  (0) 2014.12.12
CodeIgniter Straight Model  (0) 2014.12.09
CodeIgniter Lib  (0) 2014.09.15
0 Comments
댓글쓰기 폼