2011-01-09 26 views
2

添付ファイル付き(Blobストレージから)ワーカー・ロール(Azure)から電子メール(c#で)を送信しようとしています。 電子メールは送信できますが、添付ファイル(ワードドキュメント)は空白です。 次の関数は、ワーカーロールから呼び出されます。添付ファイル付きのワーカー・ロール(Azure)からのメールをC#

public void sendMail(string blobName) 
    { 
      InitStorage();//Initialize the storage 
      var storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString"); 
      container = blobStorage.GetContainerReference("Container Name"); 
      CloudBlockBlob blob = container.GetBlockBlobReference(blobName); 

      if (File.Exists("demo.doc")) 
       File.Delete("demo.doc"); 

      FileStream fs = new FileStream("demo.doc", FileMode.OpenOrCreate); 
      blob.DownloadToStream(fs);     
      Attachment attach = new Attachment(fs,"Report.doc"); 
      System.Net.Mail.MailMessage Email = new System.Net.Mail.MailMessage("[email protected]", "[email protected]"); 
      Email.Subject = "Text fax send via email"; 
      Email.Subject = "Subject Of email"; 
      Email.Attachments.Add(attach); 
      Email.Body = "Body of email"; 
      System.Net.Mail.SmtpClient client = new SmtpClient("smtp.live.com", 25); 
      client.DeliveryMethod = SmtpDeliveryMethod.Network; 
      client.EnableSsl = true; 
      client.Credentials = new NetworkCredential("[email protected]", Password); 
      client.Send(Email); 
      fs.Flush(); 
      fs.Close(); 
      Email.Dispose();      
    } 

私が間違っていることを教えてください。

答えて

0

ちょうど推測ですが、の前にfs.Close()を呼び出す必要があります。

+1

解決策を得ました。 バイト[]ファイル= blob.DownloadByteArray(); アタッチメントアタッチ=新しいアタッチメント(新しいMemoryStream(file)、 "Report.doc"); FileStreamを使用する代わりに、Byte配列とMemoryStreamを使用し、その正常動作します。 返信いただきありがとうございます。 – simplyvaibh

4

Attachementオブジェクトを作成する前にfs.Position = 0;を試してみます。

おそらく起こっていることは、ストリームの現在の位置から読み込みしようとしていて、そのストリームが最後であるため、何も読み取らないということです。

関連する問題