2009-03-23 37 views
2

現時点では、MAPIを使用してアプリケーションから平文の電子メールを送信しています。ユーザーがこの関数を呼び出すとダイアログフラグが指定され、電子メールクライアントに電子メールが表示され、変更して送信できます。電子メールをHTML形式で送信

私たちは電子メールを書き出し、HTML形式で送信したいと考えています。
このリンクMSDNリンクMAPIによると、私は(試していない、あなたがそれを行うにはMAPIを使用することができますが、私は、Outlookで動作する例を得ることができないと言うExpertsExchangeの記事を見てきました。この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を使用することができます。これはSynapseライブラリを使用しても可能である
HTML Messages
New HTML Message Builder class(インディ10)

+0

残念ながら、MAPIのようなユーザーの既定の電子メールクライアントで電子メールがポップアップ表示されません。 –

2

。特定の例は、ハウツーのページ「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ファイルにパッチを当てると、Delphi 2005では
と同じように見えます。

また、HTML over MAPIはThunderbirdで動作しますが、他のクライアントでは動作しません。

0

たとえば、SMTPコンポーネント、Indyを使用し、メッセージのCCフィールドまたはBCCフィールドに送信を行うユーザーを追加することを検討する必要があります。これは、MAPIの主な利点である、送信されたメッセージをユーザー自身のメールクライアントに表示する必要性を大幅に満たすものです。ユーザは、そのようなコピーを受け取るための特別なアカウントを特別に設定することさえできる。

このようにすると、すべてのメールのキャッシュと別のスレッドでの送信、または別の時間など、メールの送信に関するすべての詳細を完全にカスタマイズできます(MHTMLはこのような例の1つです)。また、この方法はMAPIよりもクライアントに依存しません。たとえば、ユーザーがGmailなどのウェブベースのメールを使用している場合でも、これは引き続き機能します。

0

HTML本体を含むためMAPISendMailの文書化されていない機能があります:

  • は、HTML形式の添付ファイル
を追加 nilから lpszNoteText(または 空の文字列へのポインタ)
  • を設定

    MAPIは、電子メールの本文としてhtml添付ファイルを使用します(添付ファイルは含めません)。

  • 関連する問題