Member 14908535 Ответов: 1

Отправить сгенерированный pdf-файл в виде вложения электронной почты asp.netcore


Я использую Rotativa для преобразования моего представления в pdf. Я хотел бы отправить этот сгенерированный pdf-файл в виде вложения электронной почты (без необходимости сначала загружать его на диск).

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

Что я уже пробовал:

public async Task<iactionresult>SomeReport()
    {
    ...
    return new ViewAsPdf (report)
    }
    return view();


    MemoryStream memoryStream = new MemoryStream();

    MimeMessage msg = new MimeMessage();
    MailboxAddress from = new MailboxAddress ("Name", "emailAddress")
    msg.From.Add(from);
    MailboxAddress to = new MailboxAddress ("Name", "emailAddress")
    msg.From.Add(to);
    BodyBuilder bd = new BodyBuilder();
    bb.HtmlBody ="some text";
    bb.Attachments.Add("attachmentName", new MemoryStream());
    msg.Body = bb.ToMessageBody();
    SmtpClient smtp = new SmtpClient();
    smtp.Connect("smtp.gmail.com",465, true);
    smtp.Authenticate("emailAddress", "Pwd");
    smtp.Send(msg);
    smtp.Disconnect(true);
    smtp.Dispose();

1 Ответов

Рейтинг:
2

Sandeep Mewara

Ссылаясь на следующие документы о вашем случае использования о том, как получить PDF-файл:
Создание PDF-файла в ASP.NET ядро MVC с использованием Rotativa.AspNetCore[^]
Как создать PDF файл из Asp.net MVC с RotativaHQ[^]

Как только это будет сделано, фрагмент кода, как показано ниже, должен выполнить эту работу:

var attachment = new Attachment(new MemoryStream(pdfBytes), PdfFileName); //this is from the articles referred above

MailMessage mailMessage = new MailMessage();
mailMessage.To.Add(new MailAddress("to@to.t"));
mailMessage.From = new MailAddress("from@from.f");
mailMessage.Subject = "my pdf attached";
mailMessage.Attachments.Add(attachment);

SmtpClient smtp = new SmtpClient();
smtp.Connect("smtp.gmail.com",465, true);
smtp.Authenticate("emailAddress", "Pwd");
smtp.Send(mailMessage);

PS: обязательно позаботьтесь о высвобождении памяти для объектов.

ОБНОВЛЕНИЕ: Лучший способ подключить ваши конфигурации электронной почты/отправка электронной почты: Как отправить электронное письмо с вложениями в ASP.NET Лабиринт сердечника - кода[^]

Попробуйте!