2

ワーカー ロール (Azure) から (BLOB ストレージから) 添付ファイルを付けて (C# で) メールを送信しようとしています。メールは送信できますが、添付ファイル(ワード文書)が空白です。次の関数は worker ロールから呼び出されます。

    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("User@hotmail.com", "User@gmail.com");
            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("User@hotmail.com", Password);
            client.Send(Email);
            fs.Flush();
            fs.Close();
            Email.Dispose();                       
    }

どこが間違っているのか教えてください。

4

2 に答える 2

4

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

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

于 2011-01-09T20:16:20.760 に答える
0

推測ですが、おそらくメールを送信する前にfs.Close() を呼び出す必要があります。

于 2011-01-09T09:45:17.420 に答える