2011-09-09 68 views
1

我正在Umbraco CMS上實施剃鬚刀聯繫表格,其中包括使用.Net的MailMessage創建和發送電子郵件的內聯C#腳本。最終用戶現在需要能夠上傳文件,並將其作爲附件添加到電子郵件中。剃刀形式 - 上傳並附加到電子郵件

據我所知,唯一的辦法是上傳到磁盤,然後從磁盤加載附件。

是否可以在不寫入磁盤的情況下進行上載和附加操作?請記住,沒有代碼隱藏或控制器 - 這是所有內聯剃刀邏輯。

回答

2

您需要從上傳的文件傳遞InputStream到MAILMESSAGE的Attachment構造:

if(IsPost && Request.Files.Count > 0){ 
    var file = Request.Files[0]; 
    var fileName = file.FileName; 
    var attachment = new Attachment(file.InputStream, fileName);  
    ... 
    ... 

確保(除非你正在使用的文件上傳助手),你的窗體的方法設置爲POST,添加enctype屬性的值爲multipart/form-data,並且您爲input type=file提供了name屬性。

+0

謝謝。我試圖看看Request.Files,但它給了我一個零的計數。 – Savage

+0

沒有更多信息,很難診斷爲什麼可能。仔細檢查我所說的事情。 –

+0

我遇到了嵌套表單的問題。一旦我欺騙了表單標籤,你的代碼示例工作正常。 – Savage

0

我不確定剃鬚刀有多可能,但應該可以上傳並附加到電子郵件而不保存到磁盤。使用您從上傳控件的FileUpload.FileContent property獲得的流。然後將其傳遞給MailMessage附件的this constructor

另外,爲什麼不使用代碼隱藏?

+0

沒有代碼隱藏,因爲我正在使用下載的剃鬚刀一體式聯繫表單的CMS內容系統。我正在避免重新發明輪子。 – Savage