Using Razor with Visual Basic: Listing 5.

Sending an e-mail in Visual Basic with MvcMailer.

The controller method to generate an e-mail with MvcMailer in Visual Basic:
' POST: /Customer/Email
  <HttpPost()> _
  Function Email(ByVal id As String, 
    ByVal collection As FormCollection) As ActionResult
    Imports Mvc.Mailer
    Dim customer = New Customers
    Try
      Dim emailForm = New CustomerEmail() 'From Models folder
      TryUpdateModel(emailForm)
      customer = dc.Customers.Where(Function(x) x.CustomerID = 
        emailForm.CustomerID).Single

      Dim message = New Net.Mail.MailMessage(
        from:=New Net.Mail.MailAddress("[email protected]"),
        [to]:=New Net.Mail.MailAddress(emailForm.ToAddress))
      message.Subject = "Welcome to our web site!"
      message.CC.Add(emailForm.CcAddress)
      message.Bcc.Add(emailForm.BccAddress)

      Dim mailer = New MailerBase()
      Session("emailInfo") = emailForm
      Session("customer") = customer

      mailer.PopulateBody(message, viewName:="CustomerEmail")
      Session.RemoveAll()
      message.Send()

      Return RedirectToAction("Index")
    Catch ex As Exception
      ViewBag.ErrorMessage = ex.Message
      Return View(customer)
    End Try
  End Function

The Razor view engine that populates the body of the HTML e-mail using Visual Basic:

@Code
  Layout = Url.Content("~/Views/Shared/_EmailLayout.vbhtml")
  Dim emailInfo = CType(Session("emailInfo"), MVC3RazorVB.CustomerEmail)
  Dim customer = CType(Session("customer"), MVC3RazorVB.Customers)
End Code

@emailInfo.MessageText
<hr />
<br />
Our records indicate the following contact information. Please contact us with any correctons at <a href="mailto:[email protected]">[email protected]</a>.<br />
<br /><br />
<table>
  <tr><td>ContactName:</td><td>@customer.ContactName</td></tr>
  <tr><td>ContactTitle:</td><td>@customer.ContactTitle</td></tr>
    ...etc...
</table>
<br />

About the Author

Joe Kunk is a Microsoft MVP in Visual Basic, three-time president of the Greater Lansing User Group for .NET, and developer for Dart Container Corporation of Mason, Michigan. He's been developing software for over 30 years and has worked in the education, government, financial and manufacturing industries. Kunk's co-authored the book "Professional DevExpress ASP.NET Controls" (Wrox Programmer to Programmer, 2009). He can be reached via email at [email protected].

comments powered by Disqus

Featured

  • Diving Deep into .NET MAUI

    Ever since someone figured out that fiddling bits results in source code, developers have sought one codebase for all types of apps on all platforms, with Microsoft's latest attempt to further that effort being .NET MAUI.

  • Copilot AI Boosts Abound in New VS Code v1.96

    Microsoft improved on its new "Copilot Edit" functionality in the latest release of Visual Studio Code, v1.96, its open-source based code editor that has become the most popular in the world according to many surveys.

  • AdaBoost Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the AdaBoost.R2 algorithm for regression problems (where the goal is to predict a single numeric value). The implementation follows the original source research paper closely, so you can use it as a guide for customization for specific scenarios.

  • Versioning and Documenting ASP.NET Core Services

    Building an API with ASP.NET Core is only half the job. If your API is going to live more than one release cycle, you're going to need to version it. If you have other people building clients for it, you're going to need to document it.

  • TypeScript Tops New JetBrains 'Language Promise Index'

    In its latest annual developer ecosystem report, JetBrains introduced a new "Language Promise Index" topped by Microsoft's TypeScript programming language.

Subscribe on YouTube