---
title: "Swimburger - Blog - Page 2"
description: "Swimburger.net is a blog about .NET, cloud, web development, and whatever comes across Swimburger's plate. Swimburger.net is run by Niels Swimberghe."
canonical: "https://swimburger.net/blog/2"
---

[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=1x1/media/jn2ohzgd/how-to-prevent-email-html-injection-in-c-and-net.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=1x1/media/jn2ohzgd/how-to-prevent-email-html-injection-in-c-and-net.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=1x1/media/jn2ohzgd/how-to-prevent-email-html-injection-in-c-and-net.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=1x1/media/jn2ohzgd/how-to-prevent-email-html-injection-in-c-and-net.png 500w" sizes="250px" width="250" height="250" alt="How to prevent Email HTML injection in C# and .NET" decoding="async" loading="lazy" style="background-color:#06033a"></picture>

## How to prevent email HTML injection in C# and .NET

4/1/2022 - .NET

Learn how bad actors can inject HTML into your emails in your C# .NET applications and how to mitigate it.



](/blog/dotnet/how-to-prevent-email-html-injection-in-csharp-and-dotnet)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=1x0.5/media/0eklaput/don-t-let-your-users-get-pwned-via-email-html-injection-3.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=1x0.5/media/0eklaput/don-t-let-your-users-get-pwned-via-email-html-injection-3.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=1x0.5/media/0eklaput/don-t-let-your-users-get-pwned-via-email-html-injection-3.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=1x0.5/media/0eklaput/don-t-let-your-users-get-pwned-via-email-html-injection-3.png 500w" sizes="250px" width="250" height="250" alt="Hacker in front of a computer running applications in multiple terminals" decoding="async" loading="lazy" style="background-color:#06033a"></picture>

## Don't let your users get pwned via email HTML injection

3/23/2022 - Web

Learn how to prevent HTML injection into your emails and protect your users from bad actors!



](/blog/web/dont-let-your-users-get-pwned-via-email-html-injection)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/xw3pvku3/sendgrid-logomark.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/xw3pvku3/sendgrid-logomark.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/xw3pvku3/sendgrid-logomark.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/xw3pvku3/sendgrid-logomark.png 500w" sizes="250px" width="250" height="250" alt="Twilio SendGrid logo" decoding="async" loading="lazy"></picture>

## How to send ASP.NET Core Identity emails with Twilio SendGrid

3/15/2022 - .NET

Learn how to use SendGrid to send account verification and password recovery emails in ASP.NET Core



](/blog/dotnet/send-aspdotnet-core-identity-emails-with-twilio-sendgrid)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/0y4b3pnt/sendgrid-logomark.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/0y4b3pnt/sendgrid-logomark.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/0y4b3pnt/sendgrid-logomark.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/0y4b3pnt/sendgrid-logomark.png 500w" sizes="250px" width="250" height="250" alt="Twilio SendGrid logo" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## How to send Email in C# .NET using SMTP and SendGrid

3/8/2022 - .NET

You can use the SendGrid APIs to send emails, but you can also use SMTP with SendGrid. Learn how to send emails using SMTP, SendGrid C# .NET



](/blog/dotnet/how-to-send-email-in-csharp-dotnet-using-smtp-and-sendgrid)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/cneohwf1/thumbnail.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/cneohwf1/thumbnail.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/cneohwf1/thumbnail.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/cneohwf1/thumbnail.png 500w" sizes="250px" width="250" height="250" alt="Twilio SendGrid logo and Azure Functions logo" decoding="async" loading="lazy" style="background-color:#f5f5f5"></picture>

## Send Emails using C# .NET with Azure Functions and SendGrid Bindings

3/2/2022 - .NET

Learn how to send emails from Azure Functions using C# .NET and the SendGrid Bindings



](/blog/dotnet/send-emails-using-csharp-dotnet-with-azure-functions-and-sendgrid-bindings)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/tfxb3k4r/ngrok-square.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/tfxb3k4r/ngrok-square.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/tfxb3k4r/ngrok-square.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/tfxb3k4r/ngrok-square.png 500w" sizes="250px" width="250" height="250" alt="ngrok logo" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Integrate ngrok into ASP.NET Core startup and automatically update your webhook URLs

2/15/2022 - .NET

Learn to integrate ngrok into ASP.NET Core's startup process to create secure public tunnels and automatically handle Twilio's webhooks with a single command



](/blog/dotnet/integrate-ngrok-into-aspdotnet-core-startup-and-automatically-update-your-webhook-urls)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/dftnx1t5/umbraco_logo_blue05.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/dftnx1t5/umbraco_logo_blue05.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/dftnx1t5/umbraco_logo_blue05.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/dftnx1t5/umbraco_logo_blue05.png 500w" sizes="250px" width="250" height="250" alt="Umbraco logo" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Integrate IndexNow with Umbraco CMS to submit content to search engines

