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

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

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

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

Благодарю.

контроллер

    [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] = "myemail@test.com";
                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;
    }

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);
Другие вопросы по тегам