簡體   English   中英

C#:將資源添加為Outlook郵件項的附件

[英]C#: add a resource as an attachment to an Outlook mail item

我正在嘗試將文件附加到將在Outlook中以C#發送的電子郵件中。
我有以下很棒的方法:

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))'

MSDN中 ,我讀取了Attachments.Add方法的第一個參數:

類型:System.Object
附件的來源。 這可以是文件(由具有文件名的完整文件系統路徑表示)或構成附件的Outlook項目。

據我了解,問題是我只能提供文件名才能將附件添加到Outlook郵件中。 另一個選擇是創建一個Outlook附件,但據我了解是不可能的。 這樣做的唯一方法是...在mailItem的附件中添加文件。
所以我的問題如下:

  1. 我添加附件的方法正確嗎? 如果是這樣,我該如何獲取資源文件的路徑?
  2. 如果這種方法不錯,是否有辦法在projet中引用Resources.resx文件之外的其他文件? 含義:在我構建項目時,文件路徑將在我的應用程序中可用,並且文件將“導出”;
  3. 如果我的方法不正確,如何從資源文件中正確添加MailItem的附件?

謝謝。

好的,最后我適應了我的方法。 在所需的所有圖像的構建操作中,我執行了以下操作(此操作在文件的屬性選項卡中可用):

  • 建立動作 :內容。
  • 復制到輸出目錄 :如果較新則復制。 構建選項

這樣,在構建時,包含我的圖像(和我的圖像)的文件夾將被復制到構建目錄。 然后,我可以使用它們的相對URL:

Attachment myAttachment = mailItem.Attachments.Add(Path.GetFullPath("Assets/image.png"));

我不知道這是否是唯一的方法,但是它可以工作,看起來並不難看,我仍然可以在XAML中使用圖像。 將圖像放在resx文件中時,顯然是PITA。

我的猜測是該資源無法作為附加項使用。 有沒有辦法將資源作為圖像保存到某處的計算機,然后附加您創建的文件?

這樣的事情可能會起作用。

 var bmp = new Bitmap(Properties.Resources.myimage);

 Attachment myAttachment = mailItem.Attachments.Add(bmp);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM