New to Telerik ReportingStart a free 30-day trial

Implementing Send Mail Message

This tutorial elaborates on how to implement the SendMailMessage method required for sending email messages through report viewers that are connected to a Reporting REST Service.

Controllers Setup

When the Reporting REST Service has been implemented using controllers, override the SendMailMessage method of the ReportsController.

C#
        protected override HttpStatusCode SendMailMessage(MailMessage mailMessage)
        {
            using (var smtpClient = new SmtpClient("smtp.companyname.com", 25))
            {
                smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtpClient.EnableSsl = true;
                smtpClient.Send(mailMessage);
            }

            return HttpStatusCode.OK;
        }

Minimal API Setup

When the Reporting REST Service has been implemented using Minimal API, first implement a method that sends the MailMessage object via the SmtpClient:

C#
    public static HttpStatusCode MyMailSender(MailMessage message)
    {
        try
        {
            using (var smtpClient = new SmtpClient("tests.com", 26))
            {
                smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtpClient.Credentials = new NetworkCredential("user", "pass");
                smtpClient.EnableSsl = true;
                smtpClient.Send(message);
            }
            return HttpStatusCode.OK;
        }
        catch
        {
            return HttpStatusCode.InternalServerError;
        }
    }

Then, this method can be passed alongside the ReportServiceConfiguration of the Reporting REST Service when adding it in the starting point of the application, for example, the Program.cs file:

C#
        var mailContext = new MailContext(MyMailSender);
        var reportServiceConfiguration = new ReportServiceConfiguration
        {
            ReportingEngineConfiguration = builder.Configuration,
            HostAppId = "Reporting",
            Storage = new FileStorage(),
            ReportSourceResolver = new TypeReportSourceResolver()
                                        .AddFallbackResolver(
                                            new UriReportSourceResolver(reportsPath))
        };

        builder.Services.AddRazorPages().AddTelerikReporting(reportServiceConfiguration, mailContext);

See Also