2008-09-11 18 views
4

작업중인 응용 프로그램에 대한 상사의 요청이 있습니다. 기본적으로 외부 클라이언트가 Excel 파일을 제출할 이메일 주소 설정을 받고 있습니다.Java에서 전자 메일 자동 처리

내가 필요로하는 것은 자동으로이 주소로 전송 된 모든 이메일을 픽업하는 방법입니다. 따라서 첨부 파일을 처리하고 처리하여 폴더에 저장할 수 있습니다.

도움이 될 것입니다 시작하는 경우에도의 모든 정보 \

참고 :. 우리는이 일을 연꽃 노트 서버를 사용하고 있지만 (가능한 경우) 일반적인 방법이 더 도움이 될 것입니다.

답변

9

전자 메일 -> mailserver -> [something] -> file-on-disk.

디스크의 파일은 구문 분석하기가 매우 쉽습니다. JavaMail을 사용하십시오.

에서 [뭔가] 수 : SMTP 연결을위한

+1

당신은 [뭔가] 당신은 캔트으로 JavaMail에 사용할 수 있습니까? –

0

로터스 노츠/도미노 상점은 Notes 데이터베이스에 메일. 문서 (이메일)를 받고, 필드 값 (From, Subject)을 읽고, 파일을 분리하는 데 사용할 수있는 API가 있습니다.

API는

-C API (외부) (데이터베이스 내에서 또는 외부)

-LotusScript (메모 데이터베이스에서 사용할 수있는 VB 변형)

-Java

포함

- COM 서버에서 사용할 수있는 동일한 API

데이터베이스 내에 "예약 된 에이전트"를 만들 수 있습니다 (LotusScript 또는 Java 사용). 마지막으로 실행 한 이후 작성된 문서를 찾고, 첨부 파일을 찾아 추출 할 수 있습니다. 에이전트는 파일 시스템에 쓰고 다른 프로세스를 시작하는 데 필요한 권한을 포함하여 서버에 대한 적절한 권한을 가진 ID로 서명해야합니다.

데이터베이스 외부에서 LotusScript를 제외한 모든 API를 사용하여 서버/메일 데이터베이스에 로그인하고 유사한 프로세스를 수행 할 수 있습니다. 예 : 클라이언트 또는 개별 서버에서 로컬로 파일을 추출합니다. C API 및 COM은 Notes 클라이언트 설치가 필요하지만 Java 응용 프로그램은 전체 설치없이 CORBA/DIIOP를 통해 실행되도록 설정할 수 있습니다.

자세한 정보는 Domino Designer 도움말 (또는 IBM C 웹 사이트의 C API)을 참조하십시오.

Notes에서 데이터에 액세스하고 첨부 파일을 추출해야하는 경우이를 수행하는 "일반적인 방법"에 관해서는이 API가 최선의 선택이라고 생각합니다. 응용 프로그램을 다른 메일 시스템으로 포팅하는 경우 "인터페이스"를 통해 API 루틴을 분리하는 것이 좋습니다. 따라서 새 인터페이스를 구현하여 새 메일 시스템을 지원하기 만하면됩니다.

0

DIIOP를 사용하여 Notes 문서에 비교적 쉽게 액세스 할 수 있으며 C Api 도로를 이용하는 것보다 훨씬 쉽습니다 ...

1

요즘에는 Domino 서버에서 자바 에이전트를 사용하여 상당히 많은 작업을 수행했습니다. 도미노 8.5 서버는 자바 6와 임베디드를 지원하기 때문에 새로운 메일이 도착할 때 실행되는 에이전트를 조합하기 위해 오랜 기간 Domino 개발 경험을 가진 사람이 오래 걸리지는 않는다. LotusScript에서는 훨씬 쉽지만 더 전문화 된 기술이 필요합니다. 계약자를 제공해야 할 수도 있습니다.

추출 된 파일과 관련하여 발생할 수있는 제한 사항은 Domino 서버의 파일 구조에 쉽게 배치 할 수 있지만 OS 보안이 다른 서버에 배치하지 못하도록 제한 될 수 있습니다.

0

