2014-11-25 2 views
2

전문가에게 물어 보겠다. 나는 Gmail의 API 클라이언트 라이브러리를 통해 메시지를 읽는 PHP 스크립트를 가지고 :Gmail API를 사용하여 메시지 본문 서식 지정하기

$optParamsGet2['format'] = 'full'; 
    $message = $Service_Gmail->users_messages->get('me',$messageId,$optParamsGet2); 
    $snippet = $message->getSnippet(); 
    if(strlen($snippet) >= 90){ $snippet=substr($snippet, 0, 90); $snippet="$snippet..."; } 
    $headers = $message->getPayload(); 
    $vardumpresult=serialize($headers); 

    try { 
     $parts = $message->getPayload()->getParts(); 
     $body = $parts[0]['body']; 
     $rawData = $body->data; 
     $sanitizedBody = strtr($rawData,'-_', '+/'); 
    } 
그때 자바 스크립트 모달로 $ sanitizedBody를 보내고 나는 이메일을 표시 할 때 64

var mail_body = _self.data('body'); 

// Create Base64 Object 
var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f<e.length){n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(f<e.length){s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r)}else if(r>127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n<e.length){r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r);n++}else if(r>191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}} 

// Decode the String 
var decodedString = Base64.decode(mail_body); 
$("#mail_body").text(decodedString); 
$(_self.attr('href')).modal('show'); 

을 기초로 변환

몸체가 다음과 같이 표시됩니다.

테스트 메시지입니다. 이것은 두 번째 단락입니다. 이것은 세 번째 단락입니다. 이 총알 서식한다 : - 총알 1 - 총알이 - 총알을 I가/인쇄를 보낼 수있는 방법 3 크리스 로즈 수학 교사/기술 학습 컨설턴트 해밀턴 고등학교, 해밀턴시 교육청 1165 이튼 애비뉴 해밀턴, OH 45013

적절한 형식으로 내 모달 div?

+0

'$(). text();'...'$() .html();을 사용하십시오. – stackErr

답변

1

문제는 jQuery에 있습니다. .text()을 사용 중입니다. 어느 html 태그를 모두 제거합니다. 형식을 유지하려면 .html()을 사용하여 내용을 설정하십시오.

는 SO이 변경이에

$("#mail_body").text(decodedString); 

:

$("#mail_body").html(decodedString); 

을 당신이 경고 상자가 제대로 포맷 언급입니다. 디코딩 된 문자열에서 개행 문자와 들여 쓰기 문자를 이스케이프 처리했다고 생각합니다.

첫 번째는 mail_body 사업부에 대한 귀하의 CSS에 이것을 추가

#mail_body{ 
    white-space: pre-wrap; 
} 

이 개행 문자 처리됩니다. IE8 +.

문자열에있는 다른 이스케이프 문자를 알아내어 바꿀 필요가 있습니다.

+0

도움을 가져 주셔서 감사하지만 불행히도 저는 같은 결과를 얻고 있습니다. 흥미로운 것은 내가 을 붙여 넣을 때입니다 (테스트 메시지입니다.) 두 번째 단락입니다. 이것은 세 번째 단락입니다. 글 머리 기호 - 글 머리 기호 1 - 글 머리 기호 2 - 글 머리 기호 3)를 StackOverflow로 변환하면 올바르게 변환됩니다 반환 및 간격. – ChristopherRose

+0

'decodeString'이 어떻게 보이는지 게시 할 수 있습니까? – stackErr

+0

원래 게시물에 있습니다. 내가 사용하는 : var decodedString = Base64.decode (mail_body); 원래 게시판에 이전에 정의 된 Base64를 호출합니다. – ChristopherRose