2009-04-25 4 views
2

[email protected]과 같이 등록 할 때 내 웹 사이트 사용자가 이메일 주소를 할당받을 수있는 기능을 제공하고 싶지만 이러한 이메일을 실제로 지원하는 것이 실제로 가능하지는 않습니다. 일반적으로 웹 메일 프로그램을 통해 계정을 만듭니다. 나는 또한 내 웹 호스트가 멋지다면 확실하지 않다. 필자가 정말로 원하는 것은이 이메일을 웹 사이트가있는 더 큰 시스템에 원활하게 통합 할 수 있다는 것입니다. 사이트 내 메시징에 주로 사용되기 때문에 실제 이메일 주소를 넣을 수 있기를 원합니다. . 그래서 대신 mydomain에서 포괄적 인 계정을 갖고 있으며이 전자 메일에서받는 메일을 확인하고 보내려는 사람을 확인한 다음 시스템의 사용자에 대한 메시지를 추가하도록합니다.전자 메일을 파이썬 스크립트로 리디렉션하는 가장 좋은 방법은 무엇입니까?

그래서, 질문은 다음과 같습니다

1)이 올바른 접근 방식인가? 내 도메인에 자유롭게 이메일을 할당 할 수있는 호스트를 얻는 것이 얼마나 비쌉니까? 현재 WebFaction의 공유 호스팅을 사용 중입니다.
2) 괜찮은 접근이라면이 계정을 내 파이썬 스크립트에 연결하는 가장 좋은 방법은 무엇일까요? .forward에 대해 읽었지만 유닉스 환경에는별로 좋지 않습니다. 일단 내가 알기 만한다면, 장고의 모델 기능을 사용하여 새로운 메시지를 사용자에게 추가 할 수 있도록 "Django 환경"에 스크립트를 어떻게 넣을 수 있습니까?
3) 장고가 이것을 쉽게하기 위해 할 수있는 것이 있습니까?
4) 전자 메일 주소를 구문 분석 할 수있는 도구가 있습니까? 어떻게 작동합니까?

+0

중복 : http://stackoverflow.com/questions/484940/achieving-emailing-between-website-users-without-mailing-server-configuring/ –

답변

0

하지만 난 정말 실제로 지원 가능 생각하지 않습니다이 모든 이메일

내가 여기 당신의 기본 가정이 잘못되었다고 생각 웹 메일 프로그램을 통해 일반적으로 계정. 대부분의 '웹 메일'프로그램은 백엔드 메일 시스템 (포스트 픽스 등)에 대한 프론트 엔드 (또는 클라이언트) 일뿐입니다. 웹 호스트 설정 방법을 확인해야합니다. 이러한 계정을 프로그래밍 방식으로 생성 한 다음 SquirrelMail 또는 RoundCube와 같은 일반적인 웹 메일 인터페이스를 사용할 수있는 이유는 없습니다. 예를 들어 내 웹 호스트 (bluehost)를 사용하면 2500 개의 이메일 계정을 허용합니다. 귀하의 수는 얼마인지는 잘 모르지만 한 달에 몇 달러를 무제한으로 업그레이드 할 수 있습니다. 나는 builtin 전자 메일 처리 기능을 사용하는 것이 더 강력한 방법이라고 생각한다.

0

귀하의 질문은 this question과 유사합니다.

django-messages과 같은 프로젝트를 사용하여 사용자 간의 메시징을 처리하십시오.

사용자가 장고 사이트 외부에서 메일을 받도록하려면 메일 수신 및 저장을 처리하기 위해 MTA를 설정해야합니다. 그러면 이메일을 장고 메시지 데이터베이스로 가져 오기 위해 procmail과 같은 것을 입력해야합니다.

일반적인 MTA는 postfix, eximqmail입니다. Python 기반의 답변에 대한 답변은 this question

여러분의 장고 사이트에있는 모든 새로운 사용자가 유효한 전자 메일 수신자가되어 MTA에 의해 거부되지 않도록 코드를 직접 작성해야합니다.

4

직접 질문에 대답하려면 :

1,2)는 WebFaction 웹 사이트에 this FAQ를 확인하십시오. 들어오는 전자 메일을 원하는 스크립트로 쉽게 라우팅하는 방법을 설명합니다.전자 메일 주소를 만들 때 사용자 이름을 지정하지 않아도 도메인에 보낸 모든 내용을 포괄적 인 전자 메일로 사용할 수 있습니다.

3) 다른 사람들이 제안 했으므로 django-messages을 확인할 수 있지만 Django Plugables의 경우 더 좋은 점이있을 수 있습니다.

4) email.parser 모듈은 전자 메일 구문 분석의 무서운 부분 대부분을 처리하므로 확인하십시오.

2

비슷한 질문에 my answer을 참조하십시오. 장고에 대한 이메일 파서를 시작하기위한 기본 코드가 모두 있습니다.

편집는 :

파이썬의 poplibimaplib 들어오는 이메일을 처리하는 데 사용하는 jutda-helpdesk라는 응용 프로그램이있다 : 두번째 생각, 여기에 코드입니다. POP3 또는 IMAP 액세스가 가능한 어딘가에 계정이 있어야합니다.

get_email.py에서 적응 :

def process_mail(mb): 
    print "Processing: %s" % q 
    if mb.email_box_type == 'pop3': 
     if mb.email_box_ssl: 
      if not mb.email_box_port: mb.email_box_port = 995 
      server = poplib.POP3_SSL(mb.email_box_host, int(mb.email_box_port)) 
     else: 
      if not mb.email_box_port: mb.email_box_port = 110 
      server = poplib.POP3(mb.email_box_host, int(mb.email_box_port)) 
     server.getwelcome() 
     server.user(mb.email_box_user) 
     server.pass_(mb.email_box_pass) 

     messagesInfo = server.list()[1] 

     for msg in messagesInfo: 
      msgNum = msg.split(" ")[0] 
      msgSize = msg.split(" ")[1] 
      full_message = "\n".join(server.retr(msgNum)[1]) 

      # Do something with the message 

      server.dele(msgNum) 
     server.quit() 

    elif mb.email_box_type == 'imap': 
     if mb.email_box_ssl: 
      if not mb.email_box_port: mb.email_box_port = 993 
      server = imaplib.IMAP4_SSL(mb.email_box_host, int(mb.email_box_port)) 
     else: 
      if not mb.email_box_port: mb.email_box_port = 143 
      server = imaplib.IMAP4(mb.email_box_host, int(mb.email_box_port)) 
     server.login(mb.email_box_user, mb.email_box_pass) 
     server.select(mb.email_box_imap_folder) 
     status, data = server.search(None, 'ALL') 
     for num in data[0].split(): 
      status, data = server.fetch(num, '(RFC822)') 
      full_message = data[0][1] 

      # Do something with the message 

      server.store(num, '+FLAGS', '\\Deleted') 
     server.expunge() 
     server.close() 
     server.logout() 

mb가, 나머지는 꽤 명확해야 모든 메일 서버 정보를 저장하는 그냥 객체입니다.

메시지의 특정 부분을 얻으려면 poplibimaplib에있는 문서를 확인해야 할 것입니다.하지만이 방법을 사용하면 충분합니다.

관련 문제