2009-03-03 3 views
4

내 (파이썬) 웹 애플리케이션에 후위 메일을 통합 너무 각 사용자에 대한지금은 사용자 인터페이스에서 이러한 접미사 이메일을 보여주고 싶은 것을 나는 모든 이메일이 mywebsite.com에서 수신 후위 서버 청취 및 수신이

으로 분명히 mywebsite.com의 모든 사용자는 내 생산 컴퓨터에서 이메일을받는 [email protected]과 같은 메일 주소를 받지만 mywebsite.com의 대시 보드에 내장 된 자신의 콘솔에서 볼 수 있습니다.

사용자가 수신 한 메일을 보게하려면 mywebsite (django-python에서 실행 됨)가 쉽게 반영되도록 메일 접미사의 전자 메일 복사본을 만들어야합니다. 어떻게해야합니까? 정확하게 이것은 내 질문입니다, 어떻게 파이썬 메일 개체 (그래서 내 시스템/웹 사이트) 이해할 수있는 후위 메일을 변환합니까?

그냥 내가 원하는 것을 달성하기 위해 사이비 코드를 작성했습니다 명확합니다 :
email_as_python_object = postfix_email_convertor(postfix_email) 
attachments_list = email_as_python_object.attachments 
body = email_as_python_object.body # be it html or whatever 

그리고 파이썬 함께 제공하지만 모든 경우에 편리하지 이잖아 내가 기본 이메일 모듈 시도 그런데

. 심지어 메일 첨부 파일을 수동으로 처리해야합니다 (나는 싫어합니다). 나는이 같은 문제를 다루기위한 간단한 방법이 필요하다. (나는 postfix가받은 이메일을 어떻게 이해하는지 궁금해했다. 즉 .. 자동으로 다른 헤더, 첨부 파일 등을 알아 낸다.). 도와주세요.

답변

7

우선, Postfix 메일 라우팅 규칙은 매우 복잡 할 수 있으며, 아마도 당신이 선호하는 솔루션은 잘못된 장소에서 많은 속임수를 사용합니다. 실수로 다른 사용자의 메일을 표시하고 싶지 않습니까? 둘째, Postfix는 거의 모든 것을 할 수 있지만, MDA (메일 전달 에이전트) 일뿐입니다.

귀하의 솔루션은 POP3 또는 IMAP 서버 (Cyrus IMAPd, Courier 등)를 사용하여 가장 잘 해결됩니다. IMAP 서버는 모든 사용자의 메일을 읽을 수있는 "슈퍼 유저 계정"을 가질 수 있습니다. 그런 다음 웹 응용 프로그램을 사용자 사서함에 연결하고 머리글과 본문을 검색 할 수 있습니다.

제목 줄만 표시하려면 특수 IMAP 명령과 매우 낮은 오버 헤드를 사용하여 제목 줄을 가져올 수 있습니다.Python IMAP 라이브러리는 API를 이해하기가 쉽지 않습니다. 희망 (다음 가져 오는 모든 메시지 ID를 가져옵니다

이 IMAP 서버에 로그인
import imaplib 

sess = imaplib.IMAP4() 
sess.login('superuser', 'password') 
# Honor the mailbox syntax of your server! 
sess.select('INBOX/Luke') # Or something similar. 
typ, data = sess.search(None, 'ALL') # All Messages. 

subjectlines = [] 
for num in data[0].split(): 
    typ, msgdata = sess.fetch(num, '(RFC822.SIZE BODY[HEADER.FIELDS (SUBJECT)])') 
    subject = msgdata[0][1].lstrip('Subject: ').strip() 
    subjectlines.append(subject) 

은, 사용자의 사서함을 선택 : 나는 그것을 표준 라이브러리에서 가져온 예제와 함께 총을 (!하지 검사)주지) 제목 줄만 입력하고 제목 줄 목록에 결과 데이터를 추가합니다.

메일의 다른 부분을 가져 오려면 sess.fetch으로 줄을 바꾸십시오. 의 특정 구문에 대해을 가져 오려면 RFC 2060 (섹션 6.4.5)을보십시오.

행운을 빈다!

0

나는이 질문을 이해하고 있는지 확신 할 수 없다.

원격 웹 응용 프로그램에서 사용자의 사서함을 볼 수있게하려면 팝 또는 imap 서버를 설치하고 전자 메일을 읽는 메일 클라이언트 (선반에서 찾을 수 있어야 함)를 사용할 수 있습니다. 또는 파이썬 자체와 함께 제공되는 관련 라이브러리를 사용하여 pop/imap 서버를 조사 할 수 있습니다.

다른 컴퓨터에 메일을 복제하려면 procmail을 사용하고이를 수행 할 작업을 설정할 수 있습니다. 이 방법으로 procmail을 호출하도록 Postfix를 설정할 수 있습니다.

+0

Nope NXC. 내가 원하는 것은 사용자가 내 웹 사이트의 대시 보드에서 이메일 메시지를 보길 원합니다. 그래서 내 웹 사이트는 이메일 메시지가 옳은지 (제대로 표시하기 위해) 알아야합니까? 그래서 내 응용 프로그램/웹 사이트에 전자 메일 메시지가 이미 무엇인지 알려주는 방법이 필요합니다 (본문, 첨부 파일 등). 어떻게해야합니까? –

+0

내가 원하는 것을 얻기 위해 의사 코드를 작성했습니다. 한번보세요. –

9

로컬 메일함에 postfix를 전달한 다음 웹 메일 시스템을 사용하여 저장된 메일에 액세스 할 수 있습니다.

후위에 매달 리지 마십시오. 전송 에이전트 일뿐입니다. 메시지를 한 곳에서 가져 와서 다른 곳에 넣으므로 메시지를 저장하지 않습니다. 그래서 postfix는 SMTP를 통해 메시지를 가져 와서 로컬 메일 파일에 저장합니다.

그런 다음 IMAP 또는 일부 웹 메일 시스템에서 해당 메시지를 사용자에게 표시합니다.

메일을 webapp에 통합하려면 IMAP 서버를 실행하고 python IMAP 라이브러리를 사용하여 메일을 가져와야합니다.

+0

이것은 더 강력하고 확장 성이 뛰어난 응용 프로그램 디자인처럼 들리지만 ... 이와 같은 시스템을 사용하면로드가 필요할 경우 여러 계층에서 원활하게 확장 할 수 있으며 구현에 도움이되는 기존 라이브러리가 있습니다. –