2017-12-13 9 views
0

파이썬의 email 패키지를 사용하여 전자 메일을 작성하고 있습니다 (정말 멋지다 !!).Mime 메일에서 필요한 헤더 만 인코딩하는 방법은 무엇입니까?

email.Header을 사용하여 주제와 같은 이상한 문자 (액센트 등)가있는 헤더를 인코딩하는 것이 더 효과적이라는 것을 알게되었습니다.

Header(value, 'UTF-8').encode() 

그것은 잘 작동하지만, 그것은 또한 필요하지 않는 필드는 인코딩을 필요로 인코딩 :

것은 이렇게하려면, 나는 매우 쉽습니다 다음을하고 있어요

X-Mailer: =?utf-8?q?My_Service?= 

된다

X-Mailer: My Service 

가 나는 경우가 꽤 쓸모 찾을 수 있습니다.

내 질문 : 헤더가 유용 할 때만 인코딩하는 방법이 있습니까?

나는 제외/시도로 value.encode/decode()와 함께 연주에 대해 생각하고, 제외의 Header().encode() 함수를 호출,하지만 난 그렇게 할 클리너 방법이 바라고 있어요?

답변

0

좋아, 지금까지 최선의 접근 방법입니다.

ascii charset을 사용하여 문자열을 디코딩하려고합니다. 실패하면, 우리는 그것이 그렇지 않으면 Header.encode()을 사용하여 인코딩 한, 우리는 그것을두고 : How to check if a string in Python is in ASCII?

:

def encode_header(value): 
    try: 
     value.decode('ascii') 
     return value 
    except UnicodeDecodeError: 
     return Header(value, 'UTF-8').encode() 

내가이 솔루션이 게시물에 대한 감사를했다