2017-01-04 2 views
0

json으로 클러스터 상태를 가져 와서 나에게 메일을 보내는 Python 스크립트가 있습니다. 문제는 json이 꽤 인쇄되지 않는다는 것입니다. 이 내가 이미 시도 된 방법은 다음과 같습니다json 객체를 이메일 python으로 인쇄하는 방법

  1. 간단한 -> json.dumps (건강)
  2. json.dumps (건강, 들여 쓰기 = 4, sort_keys = 참)

그러나 Gmail의 출력은 약간이

{ "active_primary_shards": 25, "active_shards": 50, "active_shards_percent_as_number": 100.0, "cluster_name": "number_of_pending_tasks": 0, "relocating_shards": 0, "status": "green", "task_max_waiting_in_queue_millis": 0, "timed_out": false, "unassigned_shards": 0 }

메일이

을 Gmail로 전송 된 것처럼, 아직 포맷되지

답변

0

내가 확실히 말할 수는 없지만, 그것은 당신의 이메일 전송 코드는 "HTML"이메일 전송을 디폴트처럼 보일 것이고, HTML에서 연속 공간, 하나에 붕괴 그런 식으로 HTML 코드와 같은 :

<p> 
    This is a paragraph, but it's long so 
    I'll break to a new line, and indented 
    so I know it's within the `p` tag, etc. 
</p> 

"이것은 단락입니다.하지만 길기 때문에 새 줄을 긋고 들여 쓰기하여 p 태그 등 내에 있음을 알 수 있습니다." 사용자에게

그래서, 나는 당신의 두 가지 옵션이 있습니다 말하고 싶지만 :

  1. 변경 코드를 보내는 이메일 text/plain으로 Content-type 헤더를 보내도록하거나,
  2. &nbsp; (비 분리로 모든 공간을 교체 예를 들어 공간) 문자와 <br> (바꿈 줄 바꿈) :

    email_body = json.dumps(
        health, indent=4, sort_keys=True).replace(' ', '&nbsp;').replace('\n', '<br>') 
    
0
>>> import json 
>>> s = json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4) 
>>> print s 
{ 
    "4": 5, 
    "6": 7 
} 

광산은 그것의

어쩌면에서 동시에 파이썬 2.7.3 (기본값 월 (17) 2015 년 17시 10분 37초) [GCC 3.4.5 20051201 (레드햇 3.4.5-2)]를 작동합니다 버전 관련, 게시 버전 및 출력

+0

인쇄 날 위해 fime 작동합니다. 모든 줄 바꿈을 무시 이메일로 보낼 때 JSON 형식이 깨진다 – anarcky

+0

HTML은 즉, {
      & NBSP "4"메일 다음,  과 공간을 각 라인에
를 추가 및 교체하려고 : 5,
을 .. ...... 이런 식으로 – jack

관련 문제