Отправить письмо от рабочей роли (Azure) с вложением в c # - PullRequest
2 голосов
/ 09 января 2011

Я пытаюсь отправить электронное письмо (в c #) из рабочей роли (Azure) с вложением (из хранилища BLOB-объектов).Я могу отправить электронное письмо, но вложение (документ Word) не заполнено.Следующая функция вызывается из рабочей роли.

    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 ]

4 голосов
/ 09 января 2011

Я бы попробовал сделать fs.Position = 0; перед подключением создания вашего Attachement объекта.

Вероятно, происходит то, что он пытается прочитать с текущей позиции в потоке, и этот поток находится в конце, поэтомуничего не читает.

0 голосов
/ 09 января 2011

Просто предположение, но вам, вероятно, следует позвонить fs.Close () до отправки электронного письма.

...