2/7/2022 - Umbraco

Umbraco is very extensible for ASP.NET developers. Learn how to integrate IndexNow into the Umbraco backoffice, so you can easily submit Umbraco content URLs to search engines that they will (re)crawl.



](/blog/umbraco/integrate-indexnow-with-umbraco-cms-to-submit-content-to-search-engines)[

<picture><img class="blog-post-card__image" src="/media/vgye2zpp/twilio-mark-red-e1886ea5f.svg" width="250" height="250" alt="Twilio logo" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Send Scheduled SMS with C# .NET and Twilio Programmable Messaging

2/4/2022 - .NET

Learn how to schedule SMS with C# .NET and Twilio Messaging's latest feature: Scheduled Messaging!



](/blog/dotnet/send-scheduled-sms-with-csharp-dotnet-and-twilio-programmable-messaging)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/rb2hewqy/thumbnail.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/rb2hewqy/thumbnail.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/rb2hewqy/thumbnail.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/rb2hewqy/thumbnail.png 500w" sizes="250px" width="250" height="250" alt="Microsoft Bing and Yandex logo" decoding="async" loading="lazy" style="background-color:#ff"></picture>

## An introduction to IndexNow and why you should care

2/1/2022 - Web

IndexNow is still relatively new but is getting a lot of interest in the search engine community. Hopefully, you can soon submit your content once to IndexNow, and stop manually submitting those URLs to every search engine console manually. And instead of search engines having to crawl the web over and over to look for new content, the content can be delivered directly from the source, reducing the environmental impact of crawlers.



](/blog/web/an-introduction-to-indexnow-and-why-you-should-care)[

<picture><img class="blog-post-card__image" src="/media/ygnfku2u/cf-logo-v.svg" width="250" height="250" alt="Cloudflare logo" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Develop webhooks locally using Cloudflared Tunnel

1/28/2022 - Web

Webhooks are a common way to integrate with external service, including Twilio! Learn how to develop webhooks locally using Cloudflare Tunnels!



](/blog/web/develop-webhooks-locally-using-cloudflared-tunnel)[

<picture><img class="blog-post-card__image" src="/media/dikleklg/dotnet-bot_builder.svg" width="250" height="250" alt=".NET Bot" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## How to get ASP.NET Core's local server URLs

1/25/2022 - .NET

Learn how to access the ASP.NET Core's local server URLs in Program.cs, in controllers using Dependency Injection, and in IHostedService or BackgroundService.



](/blog/dotnet/how-to-get-aspdotnet-core-server-urls)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/rmdaof2v/thumbnail.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/rmdaof2v/thumbnail.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/rmdaof2v/thumbnail.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/rmdaof2v/thumbnail.png 500w" sizes="250px" width="250" height="250" alt="Twilio Logo and Azure Functions logo" decoding="async" loading="lazy" style="background-color:#f3f3f5"></picture>

## How to send SMS with C# .NET and Azure Functions using Twilio Output Binding

1/24/2022 - Azure

Twilio posts cloud communications trends, customer stories, and tips for building scalable voice and SMS applications with Twilio's APIs.



](/blog/azure/how-to-send-sms-with-csharp-dotnet-and-azure-functions-using-twilio-output-binding)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/g3cl40tv/sendgrid-logomark.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/g3cl40tv/sendgrid-logomark.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/g3cl40tv/sendgrid-logomark.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/g3cl40tv/sendgrid-logomark.png 500w" sizes="250px" width="250" height="250" alt="Twilio SendGrid logo" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## How to send recurring emails in C# .NET using SendGrid and Quartz.NET

1/19/2022 - .NET

Learn how to send recurring emails with C# .NET using Quartz.NET and SendGrid's APIs



](/blog/dotnet/how-to-send-recurring-emails-in-csharp-dotnet-using-sendgrid-and-quartzdotnet)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/3hfbcxrc/sendgrid-logomark.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/3hfbcxrc/sendgrid-logomark.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/3hfbcxrc/sendgrid-logomark.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/3hfbcxrc/sendgrid-logomark.png 500w" sizes="250px" width="250" height="250" alt="Twilio SendGrid logo" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Send Emails using the SendGrid API with .NET 6 and C#

12/13/2021 - .NET

Learn how to send emails using the SendGrid API with a .NET 6 console application and C#



](/blog/dotnet/send-emails-using-the-sendgrid-api-with-dotnet-6-and-csharp)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.7073276830679059x0.48640382701131335/media/hkljgafp/copy-of-d01-blog-image-round.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.7073276830679059x0.48640382701131335/media/hkljgafp/copy-of-d01-blog-image-round.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.7073276830679059x0.48640382701131335/media/hkljgafp/copy-of-d01-blog-image-round.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.7073276830679059x0.48640382701131335/media/hkljgafp/copy-of-d01-blog-image-round.png 500w" sizes="250px" width="250" height="250" alt="Image of Niels'" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Introducing .NET Developer Niels Swimberghe

