2009-03-23 4 views
2

현재 MAPI를 사용하여 응용 프로그램에서 일반 텍스트 전자 메일을 보내고 있습니다. 사용자가이 함수를 호출 할 때 대화 플래그를 지정하여 전자 메일이 전자 메일 클라이언트에 나타나도록 한 다음 수정하여 보낼 수 있습니다.전자 메일을 HTML 형식으로

이메일을 작성한 후 HTML 형식으로 보내주십시오. 시도하지 MSDN 링크 MAPI는 당신이 그것을 할 MAPI를 사용하여 말을 ExpertsExchange에 관한 기사를 보았다하지만 난 Outlook과 작업의 예를 얻을 수없는이 http://support.microsoft.com/kb/268440

에 대한 sutiable되지 않은이 링크 (에 따르면
다른 어떤 고객도)

procedure ShowMailDlg(ToName,Address,HTMLMessage: string); 
var 
    li: integer; 
    lMessage: TMapiMessage; 
    lRecipArray: array of TMapiRecipDesc; 
    lREs: DWord; 
begin 
    SetLength(lRecipArray,1); 
    lRecipArray[0].ulRecipClass:=MAPI_TO; 
    lRecipArray[0].lpszName:=pChar(ToName); 
    lRecipArray[0].lpszAddress:=pChar(Address); 
    lMessage.ulReserved:=0; 
    lMessage.lpszSubject:=nil; 
    lMessage.lpszNoteText:=pChar(HTMLMessage); 
    lMessage.lpszMessageType:= nil;//pChar('HTML'); 
    lMessage.lpszDateReceived:=nil; 
    lMessage.lpszConversationID:=nil; 
    lMessage.flFlags:=0; 
    lMessage.lpOriginator:=nil; 
    lMessage.nRecipCount:=length(lRecipArray); 
    lMessage.lpRecips:=PMapiRecipDesc(lRecipArray); 
    lMessage.nFileCount:=0; 
    lMessage.lpFiles:=PMapiFileDesc(nil); 
    lRes:=MapiSendMail(0, 0 , lMessage,MAPI_DIALOG, 0); 
end; 

누구나 내가 이것을 할 수있는 아이디어가있다. 아마 Outlook을 자동화 할 수 있지만 상당히 독립적 인 이메일 클라이언트 (따라서 MAPI)

업데이트

감사의 그것을 유지하고 싶은 : 덕분 제안을 모든 사람에게. 이 기능은 많이 사용되는 질문이 아니므로 SMTP 세부 정보를 구성하도록 사용자에게 요청하는 것은 실제로 옵션이 아닙니다. 평범한 텍스트 이메일을 고수 할 것입니다.

감사

답변

4

MAPI는 HTML 형식의 메시지를 지원하지 않습니다. Microsoft에서 : "확장 메시징 응용 프로그래밍 인터페이스 (MAPI)를 사용하여 HTML 형식의 메시지를 생성해서는 안됩니다. 대신 Microsoft Outlook 개체 모델, CDONTS, CDOSYS, CDOEX 또는 타사 SMTP 컨트롤을 사용하는 것이 좋습니다."

Indy를 통해 보내는 것에 대한 의견을 반영합니다. Indy와 함께 HTML 메시지를 매우 쉽게 전송할 수있는 장치를 게시했습니다. here 또는 직접 작성해보십시오. 메시지를 편집 가능하게 만들고 싶다면 WPTools와 Indy를 조합 해보십시오. WPTools는 HTML 마크 업을 잘 지원하며 Indy를 통해 결과 메시지를 보낼 수 있습니다.

저는 Synapse에 대한 경험이 없으므로 그 프로젝트에서 얼마나 쉽고/힘든지 말할 수는 없습니다.

0

당신은 인디와 SMTP를 사용할 수 있습니다
HTML Messages
New HTML Message Builder class (인디 10)

+0

MAPI와 같은 사용자의 기본 전자 메일 클라이언트에서 전자 메일이 팝업되지 않습니다. –

