<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>c# Archives - WardNet</title>
	<atom:link href="https://www.wardnet.co.uk/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.wardnet.co.uk/tag/c/</link>
	<description>Infrastructure, ERP and General Technology Blog</description>
	<lastBuildDate>Sun, 11 Jul 2021 11:31:08 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.1</generator>

<image>
	<url>https://i0.wp.com/www.wardnet.co.uk/wp-content/uploads/2026/01/wp-1767387074640.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>c# Archives - WardNet</title>
	<link>https://www.wardnet.co.uk/tag/c/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">63479081</site>	<item>
		<title>5 Useful SendGrid Tips</title>
		<link>https://www.wardnet.co.uk/5-useful-sendgrid-tips/</link>
		
		<dc:creator><![CDATA[Jonathan Ward]]></dc:creator>
		<pubDate>Sat, 09 May 2020 14:59:24 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[SendGrid]]></category>
		<guid isPermaLink="false">https://www.wardnet.co.uk/?p=607</guid>

					<description><![CDATA[<p>I recently started working on a concept of a message list subscription service, to be integrated directly into new product features so that people can add themselves to the list to receive information of updates on specific features. This led me down the path of using Azure Storage and SendGrid, building 2 raw prototype apps [&#8230;]</p>
<p><a href="https://www.wardnet.co.uk/5-useful-sendgrid-tips/">5 Useful SendGrid Tips</a></p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I recently started working on a concept of a message list subscription service, to be integrated directly into new product features so that people can add themselves to the list to receive information of updates on specific features. This led me down the path of using Azure Storage and SendGrid, building 2 raw prototype apps (in WinForms at this early stage) to achieve both the subscription and the sending out of data to the subscribers. Writing this on.NetFramework 4.8 with C# in a fairly native way has given me a great way to investigate and utilise the SendGrid platform to send emails to multiple subscribers. </p>



<p class="wp-block-paragraph">I wanted to share my findings, rather than my code at this stage, and here are my Top 5 SendGrid tips:</p>



<ol class="wp-block-list"><li>Do review Microsoft&#8217;s guide on how to get started with SendGrid via Azure, this simple article gives you a great base on how to set up the back-end and start writing C# around it: <a rel="noreferrer noopener" href="https://docs.microsoft.com/en-us/azure/sendgrid-dotnet-how-to-send-email" target="_blank">https://docs.microsoft.com/en-us/azure/sendgrid-dotnet-how-to-send-email</a></li><li>Use Unsubscribe groups &#8211; these allow you to stay within GDPR in Europe, appending an Unsubscribe and Manage Preferences link to the bottom of the emails that are sent. i.e. </li></ol>



<div class="wp-block-image"><figure class="aligncenter size-large"><img data-recalc-dims="1" decoding="async" width="332" height="47" data-attachment-id="608" data-permalink="https://www.wardnet.co.uk/5-useful-sendgrid-tips/image/" data-orig-file="https://i0.wp.com/www.wardnet.co.uk/wp-content/uploads/2020/05/image.png?fit=332%2C47&amp;ssl=1" data-orig-size="332,47" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/www.wardnet.co.uk/wp-content/uploads/2020/05/image.png?fit=332%2C47&amp;ssl=1" src="https://i0.wp.com/www.wardnet.co.uk/wp-content/uploads/2020/05/image.png?resize=332%2C47&#038;ssl=1" alt="" class="wp-image-608" srcset="https://i0.wp.com/www.wardnet.co.uk/wp-content/uploads/2020/05/image.png?w=332&amp;ssl=1 332w, https://i0.wp.com/www.wardnet.co.uk/wp-content/uploads/2020/05/image.png?resize=300%2C42&amp;ssl=1 300w" sizes="(max-width: 332px) 100vw, 332px" /><figcaption>Unsubscribe preferences from SendGrid</figcaption></figure></div>



<ol class="wp-block-list" start="3"><li>Write both plain text and HTML content for your email, I ended up creating an HTML builder so I could convert Email addresses to <code><code data-enlighter-language="html" class="EnlighterJSRAW">&lt;a href="mailto:EmailAddress"></code></code> and any HTTP(s):// links to <code><code data-enlighter-language="html" class="EnlighterJSRAW">&lt;a href:"http://link"></code></code> this was a great experiment with regular expressions. Note, I found that not all Email clients auto-convert, e.g. Outlook will convert an Email address but not a URL. I was creating my body text in a Rich Text Box, so it was just one big string!</li><li>Look into Personalisations (<a href="https://sendgrid.com/docs/for-developers/sending-email/personalizations/" target="_blank" rel="noreferrer noopener">https://sendgrid.com/docs/for-developers/sending-email/personalizations/</a>) these are crucial if you want to customise your output (the emails themselves). I created variables to use in subject and body lines so I could pass in <code><code data-enlighter-language="csharp" class="EnlighterJSRAW">{customer}</code></code> and<code> </code><code data-enlighter-language="csharp" class="EnlighterJSRAW">{product}</code>. SendGrid has a substitution capability which comes as part of personalisation. I&#8217;ll share a snippet of code here, as I found a solution on StackOverflow (<a href="https://stackoverflow.com/a/53292550" target="_blank" rel="noreferrer noopener">https://stackoverflow.com/a/53292550</a>) but it needed a slight tweak, changing the <code><code data-enlighter-language="csharp" class="EnlighterJSRAW">Tos.Add</code></code> to a <code><code data-enlighter-language="csharp" class="EnlighterJSRAW">msg.AddTo</code></code> as the To: Email address needs to be a part of the personalisation, I wasn&#8217;t sure if this was to do with API changes or not! Another tip, if you want the subject to be the same, without substitutions you can use the <code><code data-enlighter-language="csharp" class="EnlighterJSRAW">SetGlobalSubject</code></code> method</li></ol>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<pre class="wp-block-code"><code lang="csharp" class="language-csharp line-numbers"><code data-enlighter-language="csharp" class="EnlighterJSRAW">var personalizationIndex = 0;
                foreach (var subscriber in subscriberEntities)
                {
                    msg.AddTo(new EmailAddress(subscriber.RowKey, subscriber.Name), personalizationIndex);
                    msg.AddSubstitution("{product}", product.Description, personalizationIndex);
                    msg.AddSubstitution("{customer}", subscriber.Name, personalizationIndex);
                    personalizationIndex++;
                    
                }</code></code></pre>



<p class="wp-block-paragraph"></p>
</div>
</div>
</div></div>
</div>
</div>
</div>
</div>



<ol class="wp-block-list" start="5"><li>Create a test email method, that uses the same logic as your core one, but only sends to one email address. You don&#8217;t want to be sending bulk emails out without checking them first!</li></ol>



<p class="wp-block-paragraph">I hope this new style of thread has been an interesting read, I hope to do more very soon!</p>
<p><a href="https://www.wardnet.co.uk/5-useful-sendgrid-tips/">5 Useful SendGrid Tips</a></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">607</post-id>	</item>
	</channel>
</rss>
