Python 이메일 lib- 기존 메시지에서 첨부 파일을 제거하는 방법?

StackOverflow https://stackoverflow.com/questions/1626403

  •  06-07-2019
  •  | 
  •  

문제

첨부 파일을 수정 해야하는 Python 이메일 lib로 읽고있는 이메일이 있습니다. 이메일 메시지 클래스에는 "첨부"메소드가 있지만 "Detach"와 같은 것은 없습니다. 멀티 파트 메시지에서 첨부 파일을 제거하려면 어떻게해야합니까? 가능하다면 메시지를 처음부터 다시 만들지 않고이 작업을 수행하고 싶습니다.

본질적으로 나는 다음을 원한다 :

  1. 이메일을로드하십시오
  2. MIME 부착물을 제거하십시오
  3. 새 첨부 파일을 추가하십시오
도움이 되었습니까?

해결책

set_payload() 도움이 될 수 있습니다.

set_payload(payload[, charset])

전체 메시지 객체의 페이로드를 페이로드로 설정하십시오. 페이로드 불변량을 보장하는 것은 고객의 책임입니다.

빠른 대화식 예 :

>>> from email import mime,message
>>> m1 = message.Message()
>>> t1=email.MIMEText.MIMEText('t1\r\n')
>>> print t1.as_string()
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

t1

>>> m1.attach(t1)
>>> m1.is_multipart()
True
>>> m1.get_payload()
[<email.mime.text.MIMEText instance at 0x00F585A8>]
>>> t2=email.MIMEText.MIMEText('t2\r\n')
>>> m1.set_payload([t2])
>>> print m1.get_payload()[0].as_string()
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

t2

>>> 

다른 팁

글쎄, 내 경험에서, 당신이 일하는 맥락에서, 모든 것이 Message 물체. 메시지, 그 부분, 첨부 파일, 모든 것. 따라서하고 싶은 일을 성취하려면

  1. The를 사용하여 메시지를 구문 분석하십시오 파서 API (이것은 당신에게 루트를 얻을 것입니다 Message 물체)
  2. 구조를 걸어, 필요한 것과 그렇지 않은 것을 결정하십시오 (메시지 인스턴스의 메소드 사용 - .walk ()), - 모든 것이 Message.
  3. 추출한 부품에 부착하는 데 필요한 것을 부착하면 가면 좋습니다.

반복하기 위해, 당신이 함께 일하는 것은 본질적으로 나무입니다. Message .is_multipart () == true 인 객체는 노드이고 Message .is_multipart () == false가있는 개체는 엔드 노드입니다 (페이로드는 문자열입니다. Message 사물).

내가 생각하는 방식은 다음과 같습니다.

  1. set_payload를 사용하여 페이로드를 빈 목록으로 설정하십시오
  2. 페이로드를 만들고 메시지에 첨부하십시오.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top