2

Windows の切り取りツールを見ると、切り取りをデフォルトのメール クライアントに埋め込まれた添付ファイルとして送信するオプションがあります (HTML メールと思われます)。まさにそれが必要です。

現時点では、単純な MAPI を使用して画像を添付していますが、埋め込みは許可されていません。

重要な要件の 1 つは、作成してからデフォルトのメール クライアントに表示することです。そのために System.Net.Mail を使用できるとは思いません。それともできますか?

c# を使用した WPF アプリケーションです。

編集:答える前に質問をよく読んでください。私はこれに慣れていません。ハックに頼らずにアンマネージ コードでこれを行う方法を知っています。管理された同等物が必要です。ハックを探しているわけではなく、必要に応じて正しい解決策にかなりの時間を費やして喜んでいます.

4

3 に答える 3

4

mailto に画像を埋め込むことはできないと思います。RFC 2368を参照してください。mailto の目的は短いテキストメッセージのみであり、MIME本文ではないと言っています

   The special hname "body" indicates that the associated hvalue is the
   body of the message. The "body" hname should contain the content for
   the first text/plain body part of the message. The mailto URL is
   primarily intended for generation of short text messages that are
   actually the content of automatic processing (such as "subscribe"
   messages for mailing lists), not general MIME bodies.
于 2010-12-22T07:50:16.707 に答える
3

これに ShellExecute オプションを指定して Process.Start を使用します。

mailto:email@domain.com?subject=your+file&body=see attachment&attachment="C:\path\to\file.txt"

パスの周りの引用符がわかりません。

編集

うまくいくはずの別の解決策を考えただけです。

  1. MailMessageを使用して HTML メールを作成する
  2. ここの回答をXXXX.emlとして保存します
  3. EML ファイルを開いShellExecuteオプションを使用します。Process.Start

デフォルトの電子メール クライアントで開く必要があります。

于 2010-12-22T07:27:08.210 に答える
0

名前空間 System.Net.Mail のクラスを使用して、この仕事を行うことができると思います。これにはかなりの作業が必要です。読者の課題として残しておきます。

RFC2111によると、画像が埋め込まれた HTML メールは、HTML メール本文と画像添付ファイルを 2 つの異なる MIME コンテンツに格納するだけです。

 From: foo1@bar.net
 To: foo2@bar.net
 Subject: A simple example
 Mime-Version: 1.0
 Content-Type: multipart/related; boundary="boundary-example-1";
               type=Text/HTML

 --boundary-example 1
 Content-Type: Text/HTML; charset=US-ASCII

 ... text of the HTML document, which might contain a hyperlink
 to the other body part, for example through a statement such as:
 <IMG SRC="cid:foo4*foo1@bar.net" ALT="IETF logo">

 --boundary-example-1
 Content-ID: foo4*foo1@bar.net
 Content-Type: IMAGE/GIF
 Content-Transfer-Encoding: BASE64

 R0lGODlhGAGgAPEAAP/////ZRaCgoAAAACH+PUNvcHlyaWdodCAoQykgMTk5
 NSBJRVRGLiBVbmF1dGhvcml6ZWQgZHVwbGljYXRpb24gcHJvaGliaXRlZC4A
 etc...

 --boundary-example-1--

重要な点は、HTML メール本文で、通常の URL パスを使用する代わりに、「cid:xxxxx」を入力することです。ここで、xxxxx はコンテンツ ID です。コンテンツ ID の詳細については、RFC2111を確認してください。System.Net.Mail 名前空間で確認したところ、IsBodyHtml プロパティを true に設定して MailMessage を作成できます。次に、この MailMessage に Attachment を追加する必要があります。添付ファイルはもちろん埋め込み画像です。次に、Attachment の ContentID を忘れずに設定する必要があります。したがって、HTML メールが正しい ContentID を参照していることを確認するだけで、うまくいくはずです。

繰り返しますが、私はそれを自分で確認しませんでしたが、画像が埋め込まれたいくつかのメールを簡単に確認しました. イメージ ソースとして cid:xxxx を含む電子メールを確認しましたが、Outlook クライアントは問題なく開くことができます。

于 2010-12-22T07:53:51.590 に答える