12/8/2021 - .NET

Meet Niels Swimberghe, the newest member of the Developer Voices team at Twilio. Niels is a .NET developer and will be producing technical content for the .NET community.



](/blog/dotnet/introducing-dotnet-developer-niels-swimberghe)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/ql4ck34n/umbraco-9-as-a-linux-docker-container-square.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/ql4ck34n/umbraco-9-as-a-linux-docker-container-square.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/ql4ck34n/umbraco-9-as-a-linux-docker-container-square.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/ql4ck34n/umbraco-9-as-a-linux-docker-container-square.png 500w" sizes="250px" width="250" height="250" alt="Umbraco logo and Docker logo" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## How to run Umbraco 9 as a Linux Docker container

11/25/2021 - Umbraco

Umbraco 9 has been built on top of .NET 5. As a result, you can now containerize your Umbraco 9 websites in Linux containers. Learn how to containerize Umbraco 9 with Docker.



](/blog/umbraco/how-to-run-umbraco-9-as-a-linux-docker-container)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/gjtmjbmp/umbraco-9-to-azure-app-service-for-linux-square.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/gjtmjbmp/umbraco-9-to-azure-app-service-for-linux-square.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/gjtmjbmp/umbraco-9-to-azure-app-service-for-linux-square.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/gjtmjbmp/umbraco-9-to-azure-app-service-for-linux-square.png 500w" sizes="250px" width="250" height="250" alt="Umbraco, Azure, and Linux logo" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Deploying Umbraco 9 to Azure App Service for Linux

11/7/2021 - Umbraco

Learn how to create the Azure infrastructure using the Azure CLI to host an Umbraco 9 website using Azure SQL and Azure App Service for Linux, and how to deploy your Umbraco 9 site.



](/blog/umbraco/deploying-umbraco-9-to-azure-app-service-for-linux)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/52satp20/twilio-mark-red-8e37be43e.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/52satp20/twilio-mark-red-8e37be43e.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/52satp20/twilio-mark-red-8e37be43e.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/52satp20/twilio-mark-red-8e37be43e.png 500w" sizes="250px" width="250" height="250" alt="Twilio logo" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Handle No-Answer Scenarios with Voicemail and Callback

10/28/2021 - .NET

With Twilio Programmable Voice you can ask customers to leave a message and their phone number if there's nobody available to take the call so you can give them a callback later



](/blog/dotnet/handle-no-answer-scenarios-with-voicemail-and-callback)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/31pdfsmi/moving-to-umbraco-9-square.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/31pdfsmi/moving-to-umbraco-9-square.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/31pdfsmi/moving-to-umbraco-9-square.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/31pdfsmi/moving-to-umbraco-9-square.png 500w" sizes="250px" width="250" height="250" alt=".NET Bot on a scooter riding from Umbraco 8 to 9" decoding="async" loading="lazy" style="background-color:#fff"></picture>

## Thoughts and tips on moving to Umbraco 9 from Umbraco 8

10/24/2021 - Umbraco

.NET Core was a groundbreaking change to the .NET platform. It is blazing fast, open-source, and cross-platform across Windows, Linux, and macOS. With Umbraco 9, we finally get to enjoy all the new innovations from .NET Core. Read about my experience upgrading an Umbraco 8 website to Umbraco 9.



](/blog/umbraco/thoughts-and-tips-on-moving-to-umbraco-9-from-umbraco-8)[

<picture><img class="blog-post-card__image" src="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/4hxim0g5/brandblazor_nohalo_1000x.png" srcset="/cdn-cgi/image/width=250,format=auto,quality=90,height=250,fit=cover,gravity=0.5x0.5/media/4hxim0g5/brandblazor_nohalo_1000x.png 250w, /cdn-cgi/image/width=375,format=auto,quality=90,height=375,fit=cover,gravity=0.5x0.5/media/4hxim0g5/brandblazor_nohalo_1000x.png 375w, /cdn-cgi/image/width=500,format=auto,quality=90,height=500,fit=cover,gravity=0.5x0.5/media/4hxim0g5/brandblazor_nohalo_1000x.png 500w" sizes="250px" width="250" height="250" alt="Blazor logo" decoding="async" loading="lazy"></picture>

## Get Your Head Together With Blazor’s New HeadContent and PageTitle

10/14/2021 - .NET

Let’s take a look at the three Blazor components .NET 6 is introducing to help you manage the head of your document—PageTitle, HeadContent, and HeadOutlet.



](/blog/dotnet/get-your-head-together-with-blazors-new-headcontent-and-pagetitle)

[Previous Page](/blog#main-content)[Show All Posts](/blog/all#main-content)[Next Page](/blog/3#main-content)

[Prev](/blog#main-content)[Next](/blog/3#main-content)
