2012-04-08 38 views
0

我試圖在asp.net VB中添加郵件附件。ASP.net中的郵件附件

我可以發送郵件罰款,直到我添加附件代碼,

Dim attch As Attachment = New Attachment("http://sitehere.com/Documents/file.jpg") 
mail.Attachments.Add(attch) 

我收到錯誤URI格式不被支持。

任何想法,爲什麼這是我能做些什麼呢?

回答

3

Attachment類需要文件系統上文件的路徑或Stream

嘗試:

Dim data As Byte() = New WebClient().DownloadData("http://sitehere.com/Documents/file.jpg") 
Dim attachment As New Attachment(New MemoryStream(data), "file.jpg") 

就是我盡我所能來翻譯從C#到VB.NET這樣的語法可能不是100%正確的,但這是一般的想法。這會將數據下載到一個字節數組中,然後從這些字節中創建一個內存流並將其傳遞給Attachment構造函數。

+0

這樣做。非常感激。 – user1162628 2012-04-08 23:35:47

+0

@Tim感謝您的語法修復。 – Davy8 2012-04-09 01:14:16

1

您無法直接從URL添加附件。您需要先下載文件,然後將其作爲附件添加。

您可以使用HttpWebRequest將文件作爲流獲取,然後附加流。這節省了必須將文件存儲在磁盤上。

+0

該文件已在系統中,其路徑作爲URL存儲在數據庫中。我想將選定的文件從數據庫附加到郵件,這是不可能的? – user1162628 2012-04-08 22:45:25

+0

如果您有一個映射到本地路徑的URL,則只需要反轉該映射,然後就可以添加原始文件。 – 2012-04-08 22:47:31

0

如果有本地文件在您的服務器和您知道該路徑的文件夾中,不要使用該URI,

Dim eMessage As New MailMessage 

Dim attachLabel As Attachment 
Dim location As String 
loction= Server.MapPath("Documents\\file.jpg") 
attachLabel = New Attachment(loction) 

eMessage .Attachments.Add(attachLabel); 

如果你真的想從另一個URL發送一個文件,你可以使用HttpWebRequest先下載,然後以Colin和Davy8的方式發送。