使用c#中的附件从工作人员角色(Azure)发送电子邮件

时间:2011-01-09 05:19:20

标签: email azure send role worker

我正在尝试使用附件(来自blob存储)从工作人员角色(Azure)发送电子邮件(在c#中)。 我可以发送电子邮件,但附件(word文档)是空白的。 从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();                       
    }

请告诉我我哪里做错了?

2 个答案:

答案 0 :(得分:4)

在添加创建fs.Position = 0;对象之前,我会尝试Attachement

可能发生的事情是它正在尝试从流中的当前位置读取并且该流在最后,因此它什么都不读。

答案 1 :(得分:0)

只是一个猜测,但您可能应该在发送电子邮件之前调用fs.Close()