Net Commons package에서 POP3Client를 사용해보십시오. Java 프로그램은 원하는 간격 (몇 분마다? 매시간)마다 특정 계정에 대한 새 메일을 확인하고 원하는대로 메시지를 가져 오거나 삭제할 수 있습니다.

1

데이터베이스에서 메일을 사용하십시오 (Domino 관리자가 설정할 수 있지만 도움말 파일에도 있습니다).

해당 데이터베이스에서 정기적으로 실행되는 에이전트를 만들어 모든 새 문서를 처리 할 수 ​​있습니다. 이 에이전트는 NotesRichTextItem 클래스의 EmbeddedObjects 속성과 NotesEmbeddedObject 클래스의 ExtractFile 메서드를 사용하여 첨부 파일에서 핸들을 가져 와서 지정한 위치로 추출합니다.

예를 들어이 스크립트는 문서의 본문 항목에있는 모든 첨부 파일, 개체 링크 및 포함 된 개체를 처리합니다. 이 첨부 파일을 발견 할 때마다 C 드라이브의 샘플 디렉토리에 파일을 분리하고/POP3

Dim doc As NotesDocument 
Dim rtitem As Variant 
'...set value of doc... 
Set rtitem = doc.GetFirstItem("Body") 
If (rtitem.Type = RICHTEXT) Then 
    Forall o In rtitem.EmbeddedObjects 
    If (o.Type = EMBED_ATTACHMENT) Then 
     Call o.ExtractFile("c:\samples\" & o.Source) 
     Call o.Remove 
     Call doc.Save(False, True) 
    End If 
    End Forall 
End If 
0

SMTP는 Domino 서버에서 사용할 수있는 문서의 첨부 파일을 제거합니다. 이것과 함께 일하고 다람쥐 메일을 실행했습니다. SMTP는 약간 리소스를 많이 사용하지만, LotusLand로 내려와 작업을 수행 할 필요가 없으므로 그만한 가치가 있습니다. 특정 이메일 상자 (POP3 또는 SMTP)를 검사하는 작은 Java CLI 프로그램을 작성하고 메일을 구문 분석하고 첨부 파일을 가져 와서 필요한 곳에 배치하십시오. 여기에 문서와 예제의

티 : http://java.sun.com/products/javamail/

당신이 더 광범위하게 적용 할 것을 로터스/도미노 특정보다 당신의 미래 경력에있을 것이다이 방법을 복용 개발하는 기술.

0

무엇을 하든지 관계없이 Lotus Notes 데이터 구조를 이해해야합니다. 좋은 소식은 완전히 자동화 된 솔루션을 Notes에서 쉽게 작성할 수 있다는 것입니다.

가장 좋은 방법은 Notes 내에서 빌드하는 것입니다. 새 메일을받을 때마다 자동으로 실행되도록 설정할 수 있습니다. 게리의 대답은 끝났지 만 경험이 없으면 직접 구현하는 방법을 찾는 것이 어려울 것입니다. 반면에, 유능한 Notes 프로그래머는 1 시간 내지 2 시간이 걸릴 것입니다.

2

편집 : 처음이 대답을 썼다 I, 현명한 이동하고 ... 지금 만 단위 테스트 도구, 그래서 소금 한 스푼 이하에 대답을 주장하기 때문에


Svrist의 대답은 좋지만 중간 단계 (나중에 Java 시스템에서 메일을 받기 위해 메일을 디스크에 쓰는 메일 서버)를 피하려면 Wiser을 사용할 수 있습니다.메일을 주기적으로

Wiser wiser = new Wiser(); 
wiser.setPort(2500); 
wiser.start(); 

그런 다음 당신은 그냥 폴링 할 수 있습니다 :

현명한 당신은 인 - 자바 메일 서버 시작할 수 있습니다

for (WiserMessage message : wiser.getMessages()) 
{ 
    String envelopeSender = message.getEnvelopeSender(); 
    String envelopeReceiver = message.getEnvelopeReceiver(); 

    MimeMessage mess = message.getMimeMessage(); 

    // mail processing goes here 
} 
관련 문제