0

私は使用しています:

        ShellExecute(Self.Handle,
            nil, PCHAR(format('mailto:%s ?Subject=Assunto: &Body=',[_lEmails ])),
            nil,
            nil,
            SW_NORMAL);

電子メールを送信します。本文がないため、メール クライアントに自動署名があるユーザーはそれらを自動的に取得します。

ここで、ユーザーがテキストを挿入できるようにしたいと考えていますが、テキストは挿入されますが、署名はありません。これを「強制」する方法はありますか。

ありがとう

4

2 に答える 2

4

代わりにMAPI ( )を使用できますMessaging Applications Programming Interface。これにより、電子メールをより適切に制御でき、添付ファイルなどを許可できます。ユーザーの電子メール クライアントの「作成」ウィンドウを表示するか、送信トレイに直接追加するかを選択することもできます。(特に MS Outlook に関する Windows セキュリティの変更により、通常、送信ボックス機能は現在制限されています。)

最も迅速で簡単な方法は、JEDI Code Library JCLEMailなどを使用することです。これは SimpleMAPI のラッパーであり、非常に簡単です (コードは古いアプリから取得され、JCL デモのサンプルに基づいています)。

EMail := TJclEMail.Create;
try
  EMail.Recipients.Add(AnsiString(EMailAddress), AnsiString(EMailName));
  EMail.Subject := AnsiString(Subject);
  EMail.Body := AnsiString(Body);
  EMail.HtmlBody := False;  // True if it's HTML email

  // Send attachment if wanted
  EMail.Attachments.Add(AnsiString(FileName));
  EMail.Send(True);   // True to show default email, false to add to outbox
finally
  EMail.Free;
end;

の欠点SimpleMAPIは、それが短期的な解決策になる可能性があることです (ただし、Win7 64 ビット以前ではまだ存在しますが、Windows 8 について話すことはできません)。MSDNによると、

[Simple MAPI の使用は推奨されません。以降のバージョンの Windows では変更されるか、使用できなくなる可能性があります。]

の欠点は、インストールされているクライアントにMAPI依存していることです。MAPI幸いなことに、サポートするほとんどすべてのソフトウェアも同様にサポートするmailto必要があります。MAPIたとえば、Outlook はそうですし、Mozilla Thunderbird もそうです。

于 2012-06-12T22:05:21.003 に答える
2

デフォルトの署名が表示されることを確認すると(それが質問の核心だった場合、申し訳ありませんが、読み間違えました)、運が悪い可能性があります(私がこれをやろうとしていたため)。

以下の MS の記事は「いいえ」と言っているようです。2010 までのバージョンの Outlook では、MAPI 経由で電子メールを作成するときにデフォルトの電子メール署名がサポートされていないようです。それはあまり理由を提供していないようで、電子メールダイアログで「署名を挿入」オプションを使用することをお勧めします(これは、デフォルトにしたい場合や、おそらく電子メールを単にユーザーの介入なしで「実行」)。

http://support.microsoft.com/kb/2544665

于 2012-10-13T13:41:40.943 に答える