2010-07-05 3 views
1

Zend_Mail을 사용하여 로그 파일의 이메일을 보내고 있지만 메일 클라이언트가 좋아하지 않는 dodgy 문자를 보내고 있습니다.Zend_Mail이 클라이언트에서 이메일을 깨는 특수 문자 보내기

내 코드 :

<?php 
$sBody = "errors.log (>= WARN):\n\n"; 
$rFile = fopen($sErrorsLog, "r"); 
while (!feof($rFile)) 
{ 
    $sLine = fgets($rFile); 
    $sBody.= $sLine; 
} 

$oMail = new Zend_Mail(); 
$oMail->addTo($sTo) 
     ->setFrom($sFrom) 
     ->setSubject($sSubject) 
     ->setBodyText($sMessage); 

내가받은 이메일 본문 :

errors.log (> = WARN) :

타임 스탬프 | 2010-07-05T09 : 48 : 03 +10 : 00 메시지 | O : 11 : "ArrayObject": 3 : {s : 9 : "예외"; O : 32 : "Zend_Controller_Action_Exception": 7 : {s : 25 : "

오류 로그에 다음이 포함되어 있습니다. (위에서부터 추출한 것입니다.)

타임 스탬프 | 2010-07-05T09 : 48 : 03 + 10 : 00 메시지 | O : 11 : "ArrayObject": 3 : {s : 9 : "예외"; O : 32 : "Zend_Controller_Action_Exception": 7 : {s : 25 : "Zend_Exception_previous"; N; s : 10 : "* 메시지"; s : 64 : ""crgdtgdf " i : 404; s : 7 : "파일"; s : 73 : "__call()"에 갇히지 않았습니다. /var/www/development/workspaces/s.rees/library/Zend/Controller/Action.php ";s:7 : "* line", i : 485, s : 16 : "Exceptiontrace", a : 4 : "/ var/www/development/workspaces/s.rees/library/Zend/Controller/Action.php"; s : 4 : "파일"; 7 : 5 : "class"; s : 22 : "Zend_Controller_Action"; s : 4 : "type"; s : 8 : "function"; s : 6 : "__ call" a : 2 : {i : 0; s : 14 : "crgdtgdfAction"; i : 1; a : 0 : {}}} i : 1; a : 6 :

모든 로그 출력이 표시되도록 이메일 필터링/인코딩 방법에 대한 아이디어가 있으십니까? 모든 세부 사항을 이메일로 보내야합니다.

답변

2

PHP의 직렬화 된 데이터에는 직렬화 된 객체의 private 또는 protected 멤버 앞에 null 바이트가 포함됩니다.

출력을 직렬화 해제하고 다시 처리해야하거나 null 바이트를 제거해야 전자 메일로 전송할 수 있습니다.

$text = filter_var($text, FILTER_SANITIZE_SPECIAL_CHARS); 
+0

아, 그건 의미가 있습니다 : –

+0

방금 ​​str_replace ("\ 0", "", $ sLine); 그리고 그것은 작동하는 것 같습니다 :) 고마워! –

+0

그건 꽤 정식으로하는 방법입니다. :) – Charles

0

나는이 사용하여 해결했다. null 바이트를 제거하는 간단한 방법이 있습니까?