OutlookでC#で送信される電子メールにファイルを添付しようとしています。
私は素晴らしい作品次の持っている:それは動作しますが、今の私のファイルは、プロジェクトがビルドされたときには存在しません静的フォルダ内にあるので、それは少しを吸うC#:リソースをOutlookメールアイテムへの添付ファイルとして追加する
using OutlookApp = Microsoft.Office.Interop.Outlook.Application;
[...]
public class Foo
{
private void SendMail()
{
OutlookApp outlookApp = new OutlookApp();
MailItem mailItem = outlookApp.CreateItem(OlItemType.olMailItem);
[...]
var rootDirectory = System.Windows.Forms.Application.StartupPath;
Attachment myAttachment = mailItem.Attachments.Add(Path.Combine(rootDirectory, @"../../Assets/image.png"));
[...]
mailItem.Display(false);
}
}
を。だから私は、プロジェクトのリソースに私の画像を
を入れている:イメージは、Properties.Resources.image
を経由して利用できるようになりました。
using OutlookApp = Microsoft.Office.Interop.Outlook.Application;
[...]
public class Foo
{
private void SendMail()
{
OutlookApp outlookApp = new OutlookApp();
MailItem mailItem = outlookApp.CreateItem(OlItemType.olMailItem);
[...]
var rootDirectory = System.Windows.Forms.Application.StartupPath;
Attachment myAttachment = mailItem.Attachments.Add(Properties.Resources.image);
[...]
mailItem.Display(false);
}
}
をしかし、それは動作しません:
単純に、私は次のことをやった
System.Runtime.InteropServices.COMException:「メンバーが見つかりません。 (HRESULTからの例外:0x80020003(DISP_E_MEMBERNOTFOUND)):
型:System.Objectの
アタッチメントのソース」MSDNから、私はその
Attachments.Add
方法の最初のパラメータに読み込ま。これはファイル(ファイル名を含む完全なファイルシステムパスで表される)または添付ファイルを構成するOutlookアイテムです。
問題は、私が理解しているように、添付ファイルをOutlookメールに追加するためにのみファイル名を提供できるということです。もう1つの選択肢はOutlookの添付ファイルを作成することですが、わかっていればそれは不可能です。それを行うための唯一の方法はで...ファイルmailItem
の添付ファイルを追加しています。
- は私のアプローチは、添付ファイルを追加するには、正しいです:だから、私の質問は以下の通りです
?もしそうなら、私はどのようにしてリソースファイルのパスを取得できますか? - このアプローチが良い場合は、
Resources.resx
ファイル以外の場所でファイルを参照する方法がありますか?意味:私のアプリケーションでファイルパスが利用可能になり、プロジェクトをビルドするときにファイルが「エクスポート」されます。 - 私のアプローチが正しくない場合、どのようにして
MailItem
に添付ファイルを適切に追加できますか?
ありがとうございます。
すでに存在していたオブジェクトに基づいて新しいオブジェクトをインスタンス化するのは問題ありません。 "コスト"はおそらく高価ではありませんが、原則として私はそれを好まなかったのです。それでも、あなたのソリューションは私の問題を別の角度から見るように私を押しました。 – benichka