Как прикрепить сгенерированный PDF к .NET SMTP?

1

Я использую PDFsharp для создания отчета о работе. Мне нужен этот отчет, автоматически прикрепленный к исходящему электронному письму. Сейчас, когда пользователь просматривает информацию о задании в угловом модальности, они нажимают "Электронная почта", и отчет создается, и появляется новый модальный вид с полями ввода электронной почты. Как настроить контроллер электронной почты, чтобы найти правильный PDF файл в папке JobSetupPdfs?

PdfController

public string Get(int id = 1)
    {

        JobDataAdapter adapter = new JobDataAdapter();
        Job job = new Job();
        job = adapter.GetJob(id);
        if (job == null)
        {
            return string.Empty;
        }

        try
        {
        // Create a new PDF document
            PdfDocument document = new PdfDocument();
            document.Info.Title = "Created with PDFsharp";

         gfx.DrawString("Texas Exterior Systems", HeadingFont, XBrushes.Black,
              new XRect(0, 50, page.Width, page.Height),
              XStringFormats.TopCenter);

            gfx.DrawString("Job Setup Sheet", BodyFont, XBrushes.Black,
              new XRect(0, 80, page.Width, page.Height),
              XStringFormats.TopCenter);

       var filename = string.Format(@"C:\Users\texas_000\Desktop\TexasExterior\TexasExterior\JobSetupPdfs\{0}.pdf", job.JobName);
            document.Save(filename);
        }
        catch (Exception ex)
        {
            Debug.Print(ex.ToString());
        }
        return string.Empty;


    }

Контроллер почты

[Authorize]
    public ActionResult EmailPdf( string To, string Cc, string comments, string Bcc, HttpPostedFileBase fileUploader)
    {

        try
        {
            SmtpClient client = new SmtpClient("mail.texasicecarving.com", 8889);
            //client.EnableSsl = true;
            client.Timeout = 100000;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            client.Credentials = new NetworkCredential("[email protected]", "******");
            MailMessage msg = new MailMessage();
            if (fileUploader != null)
            {
                string fileName = Path.GetFileName(fileUploader.FileName);
                msg.Attachments.Add(new Attachment(fileUploader.InputStream, fileName));
            }
            msg.To.Add(new MailAddress( "[email protected]"));
            msg.From = new MailAddress("[email protected]");
           // msg.Subject = name + " " + subject;
            msg.Body = comments;

            //MailAddress Ccopy = new MailAddress(user.Email);
            //msg.CC.Add(Ccopy);

            //MailAddress Bcopy = new MailAddress(Bcc);
            //msg.Bcc.Add(Bcopy);

            client.Send(msg);
            Console.WriteLine("Successfully Sent Message.");
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        return View();
    }

Угловой контроллер

 $scope.EmailPdf = function () {
    $http.get('/api/Pdf/{id}').success(function () {
        $scope.PrintPreviewModal();
    });
}

Обновите OK, поэтому у меня есть настройка с правильным путем. Теперь, как я могу приложить PDF файл, который был только что сгенерирован? Должен ли я добавить отметку времени в PDF файл и иметь msg.Attachments прикрепить новейший PDF файл в этой папке?

 msg.Attachments.Add(new Attachment(@"C:\Users\texas_000\Desktop\TexasExterior\TexasExterior\JobSetupPdfs\Restoration.pdf"));
  • 2
    Вы можете добавить содержимое потока в качестве вложения. PDFsharp может сохранить файл PDF в поток.
  • 0
    @user3919120 user3919120 Смотрите выше, используйте поток файлов в качестве вложения. В целях отладки может быть проще сохранить файл при разработке и подключить его таким образом. Однако настоящий способ производства - использовать поток.
Теги:
asp.net-mvc
pdfsharp
system.net.mail

1 ответ

1
Лучший ответ

Вы можете использовать коллекцию вложений в объекте почтового сообщения.

msg.Attachments.Add (новое приложение (PathToAttachment));

Ознакомьтесь с этой статьей MSDN для получения дополнительной информации: http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.attachments.aspx

  • 0
    Смотрите обновленный пост

Ещё вопросы

Сообщество Overcoder
Наверх
Меню