Загрузка файла ASP.Net MVC и прикрепление к электронной почте

Я разрабатываю веб-приложение ASP.Net MVC 3. Одно из моих представлений Razor позволяет пользователю загружать файл (выбранный на его компьютере), а затем он прикрепляется к исходящему электронному письму.

Ниже приведен мой код на сегодняшний день, но, к сожалению, он не работает. Под этим я подразумеваю, что электронное письмо (и, конечно же, вложение) никогда не отправляется. Хотя, когда я шагаю кидаю / отлаживаю свой код локально, ошибок не возникает, как и на реальном сервере.

Кто-нибудь видит, что мне не хватает? Любой совет будет очень признателен.

Спасибо.

Контроллер

    [HttpPost]
    public ActionResult CvUpload(HttpPostedFileBase file)
    {
        //Get logged in user
        User user = _accountService.GetUser(_formsAuthService.GetLoggedInUserID());

        if (file != null && file.ContentLength > 0)
        {
                _emailService.SendUpload(user, file);

                return RedirectToAction("CvUpload", new { feedBack = "Success" });

        }
        return RedirectToAction("CvUpload", new { feedBack = "Failed" });
    }

Электронная почта

public void SendUpload(User user, HttpPostedFileBase file)
        {
            string messageBody = "";
            string subject = "Upload";
            string[] toAddress = new string[1];
            string ToBCC = "";

            if (isProduction.Equals("true"))
            {
                toAddress[0] = "[email protected]";
                sendEmail(toAddress, ToBCC, adminFromEmail, adminFromEmail, subject, messageBody, true, emailServer, file);
            }
            else
            {
                // DO NOT SEND EMAIL
            }

        }

private bool sendEmail(string[] toAddresses, string ToBCC, string fromAddress, string replyto, string subject, string body, bool ishtml, string emailHost, HttpPostedFileBase file)
    {
        bool mailSent = false;
        try
        {
            MailMessage mail = new MailMessage();
            foreach (string addresss in toAddresses)
                mail.To.Add(addresss);

            mail.From = new MailAddress(fromAddress);
            mail.ReplyToList.Add(replyto);
            mail.Bcc.Add(ToBCC);
            mail.Subject = subject;
            mail.Body = body;

            if(file != null && file.ContentLength > 0)
            {
                string fileName = Path.GetFileName(file.FileName);
                mail.Attachments.Add(new Attachment(file.InputStream, fileName));
            }

            if (ishtml)
                mail.IsBodyHtml = true;
            else
                mail.IsBodyHtml = false;
            SmtpClient smtp = new SmtpClient();
            smtp.Host = emailHost;
            smtp.Send(mail);
            mailSent = true;
        }
        catch (Exception)
        {
            mailSent = false;
        }

        return mailSent;
    }

person tcode    schedule 25.03.2015    source источник


Ответы (1)


У меня есть аналогичная служба, и это то, что у меня есть, хотя вложения сохранены, чтобы их можно было повторно использовать позже.

            var attachment = new Attachment(path);
            ContentDisposition disposition = attachment.ContentDisposition;
            disposition.CreationDate = File.GetCreationTime(path);
            disposition.ModificationDate = File.GetLastWriteTime(path);
            disposition.ReadDate = File.GetLastAccessTime(path);
            disposition.FileName = attachmentName.Name;
            disposition.Size = new FileInfo(path).Length;
            disposition.DispositionType = DispositionTypeNames.Attachment;
            mailMessage.Attachments.Add(attachment);
person Judge Bread    schedule 25.03.2015
comment
Спасибо за вашу помощь, хотя я пытаюсь посмотреть, можно ли прикрепить загрузку без предварительного сохранения. Хотя не уверен, возможно ли это. - person tcode; 26.03.2015
comment
Как сказал мой босс ... все возможно или [google] (google.com/) :) - person Judge Bread; 26.03.2015
comment
Это тоже может помочь, хотя я думаю, вы поняли суть. - person Judge Bread; 26.03.2015