2012-04-08 10 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") 

私はそう構文が100%正しくない可能性がありますのC#からVB.NETに変換するために私の最善を尽くして、それが一般的な考え方ですです。それはバイト配列にデータをダウンロードし、それらのバイトからメモリストリームを作成し、それをAttachmentコンストラクタに渡します。

+0

それはそうしました。とても有難い。 – user1162628

+0

@Timは構文修正をしてくれてありがとう。 – Davy8

1

添付ファイルをURLから直接追加することはできません。最初にファイルをダウンロードしてから添付ファイルとして追加する必要があります。

HttpWebRequestを使用してファイルをストリームとして取得し、ストリームを添付することができます。そのため、ディスクにファイルを保存する必要がありません。

+0

ファイルはすでにシステムに存在し、そのパスはURLとしてデータベースに格納されます。選択したファイルをデータベースからメールに添付したいのですが、それは不可能ですか? – user1162628

+0

ローカルパスにマップするURLがある場合は、そのマッピングを元に戻すだけで元のファイルを追加することができます。 –

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として送信してください。