我想出瞭如何做到這一點,並沒有像它出現那麼困難。 建立在你的web服務,命名空間中的以下內容: `
[Serializable]
public class MyAttachment
{
[DataMember]
public string Name { get; set; }
[DataMember]
public byte[] Bytes { get; set; }
}`
然後將以下添加到您的網絡的方法參數: MyAttachment[] attachment
添加以下在你的web-方法的執行塊:`
foreach (var item in attachment)
{
Stream attachmentStream = new MemoryStream(item.Bytes);
Attachment at = new Attachment(attachmentStream, item.Name);
msg.Attachments.Add(at);
}`
創建以下屬性(或類似的東西),在您的客戶端: `
private ObservableCollection<ServiceProxy.MyAttachment> _attachmentCollection;
public ObservableCollection<ServiceProxy.MyAttachment> AttachmentCollection
{
get { return _attachmentCollection; }
set { _attachmentCollection = value; NotifyOfPropertyChange(() => AttachmentCollection); }
}`
在構造函數中新建公共屬性(AttachmentCollection)。 添加以下在您打開文件對話框應該返回文件:`
如果,你打電話給你的網絡的方法來發送電子郵件(openFileDialog.File!= NULL)
{
foreach (FileInfo fi in openFileDialog.Files)
{
var tempItem = new ServiceProxy.MyAttachment();
tempItem.Name = fi.Name;
var source = fi.OpenRead();
byte[] byteArray = new byte[source.Length];
fi.OpenRead().Read(byteArray, 0, (int)source.Length);
tempItem.Bytes = byteArray;
source.Close();
AttachmentCollection.Add(tempItem);
}
}`
於是最後,添加以下(或類似的東西):
MailSvr.SendMailAsync(FromAddress, ToAddress, Subject, MessageBody, AttachmentCollection);
這個工作對我來說,附件與郵件發送,所有數據完全一樣的原始文件。
這工作,但我切換到「lesnikowski」來處理我的郵件,不得不承認的人,mail.dll運行良好,而且很容易實現。 – Deceased 2011-08-01 07:08:15