2016-10-17 3 views
4

Gmail API를 사용하여 이메일을 보낼 때 본문에 줄 바꿈 문자 약 78자를 입력합니다. 이에 대한 비슷한 질문은 here입니다.Gmail API - 일반 텍스트 자동 줄 바꿈

어떻게하면 멈출 수 있습니까? 단순히 줄 바꿈없이 일반 텍스트를 API를 통해 보내려합니다. 모바일 클라이언트 (Gmail 및 iOS Mail 앱에서 테스트)의 경우 현재 서식이 끔찍한 것처럼 보입니다.

Content-Type: text/plain; charset=UTF-8

Content-Transfer-Encoding: quoted-printable

난 아무것도 실종 :

나는 다음과 같은 헤더를 시도했습니다?

는 편집 : Mr.Rebot의 제안에 따라, 나는 또한 행운과 함께이 시도했습니다

Content-Type: mixed/alternative

편집 2 :가 여기에 내가 보낸다 메시지의 정확한 형식입니다 (함께하고 quoted-printable 헤더없이 시도 :

From: Example Account <[email protected]> 
To: <[email protected]> 
Content-Type: text/plain; charset=UTF-8 
Content-Transfer-Encoding: quoted-printable 
Subject: This is a test! 
Date: Tue, 18 Oct 2016 10:46:57 -GMT-07:00 

Here is a long test message that will probably cause some words to wrap in strange places. 

내가이 전체 메시지 및 Base64로 인코딩 받아, 다음 01,232,135에 게시 다음 JSON의 몸:

{ 
    "id": MSG_ID, 
    "message": { 
     "raw": BASE64_DATA 
    } 
} 
+0

당신이 '혼합/alternative'로 설정 봤어 파이썬 mime.text.MIMEText 객체가되지 않습니다? 코드 구현은 관련 [SO 질문] (http://stackoverflow.com/a/34165728/5995040)을 참조하십시오. 희망이 도움이됩니다. –

+0

@ Mr.Rebot 나는 그것을 시도해 봤지만 실제로는 전체 메시지가 본문을 표시하는 대신 첨부 파일이되도록했습니다. – hundley

+0

안녕 훈 들리! 아직이 작업을하지 않았다면 잘 모르겠지만, 유효한 옵션은 quoted-printable을 사용하여 보내기보다는 7 비트 인코딩을 사용하는 것입니다. QP 인코딩이 필요없는 경우 7 비트가 원하는대로 정확하게 처리됩니다. Gmail로 전송할 때 메시지가 제대로 QP로 인코딩되지 않았고 줄 바꿈이 엉망으로 생기는 것을 감지합니다. 또는 콘텐츠 유형 (https://www.ietf.org/rfc/rfc2646.txt)에 대해 format = flowed/format = fixed 옵션을 살펴보십시오. 희망은 유용합니다! –

답변

2

당신이 quoted printable 인코더를 통해 컨텐츠를 실행하고 당신을 위해 그것을 인코딩 할 수있는 API를 헤더와 함께 인코딩 된 콘텐츠의 가치를 보내거나 기대하고 있습니까?

wikipedia 임의의 줄의 마지막 문자로 = 개 이하의 부드러운 줄 바꿈을 추가하면 원래 텍스트를 복원 한 결과가 디코딩되어야합니다.

UPDATE

그 메시지 인용 - 인쇄 된 인코딩 (Base64로 그것을)이 콘텐츠로 보내십시오 :

From: Example Account <[email protected]> 
To: <[email protected]> 
Content-Type: text/plain; charset=UTF-8 
Content-Transfer-Encoding: quoted-printable 
Subject: This is a test! 
Date: Tue, 18 Oct 2016 10:46:57 -GMT-07:00 

Here is a long test message that will probably cause some words to wrap in = 
strange places. 
+0

내가 보내는 메시지의 정확한 형식으로 내 질문을 업데이트했습니다. 내가 이해하지 못하는 이유는 Gmail이 줄 바꿈을 전혀 사용하지 않는 이유입니다 ... 웹 클라이언트를 통해 이메일을 보내면 줄 바꿈이 적용되지 않으므로 API가 왜 필요합니까? – hundley

+0

@ hundley 이메일 클라이언트를 통해 이메일을 보낼 때 모든 이메일 클라이언트가 준수하는 사양에 따라 '소프트 분할'되는 경우가 많으므로 수신 단계에서 소프트 차단이 제거되므로 내용이 ' quoted-printable' 디코딩됩니다. 보내는 내용에 부드러운 나누기를 추가하면 줄 바꿈없이받는 전자 메일 클라이언트에서 해독되어야합니다.너가하지 않으면 선은 76 특성을 초과한다, google은 너를 위해 그들을 추가하기 위하여려고하고있다. 업데이트에 부드러운 중단이 포함되어 있지 않습니다. – cchamberlain

+0

다음은 왜 최대 길이가 76 문자 - [RFC2822] (https://tools.ietf.org/html/rfc2822#section-2.1.1)인지에 대한 이유가있는 IETF 사양에 대한 링크입니다. 분명히 말하면 Google은 운영위원회가 정한 표준을 구현하고 규칙을 작성하지 않고 규칙을 준수하며 (대부분의 경우) 규칙을 준수합니다. ;) – cchamberlain

0

난 당신이 유사한 기능을 가지고 있으리라 믿고있어 :

 
1. def create_message(sender, to, cc, subject, message_body): 
2.  message = MIMEText(message_body, 'html') 
3.  message['to'] = to 
4.  message['from'] = sender 
5.  message['subject'] = subject 
6.  message['cc'] = cc 
7.  return {'raw': base64.urlsafe_b64encode(message.as_string())} 

마지막으로 나를 위해 일한 한 가지 트릭 헤더 값합니다 (message 개체의 구성원) 페이로드 딕셔너리를 수정하려고 시도 (line 2)을 설정 하였다 :

  • message = MIMEText(message_body, 'html') < - MimeText는 객체의 생성자
  • 번째 파라미터로서 'html' 추가 자신의 Gmail API 구글에서 제공

기본 코드는 어떻게 일반 텍스트 이메일을 전송하는 방법을 알려줍니다,하지만 그들은 그 일을하고 어떻게 숨 깁니다. 내가 파이썬 클래스 email.mime.text.MIMEText 객체를 볼 수밖에 없었습니다 message = MIMEText(message_body)

알라 ....

  • 클래스 email.mime.text.MIMEText (_text [_subtype [_charset]]) 우리는 명시 적으로 그것을 전달하려는 : 당신이 MimeText는 객체의 생성자의 정의를 볼 수 있습니다 곳 은 그입니다 값은 _subtype입니다. 이 경우 'html'_subtype으로 전달하려고합니다.

지금, 당신은 더 이상 예기치 구글하여 메시지에 적용 포장 단어, 또는