2

이것은 Synapse 라이브러리를 사용하는 것도 가능합니다. 특정 예제는 하우투 페이지 "About MIME and its MIME Parts"에서 사용 가능합니다. 개인적으로 여러 프로그램에서이 기술을 사용하여 HTML 전자 메일을 보냈습니다.

아쉽게도 MAPI에서 작동하지 않으므로 SMTP 또는 IMAP 정보를 얻고 해당 통신을 직접 처리해야합니다 (Synapse 라이브러리에는이를 수행하는 루틴이 있습니다).

Synapse를 다운로드하려면 Subversion 저장소에서 최신 버전을 다운로드하십시오. 해당 업데이트는 Delphi 2009 지원을 포함합니다.

3

당신은 당신이 OLE하여 Outlook 접근을 시도 할 수 Outlook 클라이언트를 제공해야하는 경우 : 델파이에 대한

procedure SendMail(const aRecipient, aSubject, aNote, aFile: string; Silent, HTML: boolean); 
const 
    olMailItem = 0; 
var 
    ii: integer; 
    MyOutlook, MyMail: variant; 
begin 
    //*** Send something via OLE/Outlook... 

    //*** Outlook- und Mail-Objekt erstellen... 
    MyOutlook := CreateOLEObject('Outlook.Application'); 
    MyMail := MyOutlook.CreateItem(olMailItem); 

    //*** create a mail message... 
    MyMail.To  := aRecipient; 
    MyMail.Subject := aSubject; 

    if aNote <> '' then begin 
    if HTML then 
     MyMail.HTMLBody := aNote 
    else begin 
     MyMail.Body  := aNote; 
    end; 
    end; 

    //*** Add Attachment... 
    if aFile <> '' then begin 
    MyMail.Attachments.Add(aFile); 
    end; 

    if Silent then 
    MyMail.Send 
    else 
    MyMail.Display; 

    MyOutlook := UnAssigned; 
end; 
2

더 높은 델파이의 버전을 사용하는 경우 내가 SakEmail
http://groups.yahoo.com/group/sakemail/
를 추천 할 것입니다 이메일 그런 다음 7,
.inc 파일에 버전 정의를 추가해야합니다.
SakEmail과 함께 제공됩니다. 그렇지 않으면
Delphi4 호환 모드로 되돌아갑니다. inc 파일을 패치 한 후 델파이 2005에서
과 같이 잘된 것 같습니다.

또한 HTML over MAPI는 Thunderbird에서 작동하지만 다른 클라이언트에서는 보이지 않습니다.

0

예를 들어 SMTP 구성 요소 인 Indy를 사용하고 메시지의 참조 또는 숨은 참조 필드에 보내는 사용자를 추가해야합니다. 이는 MAPI의 주요 장점 인 사용자 자신의 메일 클라이언트에 보낸 메시지를 표시 할 필요성을 크게 만족시킵니다. 사용자는 이러한 사본을 수신 할 수 있도록 별도의 계정을 설정할 수도 있습니다.

이렇게하면 모든 메일을 캐싱하고 별도의 스레드에서 보내는 것과 다른 시간에 보내는 등 메일 전송과 관련된 모든 세부 정보 (예 : MHTML)를 완벽하게 사용자 지정할 수 있습니다. 또한이 방법은 MAPI보다 클라이언트를 더 많이 인식하지 못합니다. 예를 들어 사용자가 Gmail과 같은 웹 기반 이메일을 사용하는 경우에도 여전히 작동합니다.

0

의 HTML 본문 포함한 MAPISendMail의 문서화되지 않은 기능이있다 :

  • 는 HTML 첨부
  • 에게 추가

    • nillpszNoteText 설정을 (또는 빈 문자열에 대한 포인터)

      MAPI는 html 첨부 파일을 전자 메일의 본문으로 사용하며 첨부 파일은 포함하지 않습니다.

    관련 문제