<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ email marketing - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ email marketing - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sun, 26 Jul 2026 16:38:37 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/email-marketing/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Shopify Email Automation – How to Automatically Send Emails ]]>
                </title>
                <description>
                    <![CDATA[ Email automation is not something new in the e-commerce space. And it's a pretty simple and straightforward concept. Email automation is all about sending emails to customers based on events that occur on your website, like abandoned cart emails, ord... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/shopify-email-automation/</link>
                <guid isPermaLink="false">66d45e46d14641365a0508b6</guid>
                
                    <category>
                        <![CDATA[ ecommerce ]]>
                    </category>
                
                    <category>
                        <![CDATA[ email marketing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ shopify ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Edan Ben-Atar ]]>
                </dc:creator>
                <pubDate>Thu, 31 Mar 2022 17:00:18 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/03/Shopify-Email-Automation.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Email automation is not something new in the e-commerce space. And it's a pretty simple and straightforward concept.</p>
<p>Email automation is all about sending emails to customers based on events that occur on your website, like abandoned cart emails, order confirmation emails, shipping confirmation emails, and so on.</p>
<p>The result? You save time by not having to do this work manually.</p>
<h2 id="heading-why-email-automation-is-important">Why Email Automation is Important</h2>
<p>Email is still one of the most effective marketing channels. Email marketing has a higher ROI than any other form of <strong>digital advertising</strong>, and even with all the new tools available to us, it’s still the most cost-effective channel.</p>
<p>Adding automation to your emails can take them even further. Emails are automatically sent based on triggers you set up so that they reach your customers when they’re most likely to convert. Automation also allows you to send messages at scale without any manual work.</p>
<p>Email also provides a direct line of communication with your customers and, if done correctly, can be something people look forward to opening.</p>
<p>It’s a powerful tool, but it’s not just about sending more emails — it’s about sending better ones.</p>
<p><a target="_blank" href="https://www.weblime.com/stories/shopify-automation/">Shopify email automation</a> lets you send personalized emails to each customer as they interact with your business individually and receive follow-up messaging based on their purchase behavior, browsing activity, and even gives them recommendations based on their buying history.</p>
<p>This post will cover different types of email automation, what their purpose is, and how it can benefit the customers and e-commerce stores.</p>
<h2 id="heading-why-is-shopify-email-automation-essential">Why is Shopify email automation essential?</h2>
<p>There are many reasons for implementing email automation on your Shopify store. Here are just a few:</p>
<ul>
<li><p>It saves time.</p>
</li>
<li><p>It increases engagement.</p>
</li>
<li><p>It improves conversion rates.</p>
</li>
<li><p>It enhances the customer experience.</p>
</li>
<li><p>It saves time.</p>
</li>
</ul>
<h3 id="heading-saving-time">Saving time</h3>
<p>Email automation can save you a lot of time by automating tedious, repetitive tasks that would otherwise need to be done manually and individually to each recipient.</p>
<p>This is especially useful when sending a large number of emails in a short amount of time, such as in an event invitation or email marketing campaign.</p>
<h3 id="heading-establishing-trust">Establishing trust</h3>
<p>You can use email automation to establish trust with your customers, which will help increase engagement with your brand and business.</p>
<p>You can also use it to build relationships with your subscribers and increase the likelihood that they'll make a purchase or recommend you to their friends and family.</p>
<h3 id="heading-improving-conversion-rates">Improving conversion rates</h3>
<p>As a business owner, you have to think about how you can improve your conversion rate constantly. This is especially true if you're trying to grow your business.</p>
<p>One of the biggest benefits of using <strong>email marketing automation</strong> software is that it can improve your conversion rate.</p>
<p>When used correctly, email automation can help you reach more people in less time. It can also help you get them interested enough about what you have to offer so that they actually buy from you instead of just browsing around aimlessly on your website.</p>
<h2 id="heading-shopify-email-marketing-automation-software">Shopify email marketing automation software</h2>
<h3 id="heading-klavyio">Klavyio</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/image-162.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Klavyio is a tool that you can use to set up automated email workflows. It’s a third-party tool (not built by Shopify) that integrates with your store and helps you build stronger relationships with your customers, as well as increase sales.</p>
<p>Using Klavyio, you can create emails that are sent automatically when a customer purchases a product from your store or when they abandon their cart. You can also set up emails to be sent at different points after someone spends time browsing your site, or even if no one has visited for a while.</p>
<p>Not sure how you would use Klavyio in your store? Here are some ideas:</p>
<ul>
<li><p>Send an abandoned cart recovery email after someone leaves items in their cart but doesn't purchase them. You can use the personalization features in Klavyio to show the specific products they left behind, so they're more likely to come back and buy.</p>
</li>
<li><p>Send a newsletter about new products or store promotions to your existing customers. This is a great way to let people know about things happening in your store.</p>
</li>
<li><p>Start building a segment of customers who have purchased from you before. Then send them exclusive offers that aren't available to anyone else.</p>
</li>
</ul>
<p>Here's how it works:</p>
<ul>
<li><p>Klaviyo takes all your customer data and allows you to build experience across email, owned channels and measure the results in revenue.</p>
</li>
<li><p>Klaviyo uses machine learning to analyze and group your customers into segments that are most likely to buy.</p>
</li>
<li><p>Klaviyo automatically creates personalized emails based on what each segment is most interested in.</p>
</li>
</ul>
<p>That way, you know exactly what to send and when to send it.</p>
<p>If a customer adds a product to their cart but doesn’t check out, the abandoned cart email is triggered after some time. This mail includes a list of products that were left behind in the shopping cart. This is when customers return to their carts and complete the transaction in many cases.</p>
<p>Someone who adds a product to their cart is a qualified lead. You can use the abandoned cart email automation process to bring them back with their cart and complete their transaction.</p>
<p>Abandoned carts are triggered after a set period of time, usually between 60 minutes and 24 hours. The product list in the mail reminds them what they were doing and leads them back to the checkout page.</p>
<h3 id="heading-zapier">Zapier</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/image-161.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Zapier is a web-based service that allows you to connect your favorite web apps and automate workflows—without the headache of learning how to code. It’s a great way to extend the functionality of existing apps.</p>
<p>Zapier uses a trigger-action model. A trigger starts a workflow, and an action ends it.</p>
<p>Zapier moves info between your web apps automatically so that you can focus on your most important work.</p>
<p>To use Zapier, you'll first need to select the app(s) you want to create an automation between. You can either search for your app (Shopify, Gmail, and so on) or scroll through the list of popular apps.</p>
<p>Here’s how Zapier can help you:</p>
<ol>
<li><p>Add new leads to a drip campaign</p>
</li>
<li><p>Trigger follow-up emails after a purchase</p>
</li>
<li><p>Send predefined email responses</p>
</li>
<li><p>Forward contact form submissions to your inbox</p>
</li>
<li><p>Add new contacts to your email list</p>
</li>
</ol>
<p>The best part? You don’t need any technical skills or a big budget. If you can point, click, and type, Zapier can help you automate your email marketing—and more.</p>
<p>For email marketing services, this means Zapier can listen for events and then trigger actions in other apps.</p>
<p>For example, when someone subscribes to your mailing list or when someone purchases something from your Shopify store, Zapier can be instructed to send the user's information to your CRM.</p>
<p>Or, if a new Google Sheets row is created with customer/user data—names, emails, phone numbers—Zapier can add that person as a subscriber to your mailing list automatically.</p>
<h3 id="heading-integromat">Integromat</h3>
<p>Integromat is a powerful workflow automation platform with a focus on scalability, reliability, and flexibility. It enables you to connect Shopify triggers and actions to other apps, web services, or API endpoints.</p>
<p>The platform offers a range of capabilities such as complete control over data flow, API creation, and management tools for developers, as well as scenario builder for non-technical users.</p>
<p>Integromat also allows you to automate complex processes that would otherwise require hiring experienced developers.</p>
<p>Here are some of the things you can do using this integration:</p>
<ul>
<li><p>Send out welcome emails, confirmations, and reviews as soon as your customers sign up to your store or place an order on it</p>
</li>
<li><p>Use different templates based on the product bought by each customer</p>
</li>
<li><p>Segment your subscribers based on their activity, location, and purchase history.</p>
</li>
</ul>
<h2 id="heading-takeaways">Takeaways</h2>
<p>Shopify email automation can be your sales partner if you implement it wisely.</p>
<p>Email automation will probably become your best friend in the long run, especially when it comes to marketing. And if you're having a hard time deciding which strategy to go for, then think of this: email automation is designed to help you improve your sales experience and, ultimately, increase sales.</p>
<p>And it's not just about marketing. Email automation can be used throughout the customer journey to improve their experience as well.</p>
<p>Now that you know more about <strong>Shopify email automation</strong>, there's no reason not to research and learn more about it – because there is definitely a lot for you out there.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Create an Email Newsletter – Design, Layout, Send ]]>
                </title>
                <description>
                    <![CDATA[ If you manage a large community, chances are you need a way to communicate updates to your members quickly and efficiently. An email newsletter can be a very effective way to do so. In this article, I am going to provide some tips and suggestions for... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-create-an-email-newsletter-design-layout-send/</link>
                <guid isPermaLink="false">66ac7f3423cc28a03a55e084</guid>
                
                    <category>
                        <![CDATA[ email ]]>
                    </category>
                
                    <category>
                        <![CDATA[ email marketing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ newsletters ]]>
                    </category>
                
                    <category>
                        <![CDATA[ writing tips ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Naomi Carrigan ]]>
                </dc:creator>
                <pubDate>Thu, 13 May 2021 21:19:40 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/05/pexels-anthony-shkraba-5206271.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>If you manage a large community, chances are you need a way to communicate updates to your members quickly and efficiently. An email newsletter can be a very effective way to do so.</p>
<p>In this article, I am going to provide some tips and suggestions for maximizing the impact of your email newsletter: open rates, click-through rate, and not irritating your recipients.</p>
<p>I will also share some technical details and configurations you can use to maximize the deliverability of your email newsletter.</p>
<h2 id="heading-how-to-write-an-impactful-subject-line">How to Write an Impactful Subject Line</h2>
<p>Your subject line is the first thing your readers will see when the email appears in their inbox. It's important, then, that you use something eye catching that encourages them to read the message.</p>
<h3 id="heading-what-to-include-in-the-subject-line">What to Include in the Subject Line</h3>
<p>Your subject line should provide a brief summary of the email content or highlight the key information. Some examples would be:</p>
<blockquote>
<p>Learn Data Structures and Algorithms [free 6-hour coding course]</p>
</blockquote>
<p>This headline comes from one of Quincy's email newsletters, and calls out the first article out of a weekly curated list of five articles.</p>
<blockquote>
<p>Our Community Reached 3,000 Members - Here's What's Next</p>
</blockquote>
<p>Here the headline provides a clear summary of the email's content – an update on the community's success and future plans.</p>
<blockquote>
<p>The Observatory #4: Gravity is the key to community growth</p>
</blockquote>
<p>Pulled from an <a target="_blank" href="https://orbit.love">Orbit</a> newsletter, this subject line has two benefits: Like the others, it summarizes the content of the email. It also helps readers recognize this email as a serial newsletter, and track the number to ensure they have not missed one.</p>
<h3 id="heading-what-to-exclude-from-the-subject-line">What to Exclude from the Subject Line</h3>
<p>You want to avoid headlines which are vague, uninformative, or may seem like spam.</p>
<blockquote>
<p>Click Here! Important Information Within!</p>
</blockquote>
<p>Avoid words and phrases such as <code>click here</code>, <code>urgent</code>, <code>important</code>, and <code>priority</code>. These types of subject lines are often used in spam emails, and can cause your readers to disengage.</p>
<blockquote>
<p>April 2020 Community Update</p>
</blockquote>
<p>While this subject is not going to seem like spam, it is also vague and uninformative. You want your subject to catch the reader's attention and be unique.</p>
<blockquote>
<p>Top Picks Just For You</p>
</blockquote>
<p>Another vague subject line, this one also gives off a "click-bait" vibe. This type of subject line doesn't hook your readers or entice them in to reading your full email.</p>
<h2 id="heading-how-to-craft-an-effective-email-body">How to Craft an Effective Email Body</h2>
<p>The body of your email is where your core content will go. Having a well written and effective email body is essential.</p>
<h3 id="heading-html-vs-plain-text-in-emails">HTML vs. Plain Text in Emails</h3>
<p>Using HTML in your email can make it look nice, certainly. However, HTML emails are more likely to be flagged as spam by the receiving providers.</p>
<p>Plain text emails are generally safer, though they offer less functionality. Additionally, a plain text email will ensure maximum compatibility with all devices, and ensure that your email can be viewed even over slower internet connections.</p>
<p>HTML, on the other hand, offers a much higher level of customization in terms of layout, content, and functionality. You can even implement things like interaction tracking to see who is opening (open rate), reading, and clicking on links in your email (click-through rate). Whether these features are worth the potential impact to delivery is or not is up to you.</p>
<h3 id="heading-how-to-handle-links-in-emails">How to Handle Links in Emails</h3>
<p>Speaking of links, there are some special considerations when it comes to handling links in your email. The key idea is to keep your links easily readable and verifiable.</p>
<p>One important aspect is the transparency of your links. You want to avoid using things like URL shorteners that hide the domain the link points to. Keeping your link's target clear ensures that your readers can trust the safety of the link.</p>
<p>Many sending providers offer click-tracking features, where they will provide metrics on how many of your readers click the links within your email.</p>
<p>While these metrics may seem useful, they do come at a cost – usually the links are obfuscated through a redirect via the provider's domain. This decreases the chance that your readers will click the link.</p>
<h3 id="heading-unsubscribe-links">Unsubscribe Links</h3>
<p>If your email is considered commercial material (marketing, advertisements, and so on.), having an unsubscribe link is <em>required</em>. If it is a transactional (receipt, account updates) or relationship (communicating with existing contacts) email, then an unsubscribe link is not necessarily required but is still strongly recommended.</p>
<p>Having an unsubscribe link allows your recipients to quickly and easily opt-out of receiving future communications. While it may not seem ideal to lose your reader base, it is much better than having your emails flagged as spam (which can impact your sender reputation and cause future emails to anyone with that email provider to be blocked).</p>
<p>Your unsubscribe link does not need to be prominent or featured – a simple link with the text "Unsubscribe" at the bottom of your email is often sufficient.</p>
<h3 id="heading-content-and-layout-of-your-emails">Content and Layout of Your Emails</h3>
<p>The content and layout of your email body are also very important. If you are using plain text to send your email, then your biggest consideration will be the length of your paragraphs. In general, shorter paragraphs are easier to read than a "wall of text", and will help your readers stay engaged with the content.</p>
<p>If you are using HTML, then you have some additional obstacles to consider.</p>
<p>For example, including images may seem very tempting as they can make the email look more visually appealing. But each image increases the time it takes for the email to render on the reader's device, and images aren't as accessible for those who use screen readers as plain text is.</p>
<p>Remember that images should add to the content, not detract from the information.</p>
<p>Another aspect to consider when using HTML is the semantic structure. To avoid any rendering errors or accessibility concerns, you will want to keep your HTML semantically correct. I recommend using an <a target="_blank" href="https://validator.w3.org/">HTML Validator</a> before sending the email to ensure you don't have any errors.</p>
<p>Content length itself is also important. You don't want to overwhelm your readers with too much information in a single email. If you have a lot of content you want to share, consider making a blog post or news article – then, link that article in your email with a brief summary of the content.</p>
<h3 id="heading-how-to-sign-off-in-an-email">How to Sign Off in an Email</h3>
<p>The signature of your email is just as important as the main content. Signing off your email lets your readers know who sent it, and gives you the opportunity to close out the content.</p>
<p>You should include your name and your role within your organization, so that your readers see that the email came from a person. This creates the impression that it is a more personal communication and not an automatically generated email.</p>
<p>Finally, the signature and conclusion also give you the chance to thank your readers for their time. It is good to recognize that your readers took time out of their day to read your content. Time is valuable, and your readers have given you theirs.</p>
<h2 id="heading-technical-aspects-of-email-newsletters">Technical Aspects of Email Newsletters</h2>
<p>Now that you've drafted your first newsletter, you need to address the technical concerns. Namely, you'll need to figure out how you'll send this newsletter.</p>
<h3 id="heading-choose-a-sending-provider">Choose a Sending Provider</h3>
<p>The first question to answer is what will you use to send this email? It is entirely possible to set up and run your own Secure Mail Transfer Protocol (SMTP) server, but that can be a significant investment of time and resources.</p>
<p>Instead, there are a number of providers that will handle sending the emails for you. Here at freeCodeCamp we use <a target="_blank" href="https://www.sendgrid.com">SendGrid</a>. Most providers will offer an API to request that emails be sent, or a UI to prepare your emails. Then they will handle the actual send process for you.</p>
<p>While these providers can get expensive at higher volumes, often times the cost is worth the access to additional features such as email validation and bounce report tracking.</p>
<h3 id="heading-set-up-email-authentication">Set up Email Authentication</h3>
<p>Another important technical aspect is email verification and authentication, especially if you are using a custom domain.</p>
<p>How does a provider such as Gmail confirm that the email has legitimately come from your organization and not someone pretending to be you?</p>
<p>There are a couple of security steps you can take to ensure that your emails are delivered while spoofed emails are not.</p>
<ul>
<li><p><strong>Sender Policy Framework (SPF):</strong> You can use an SPF setting to validate that the mail server is authorized to send emails from your email domain. SPF is enabled via a <code>TXT</code> record in your domain settings. The content of that record will depend on the system you are using to send those emails.</p>
</li>
<li><p><strong>DomainKeys Identified Mail (DKIM):</strong> You can use DKIM to assert that the email message has not been modified in transit from the sending server to the receiving server. DKIM records are set up in your domain settings either as a <code>TXT</code> record or a <code>CNAME</code> record, depending on your provider. These records will indicate the public encryption/decryption keys.</p>
</li>
<li><p><strong>Domain Message Authentication, Reporting, and Conformance (DMARC):</strong> The final step, after enabling SPF and DKIM, is to set up a DMARC record. The DMARC record tells email providers what to do if an email from your domain fails SPF or DKIM, where to send delivery reports, and how often to apply the DMARC policy. A DMARC record is added as a <code>TXT</code> record to your domain settings, as <code>_dmarc.yourdomain.tld</code>.</p>
</li>
</ul>
<p>Congratulations. Now that you have read this article, you should have a basic understanding of how to create and send your first email newsletter. I hope you found this article helpful.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What I Learned from Launching an Email Newsletter ]]>
                </title>
                <description>
                    <![CDATA[ I love to learn and I love to build. I work as a Product Manager for SaaS software and have built dozens of websites, from an ecommerce business for a local bakery to a website all about honeymoons.  I had never built and launched an email newsletter... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-launch-an-email-newsletter/</link>
                <guid isPermaLink="false">66bb574db24bccee530b48d8</guid>
                
                    <category>
                        <![CDATA[ email ]]>
                    </category>
                
                    <category>
                        <![CDATA[ email marketing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ newsletters ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WordPress ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jim Campbell ]]>
                </dc:creator>
                <pubDate>Tue, 05 Jan 2021 00:18:48 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/01/solen-feyissa-M7zS8puGg18-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>I love to learn and I love to build. I work as a Product Manager for SaaS software and have built dozens of websites, from an ecommerce business for a local bakery to a website all about honeymoons. </p>
<p>I had never built and launched an email newsletter before last week. Below is the story of my experience launching an email newsletter and the key learnings I have found. </p>
<p>My hope is that you can use my learnings to launch your own and possibly avoid some pitfalls along the way. </p>
<h2 id="heading-how-to-find-the-problem-and-the-opportunity">How to Find the Problem and the Opportunity</h2>
<p>Unable to leave my home as a result of local COVID-19 lockdowns, I have had more time to pursue side-projects, learn new skills, and look into developing trends. One trend that is unavoidable for me is the rise in remote work. </p>
<p>Like many of us, I have been part of a forced experiment in working from home for the majority of 2020 and for an unknown portion of 2021. </p>
<p>While there are undeniable benefits of WFH, there are also many challenges that WFH creates. These challenges include:</p>
<ul>
<li>Having a proper working environment.</li>
<li>Managing work-life balance.</li>
<li>Maintaining professional relationships.</li>
<li>Addressing burnout.</li>
<li>Navigating my career.</li>
</ul>
<p>I realized that millions of others are facing similar challenges in working from home and may need guidance on how to excel at WFH. </p>
<p>The guidance is out there in publications and expert books, but most people don't have the time or drive to find it all. </p>
<p>I saw an opportunity to provide some simple tips and tricks that will help people work from home. </p>
<p>Now the question was how to deliver that information?</p>
<h2 id="heading-how-i-decided-to-use-email-as-a-medium">How I Decided to Use Email as a Medium</h2>
<p>My background is in <a target="_blank" href="https://www.freecodecamp.org/news/how-to-start-a-blog-with-wordpress/">building websites</a>. A work from home website with educational content was an easy choice, but just not sticky enough for this idea. My websites primarily attract visitors through SEO and I wanted to help people on topics they may not know even exist.</p>
<p>Also, I wanted to explore another medium as an educational endeavor. Time to dive into TikTok? Look into audio media? An email newsletter?</p>
<p>An email newsletter checked all the boxes I wanted. Email newsletters have the benefits of:</p>
<ul>
<li>A captive audience.</li>
<li>Ability to deliver content on a scheduled basis.</li>
<li>Easy to track metrics.</li>
</ul>
<p>I have always been a fan of newsletters such as <a target="_blank" href="https://www.morningbrew.com/">Morning Brew</a>, <a target="_blank" href="https://tagtheflag.co/">Tag The Flag</a>, and <a target="_blank" href="https://www.theskimm.com/">theSkimm</a>. I find these newsletters inspiring as successful entrepreneurial pursuits but also as wonderful media to communicate to a captive audience.</p>
<p>Email newsletters are a great medium to learn about. Over 83% of businesses already use email newsletters with an average ROI of 4400% ($44 for every dollar spent).</p>
<p>With email, I could set up an automated series that people would only have to take action (sign up) once and I would be able to deliver information to them over one month. I could "set it and forget it" while people consumed the content and received helpful advice for working from home. </p>
<p>Email newsletter it is!</p>
<p>The idea formed into an 8-email series that would be automatically delivered over 1 month. I decided to call it the <a target="_blank" href="https://wfhbootcamp.com">Work From Home (WFH) Bootcamp</a>.</p>
<h2 id="heading-early-email-marketing-lessons">Early Email Marketing Lessons</h2>
<p>Before getting into the details, I had to understand the limits of my new medium. </p>
<p>I know how to speed up a webpage, optimize for SEO, track website visitors, monitor bounce rate, and so on - but I knew nothing about best practices for email, the inherent limits of emails, and what to look out for.</p>
<p>Here are some things I learned.</p>
<h3 id="heading-email-open-rates">Email Open Rates</h3>
<ul>
<li>Average email open rate should be between 15-25%.</li>
<li>Average click-through rate should be about 2.5%.</li>
</ul>
<p>What this means is that over an eight-email series, people will only read a couple of the emails. Not ideal. My hope is that based on the nature of the series, people will be expecting the emails, leading to a higher open rate. But low open rates are an inherent factor of email newsletters. </p>
<p>The idea for the Bootcamp was to include informative references in the emails along with some recommendations for products to try. If only 2.5% click through to those in-depth articles and products, the impact of the email to drive actions on other websites would be lower than I expected.</p>
<p>Here are my early results:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/01/image-22.png" alt="Image" width="600" height="400" loading="lazy">
<em>Open rate and click rate for the first 1,000 subscribers to WFHBootcamp.com</em></p>
<p>The first email in the WFH Bootcamp has already been sent to over 1,000 subscribers. Only 26.3% of those subscribers have opened the first email. This is quite a bit lower than I expected and something that I will have to monitor as the Bootcamp grows. </p>
<h3 id="heading-email-content-optimization">Email Content Optimization</h3>
<p>I am familiar with writing website copy and optimizing for SEO. But what makes good email newsletter copy?</p>
<p>Here is what I learned as I prepared to write the email series:</p>
<ul>
<li>Length is dependent on the type of email, keep it short for sales.</li>
<li>Newsletter content should be 90% educational and 10% promotional (HubSpot).</li>
<li>Subject matters (a lot) - 47% of email recipients open an email based on the subject line alone (OptInMonster).</li>
<li>Using an emoji in the subject line can increase open rates by 4.2% (Moosend).</li>
<li>Images are difficult - 43% of people disable images, and some email clients don’t display background images (OptInMonster).</li>
</ul>
<p>I was trying to distill working from home best practices into 8 concise emails. I decided that my length needed to be under 900 words. This is about 3 minutes of reading time (an eternity in the attention economy). </p>
<p>The average time reading an email is 11 seconds - so writing longer-form content is a gamble. Short attention spans are the limit of the email newsletter medium. </p>
<h3 id="heading-email-delivery-times">Email Delivery Times</h3>
<p>Since I set out to create an automated newsletter about working from home, figuring out when the content arrived in my subscribers' inboxes was important.</p>
<p>GetResponse analyzed about 4 billion emails sent by their customers to gather information on the best time to send to individual email addresses. Here is what they found by day of the week:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/01/image-23.png" alt="Image" width="600" height="400" loading="lazy">
<em>Get Response data for email opens and clicks by day of the week.</em></p>
<p>I decided that receiving WFH content on the weekend did not make much sense. Additionally, the GetResponse data confirmed that weekend emails suffered worse open and click rates. Luckily my email provider had such a feature to only send emails during the weekdays.</p>
<p>There is also a lot of research about the best time to send emails (10am on Tuesday?) but based on this research I decided that the best time to send during the weekday was when someone signed up. </p>
<h2 id="heading-how-i-wrote-the-content-and-generated-user-feedback">How I Wrote the Content and Generated User Feedback</h2>
<p>Writing can be hard, especially as a marketer. </p>
<p>I had been keeping copious notes on WFH best practices over the past year for my own benefit. These notes led me to create an outline, which made it quite easy to start conducting user research and eventually populating that outline with helpful content. </p>
<p>Here is how I got started.</p>
<h3 id="heading-customer-research">Customer Research</h3>
<p>Like all good product development, I started by taking my initial findings to potential customers. I asked people: "what do you want to learn if you subscribe to my newsletter? What are you hoping to get out of it?"</p>
<p>When I first asked people these questions, I got three types of replies:</p>
<ol>
<li>Help me improve the physical comfort of my office space.</li>
<li>Help me improve my mental health and well being when working without frequent contact with others.</li>
<li>Help me excel as a remote worker and enhance my career prospects.</li>
</ol>
<p>Fortunately, these categories aligned with what I had hoped to write about. Then, by practicing design thinking (which is a holistic way of applying critical thinking to solving design-related problems that matter to people) I was able to peel back the layers and better understand what users wanted to learn and most importantly, <strong>why</strong>.</p>
<p>Now was time to write.</p>
<h3 id="heading-a-writing-sprint">A Writing Sprint</h3>
<p>I wrote all eight emails over a (long) weekend. This writing sprint was enabled by conducting the extensive industry and user research prior to writing.</p>
<p>Here are the subject lines and lengths of each email:</p>
<ul>
<li>WFH Bootcamp #1: Welcome! 👋 Let's Make Your Workspace Work For You 🖥 <em>(806 words)</em></li>
<li>WFH Bootcamp #2: Why Your Home Office Matters 🖥 <em>(862 words)</em></li>
<li>WFH Bootcamp #3: Winning WFH’s Mental Games 🧘‍♀️ <em>(586 words)</em></li>
<li>WFH Bootcamp #4: Let’s Talk About Your Physical Health 🏃‍♀️ <em>(765 words)</em></li>
<li>WFH Bootcamp #5: 📊 Boost Your WFH Performance 📈 <em>(545 words)</em></li>
<li>WFH Bootcamp #6: 👩‍💻 Managing Your Career👨🏽‍💻 <em>(508 words)</em></li>
<li>WFH Bootcamp #7: How Companies Are Thinking About Remote Work 🏬🏢 <em>(350 words)</em></li>
<li>WFH Bootcamp #8: WFH and Your Future 🚀🚀🚀 <em>(425 words)</em></li>
</ul>
<p>In total that is <strong>just under 5,000 words.</strong> Double spaced, that is about 20 pages of content. </p>
<p>So basically, the WFH Bootcamp is my research paper for WFH 101. </p>
<h2 id="heading-how-i-built-the-landing-page">How I Built the Landing Page</h2>
<p>Luckily, creating a simple blog is quite easy. </p>
<p>I built a simple landing page with <a target="_blank" href="https://www.freecodecamp.org/news/what-is-wordpress/">Wordpress</a>, hosted on Kinsta, used ConvertKit as my email provider, and used images from UnDraw.co. </p>
<p>Standing up the website only took a few hours.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/01/image-24.png" alt="Image" width="600" height="400" loading="lazy">
<em>WFHBootcamp.com</em></p>
<p>For the MVP, the content is exclusively available through the emails. Providing gated content on the website (using a tool like Wordable to quickly add the content from Google Docs to Wordpress) is a logical next step but not a requirement for the MVP of the email series. </p>
<p>For those looking to easily create gated content, services like SubStack offer an out-of-the-box solution to launching newsletters with gated content and paid subscriptions. </p>
<h2 id="heading-how-i-launched-the-newsletter-and-next-steps">How I Launched the Newsletter, and Next Steps</h2>
<h3 id="heading-early-feedback-is-critical">Early Feedback Is Critical</h3>
<p>I had been incorporating real world feedback as often as I could. I launched the Bootcamp on an expedited timeline with a beta group of about 100 users (friends, family, connections) as soon as the content was written. </p>
<p>These users provided invaluable early feedback via a customized survey I created via <a target="_blank" href="https://www.typeform.com/">TypeForm</a>. </p>
<p>Was I embarrassed at times? You bet. Did that feeling slow me down? Not at all. As Reid Hoffman says "If There Aren't Any Typos, We Launched Too Late!".</p>
<p>As with building and launching any other type of software product, speed to market is very important.</p>
<p>Not because I fear competitors or imitation, but because I stand by my product and believe that it adds value to real people in real jobs who are struggling to work from home. And the sooner I could get the email series launched the sooner I could help those people. </p>
<p>Builders start with the customer and work backwards. They work vigorously to earn and keep customer trust. Getting feedback is key to building trust.</p>
<p>These early users have expanded the growth of the Bootcamp as well. Since launching with these 100 beta users, over 1,000 people have now signed up for the WFH Bootcamp.</p>
<h3 id="heading-what-to-monitor-with-email-newsletters">What to Monitor With Email Newsletters</h3>
<p>As these numbers continue to grow, I am monitoring: </p>
<ul>
<li>Open rate.</li>
<li>Click rate.</li>
<li>Forwarding rate/email sharing.</li>
<li>List growth rate. </li>
<li>Number of unsubscribes. </li>
<li>Spam complaints. </li>
</ul>
<p>Additionally, I will continue to generate customer feedback via surveys. </p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>I hope that my story of how I launched the WFH Bootcamp was helpful. </p>
<p>We covered why email is a great medium, the limitations of email, important considerations when writing content, early testing with users, and what to monitor in your email newsletter. </p>
<p>I will continue to monitor, iterate, and improve the emails - as I would with any software product. </p>
<p>Email has proven to be a fun and easy medium to learn and launch a new product in. It has allowed me to quickly launch a product that hopefully helps people be more productive and happy while working from home and it has been a wonderful learning experience so far. </p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What’s in an Email Header and Why Should You Care? ]]>
                </title>
                <description>
                    <![CDATA[ By Megan Kaczanowski Ever gotten a spam or phishing message from an email address you didn't recognize? Maybe someone offered you a free trip, asked you to send them bitcoin in exchange for personal photos, or just sent you an unwanted marketing emai... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/reading-email-headers/</link>
                <guid isPermaLink="false">66d4606ee39d8b5612bc0de7</guid>
                
                    <category>
                        <![CDATA[ cybersecurity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ email ]]>
                    </category>
                
                    <category>
                        <![CDATA[ email marketing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ information security ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 29 May 2020 04:06:00 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9ab8740569d1a4ca274f.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Megan Kaczanowski</p>
<p>Ever gotten a spam or phishing message from an email address you didn't recognize? Maybe someone offered you a free trip, asked you to send them bitcoin in exchange for personal photos, or just sent you an unwanted marketing email? </p>
<p>Have you wondered where those emails came from? Seen a spammer spoof your email address and wondered how they did it? </p>
<p>Email spoofing, or making an email appear as though the email came from a different address than it did (for example an email that appears to come from whitehouse.gov, but is actually from a scammer) is remarkably easy. </p>
<p>Core email protocols don't have any method for authentication, meaning that the 'from' address is basically just a fill-in-the-blank.</p>
<p>Usually when you get an email, it looks something like this:</p>
<pre><code>From: Name &lt;name@gmail.com&gt;
<span class="hljs-built_in">Date</span>: Tuesday, July <span class="hljs-number">16</span>, <span class="hljs-number">2019</span> at <span class="hljs-number">10</span>:<span class="hljs-number">02</span> AM
<span class="hljs-attr">To</span>: Me &lt;Me@freecodecamp.com&gt;
</code></pre><p>Below that is the subject and message.</p>
<p>But how do you know where that email really came from? Isn't there any additional data that can be analyzed? </p>
<p>What we're looking for is the full email headers — what you see above is just a partial header. This data will give us some additional information about where the email came from and how it reached your inbox. </p>
<p>If you want to look at your own email headers, here's how to access them on <a target="_blank" href="https://support.office.com/en-us/article/view-internet-message-headers-in-outlook-cd039382-dc6e-4264-ac74-c048563d212c">Outlook</a> and <a target="_blank" href="https://support.google.com/mail/answer/29436?hl=en">Gmail</a>. Most mail programs operate in a similar manner, and a simple Google search will tell you how to view headers on alternative mail services. </p>
<p>In this article we'll look at a set of real headers (though they're heavily redacted — I've changed hostnames, timestamps, and IP addresses).</p>
<p>We'll read the headers from top to bottom, but be aware that each new server adds their header to the top of the email body. This means we'll read each header from the final Message Transfer Agent (MTA) and work down to the first MTA to accept the message.</p>
<h2 id="heading-internal-transfers">Internal Transfers</h2>
<pre><code>Received: <span class="hljs-keyword">from</span> REDACTED.outlook.com (IPv6 Address) by REDACTED.outlook.com <span class="hljs-keyword">with</span> HTTPS via REDACTED.OUTLOOK.COM; Fri, <span class="hljs-number">25</span> Oct <span class="hljs-number">2019</span> <span class="hljs-number">20</span>:<span class="hljs-number">16</span>:<span class="hljs-number">39</span> +<span class="hljs-number">0000</span>
</code></pre><p>This first hop shows an HTTPS line, which means that the server didn't receive the message via standard SMTP and instead created the message from input it received on a web application.</p>
<pre><code>Received: <span class="hljs-keyword">from</span> REDACTED.outlook.com (IPv6Address) by REDACTED.outlook.com (IPv6Address) <span class="hljs-keyword">with</span> Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id <span class="hljs-number">15.1</span><span class="hljs-number">.1358</span><span class="hljs-number">.20</span>; Fri, <span class="hljs-number">25</span> Oct <span class="hljs-number">2019</span> <span class="hljs-number">20</span>:<span class="hljs-number">16</span>:<span class="hljs-number">38</span> +<span class="hljs-number">0000</span>

<span class="hljs-attr">Received</span>: <span class="hljs-keyword">from</span> REDACTED.outlook.com (IPv6Address) by REDACTED.outlook.office365.com (IPv6Address) <span class="hljs-keyword">with</span> Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id <span class="hljs-number">15.20</span><span class="hljs-number">.2385</span><span class="hljs-number">.20</span> via Frontend Transport; Fri, <span class="hljs-number">25</span> Oct <span class="hljs-number">2019</span> <span class="hljs-number">20</span>:<span class="hljs-number">16</span>:<span class="hljs-number">37</span> +<span class="hljs-number">0000</span> Authentication-Results: spf=softfail (sender IP is REDACTEDIP)smtp.mailfrom=gmail.com; privatedomain.com; dkim=pass (signature was verified)header.d=gmail.com;privatedomain.com; dmarc=pass action=noneheader.from=gmail.com;compauth=pass reason=<span class="hljs-number">100</span>Received-SPF: SoftFail (REDACTED.outlook.com: domain <span class="hljs-keyword">of</span> transitioning gmail.com discourages use <span class="hljs-keyword">of</span> IPAddress <span class="hljs-keyword">as</span> permitted sender)
</code></pre><p>These are the first two header blocks are internal mail transfers. You can tell that these were received by Office365 servers (outlook.com), and routed internally to the correct recipient. </p>
<p>You can also tell that the message is being sent via encrypted SMTP. You know this because the header lists "with Microsoft SMTP Server" and then specifies the TLS version it is using, as well as the specific cipher. </p>
<p>The third header block marks the transition from a local mail server to a mail filtering service. You know this because it went "via Frontend Transport" which is a Microsoft-Exchange specific protocol (and therefore it wasn't strictly SMTP). </p>
<p>This block also includes some email checks. Outlook.com's header is detailing their SPF/DKIM/DMARC results here. An SPF softfail means that this IP address isn't authorized to send emails on gmail.com's behalf. </p>
<p>"dkim=pass" means that the email is from its purported sender and was (most likely) not altered in transit.  </p>
<p>DMARC is a set of rules telling the mail server how to interpret SPF and DKIM results. Pass likely means that the email continues on to its destination.</p>
<p>For more on SPF, DKIM, and DMARC, check out <a target="_blank" href="https://www.freecodecamp.org/news/p/1fb5b1b8-7bd9-40fc-8a76-d64c979df748/www.freecodecamp.org/news/how-does-email-work/">this article</a>.</p>
<h2 id="heading-internalexternal-transition">Internal/External Transition</h2>
<pre><code>Received: <span class="hljs-keyword">from</span> Redacted.localdomain.com (IP address) byredacted.outlook.com (IP address) <span class="hljs-keyword">with</span> Microsoft SMTPServer (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id15<span class="hljs-number">.20</span><span class="hljs-number">.2305</span><span class="hljs-number">.15</span> via Frontend Transport; Fri, <span class="hljs-number">25</span> Oct <span class="hljs-number">2019</span> <span class="hljs-number">20</span>:<span class="hljs-number">16</span>:<span class="hljs-number">37</span> +<span class="hljs-number">0000</span>

Received-SPF: None (Redacted.localdomain.com: no senderauthenticity information available <span class="hljs-keyword">from</span> domain ofsender@gmail.com) identity=xxx; client-ip=IPaddress;receiver=Redacted.localdomain.com;envelope-<span class="hljs-keyword">from</span>=<span class="hljs-string">"sender@gmail.com"</span>;x-sender=<span class="hljs-string">"sender@gmail.com"</span>; x-conformance=sidf_compatible


Received-SPF: Pass (Redacted.localdomain.com: domain ofsender@gmail.com designates sending IP <span class="hljs-keyword">as</span> permittedsender) identity=mailfrom; client-ip=IPaddress2;receiver=Redacted.localdomain.com;envelope-<span class="hljs-keyword">from</span>=<span class="hljs-string">"sender@gmail.com"</span>;x-sender=<span class="hljs-string">"sender@gmail.com"</span>; x-conformance=sidf_compatible;x-record-type=<span class="hljs-string">"v=spf1"</span>; x-record-text=<span class="hljs-string">"v=spf1ip4:35.190.247.0/24 ip4:64.233.160.0/19 ip4:66.102.0.0/20ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:74.125.0.0/16ip4:108.177.8.0/21 ip4:173.194.0.0/16 ip4:209.85.128.0/17ip4:216.58.192.0/19 ip4:216.239.32.0/19 ~all"</span>
</code></pre><p>This is Google's SPF record - telling the receiving server that the email which says it is coming from gmail.com, is coming from a Google approved server.</p>
<pre><code>Received-SPF: None (redacted.localdomain.com: no senderauthenticity information available <span class="hljs-keyword">from</span> domain ofpostmaster@redatedgoogle.com) identity=helo;client-ip=IPaddress; receiver=Redacted.localdomain.com;envelope-<span class="hljs-keyword">from</span>=<span class="hljs-string">"sender@gmail.com"</span>;x-sender=<span class="hljs-string">"postmaster@.google.com"</span>;x-conformance=sidf_compatibleAuthentication-Results-Original: Redacted@localdomain.com; spf=Nonesmtp.pra=sender@gmail.com; spf=Pass smtp.mailfrom=sender@gmail.com;spf=None smtp.helo=postmaster@redacted.google.com; dkim=pass (signatureverified) header.i=@gmail.com; dmarc=pass (p=none dis=none) d=gmail.comIronPort-SDR: IronPort-PHdr: =X-IronPort-Anti-Spam-Filtered: trueX-IronPort-Anti-Spam-Result: =X-IronPort-AV: ;d=<span class="hljs-string">"scan"</span>X-Amp-Result: SKIPPED(no attachment <span class="hljs-keyword">in</span> message)X-Amp-File-Uploaded: False
</code></pre><p>This shows some additional SPF/DKIM/DMARC checks, as well as the results from an IronPort scan. </p>
<p>Ironport is a popular email filter used by many corporations to look for spam, viruses, and other malicious emails. It scans the links and attachments in the email and determines if the email is malicious (and should be dropped), if it is likely legitimate and should be delivered, or if it is suspicious in which case it can attach a header to the body which tells users to be wary of the email.</p>
<pre><code>Received: <span class="hljs-keyword">from</span> redacted.google.com ([IPAddress])by Redacted.localdomain.com <span class="hljs-keyword">with</span> ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; Fri, <span class="hljs-number">25</span> Oct <span class="hljs-number">2019</span> <span class="hljs-number">16</span>:<span class="hljs-number">16</span>:<span class="hljs-number">36</span> <span class="hljs-number">-0400</span>

<span class="hljs-attr">Received</span>: by redacted.google.com <span class="hljs-keyword">with</span> SMTP idfor recipient@localdomain.com; Fri, <span class="hljs-number">25</span> Oct <span class="hljs-number">2019</span> <span class="hljs-number">13</span>:<span class="hljs-number">16</span>:<span class="hljs-number">35</span> <span class="hljs-number">-0700</span> (PDT)

X-Received: by IPv6:: <span class="hljs-keyword">with</span> SMTP id; Fri, <span class="hljs-number">25</span> Oct <span class="hljs-number">2019</span> <span class="hljs-number">13</span>:<span class="hljs-number">16</span>:<span class="hljs-number">35</span> <span class="hljs-number">-0700</span> (PDT) Return-Path: sender@gmail.com

<span class="hljs-attr">Received</span>: <span class="hljs-keyword">from</span> senderssmacbook.fios-router.home (pool-.nycmny.fios.verizon.net. [IP address redacted])by smtp.gmail.com <span class="hljs-keyword">with</span> ESMTPSA id redacted IP(version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=<span class="hljs-number">128</span>/<span class="hljs-number">128</span>);Fri, <span class="hljs-number">25</span> Oct <span class="hljs-number">2019</span> <span class="hljs-number">13</span>:<span class="hljs-number">16</span>:<span class="hljs-number">34</span> <span class="hljs-number">-0700</span> (PDT)

<span class="hljs-attr">Received</span>: <span class="hljs-keyword">from</span> senderssmacbook.fios-router.home (pool-.nycmny.fios.verizon.net. [IP address redacted])by smtp.gmail.com <span class="hljs-keyword">with</span> ESMTPSA id redacted IP(version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=<span class="hljs-number">128</span>/<span class="hljs-number">128</span>);Fri, <span class="hljs-number">25</span> Oct <span class="hljs-number">2019</span> <span class="hljs-number">13</span>:<span class="hljs-number">16</span>:<span class="hljs-number">34</span> <span class="hljs-number">-0700</span> (PDT)
</code></pre><p>This section shows the internal hops the email took from the sender's initial device through gmail's routing system and to the outlook environment of the recipient. From this we can see that the initial sender was from a Macbook, using a home router, with Verizon Fios in NYC. </p>
<p>This is the end of the hops showing the route the email has taken from sender to recipient. Past this, you'll see the body of the email (and the headers you typically see like "from:", "to:", etc.), perhaps with some formatting based on the media type and email client (for example the MIME Version, content type, boundary, etc). It may also contain some user-agent information, which is details on what type of device sent the message. </p>
<p>In this case we already know that the sending device was a Macbook due to Apple's naming convention, but it may also contain details on the CPU type, version, even the browser and version which were installed on the device. </p>
<p>In some cases, but not all, it might also contain the IP address of the sending device (though many providers will hide that information without a subpoena).</p>
<h2 id="heading-what-can-email-headers-tell-you">What can email headers tell you?</h2>
<p>Email headers can help identify when emails are not being sent from their purported senders. They can provide some information on the sender - though it usually isn't enough to identify the true sender. </p>
<p>Law enforcement can often use this data to subpoena the information from the right ISP, but the rest of us can mostly just use it to help inform investigations, generally into phishing. </p>
<p>This process is made harder by the fact that headers can be faked by malicious servers or hackers. Without contacting each server's owner and individually verifying that the headers in your email match their SMTP logs, which is painstaking and time-consuming, you won't be certain the headers are accurate (other than the headers attached by your own mail servers). </p>
<p>Without contacting each server's owner and individually verifying that the headers in your email match their SMTP logs, which is painstaking and time-consuming, you won't be certain the headers are all accurate.. </p>
<p>DKIM, DMARC and SPF can all help with this process, but aren't perfect, and without them, there's no verification at all.</p>
<p>Don't want to analyze your own headers? <a target="_blank" href="https://mailheader.org/">This site</a> will do it for you.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Stop [Marketing] E-Mail Bouncebacks! How to Configure SPF, DMARC & DKIM ]]>
                </title>
                <description>
                    <![CDATA[ By Andreas Lopez Setup Requirements: Your Domain Name System (DNS) Editor (i.e. GoDaddy Admin that has the email addresses registered) 3rd Party e-mail Admin Accounts (e-mail Blast Service [Mailchimp, ConstantContact, etc.], Additional Mail Server y... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/bananas-stop-email-bouncebacks-spf-dmarc-dkim/</link>
                <guid isPermaLink="false">66d45d97052ad259f07e4a55</guid>
                
                    <category>
                        <![CDATA[ Backend Development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ #content marketing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ cybersecurity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Digital Marketing  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ email ]]>
                    </category>
                
                    <category>
                        <![CDATA[ email marketing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ newsletters ]]>
                    </category>
                
                    <category>
                        <![CDATA[ servers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ smtp ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sat, 22 Jun 2019 17:10:52 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2019/06/stop-email-bouncebacks-post-image.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Andreas Lopez</p>
<p><strong>Setup Requirements:</strong></p>
<ul>
<li>Your Domain Name System (DNS) Editor (i.e. GoDaddy Admin that has the email addresses registered)</li>
<li>3rd Party e-mail Admin Accounts (e-mail Blast Service [Mailchimp, ConstantContact, etc.], Additional Mail Server you might be using, etc.)</li>
</ul>
<p>You might be reading this because you want help resolving an error you just received. This error might be stating something about your DMARC records and that the e-mail was not authenticated. And most likely you attempted to e-mail someone with a ‘@gmail.com’ or ‘@yahoo.com’ address or similar free, big e-mail providers which have higher default guidelines than an e-mail server you would set up through your own company.</p>
<p>I was there too and struggled quite some time to get this figured out — not just what you need, but also how to get it done, the right way.</p>
<h3 id="heading-our-statistics-before-and-after-configuring-spf-dmarc-amp-dkim">Our Statistics before and after configuring SPF, DMARC &amp; DKIM:</h3>
<p>As you will be able to see in the following pictures these implementations show us that:</p>
<ul>
<li>Bounce Rate was 70% before implementation, a whole 21441 E-mails that never made it into the subscribers inbox.</li>
<li>After implementation the Bounce Rate was only 5.6%, down to only 1855 Bouncebacks.</li>
<li>The bouncebacks are not all just due to security, some e-mails are deleted or the subscriber made a typo (mail.com instead of gmail.com is a typical one).</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2019/06/ConstantContact-Before-After.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Constant Contact Bounce Statistics, Before &amp; After configuring SPF, DMARC &amp; DKIM.</em></p>
<h3 id="heading-enough-talk-about-how-important-the-implementation-is-lets-get-to-it">Enough talk about how important the implementation is - lets get to it!</h3>
<p>In order to be 100% compliant in terms of e-mail authentication, you need 3 things configured:</p>
<ul>
<li><strong>SPF (Sender Policy Framework):</strong> a framework used to prevent e-mail forgery aka Spoofing. Spoofing is when someone is pretending to be sent from your e-mail address.</li>
<li><strong>DKIM (DomainKeys Identified Mail):</strong> This will allow a server to send e-mails in your name while being authenticated to make sure it’s really you. For example, if you use MailChimp or ConstantContact for newsletter blasts and say it’s from ‘john@doecompany.com’, the e-mails will still be sent from MailChimp or ConstantContacts server. However, you verified with your Blast e-mail service that is indeed you and not someone pretending to be you. <strong>This is the most important one to set up correctly for businesses, as otherwise there will be a high bounce-back rate!</strong></li>
<li><strong>DMARC (Domain-based Message Authentication, Reporting, and Conformance):</strong> Also an Anti-Spoofing mechanism that will work in conjunction with SPF. Having one or the other is ineffective — you will need both to be properly protected.</li>
</ul>
<p>DNS Editor / DNS Zone Editor, GoDaddy Screenshot Examples (Login and navigate to your Admin Dashboard first):</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/0*RyXa5A0poh-LVZgw.png" alt="Image" width="549" height="72" loading="lazy">
<em>GoDaddy Manage Domains Dashboard Screenshot with Arrow pointing at Manage option. (1)</em></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/0*lPnjNy8Qd3T6d7lq.png" alt="Image" width="519" height="175" loading="lazy">
<em>GoDaddy Domains Dashboard Screenshot with the arrow pointing at Manage Zones option. (1)</em></p>
<p>Select the Domain you need to add the DNS entries to in the screen after clicking on Manage Zones.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/0*CK4w3j4dsw2ZE060.png" alt="Image" width="700" height="216" loading="lazy">
<em>GoDaddy DNS Zone Editor Admin Dashboard Screenshot with Arrow pointing on the Add Option. (1)</em></p>
<p>On the bottom of your records on the right-hand side, you will see an ‘Add’ button which will lead to the following dialog menu in which you will enter the SPF, DMARC &amp; DKIM entries each individually:</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/0*lZzVRpdjY3z0dq53.png" alt="Image" width="600" height="207" loading="lazy">
_GoDaddy Add DNS Entry Admin Dashboard Screenshot with button pointing at Save button and TXT as type, <em>dmarc as Host and the required value under TXT Value highlighted. (1)</em></p>
<p>For other guides for Zone Editors, just go to the knowledge base/support center of your Domain Provider.</p>
<h3 id="heading-setting-up-spf">Setting up SPF:</h3>
<p>The SPF is the easiest to set up. You will need 2 things:</p>
<ol>
<li>Your DNS Editor (i.e. GoDaddy Admin Portal)</li>
<li>The IP address of your e-mail server</li>
</ol>
<p>After accessing your DNS Editor (also called DNS Zone Editor in CPanel), you want to create a new TXT entry. In this TXT Entry, you should have 3 possible fields: Host, TXT Value / Value &amp; TTL (Time-To-Live). What you will enter in these fields is the following (some details might vary, <strong>this is based on a GoDaddy installation</strong>):Host: @ TXT Value: v=spf1 +a +mx +ip4:~allTTL: 1 Hour</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*5dQV9o1PaFDrABCi3ISHVg.png" alt="Image" width="800" height="217" loading="lazy">
<em>GoDaddy DNS Sample TXT Entry for the SPF settings as described above.</em></p>
<p><strong>Explanation / Meaning of these settings:</strong></p>
<p>‘@’ is the designation within GoDaddy that refers to the Domain you are working in. So if you are working inside ‘doecompany.com’ you could replace ‘@’ with ‘doecompany.com’ and the result would be the same. However, it is best practice to use the ‘@’ symbol instead in the case of GoDaddy.</p>
<p> is the IP of where your e-mails are being sent from. This is not necessarily the same IP that the actual website is hosted on.</p>
<p><strong>+a:</strong> Includes A record</p>
<p><strong>+mx:</strong> Includes Mail Server record</p>
<p><strong>+ip4:</strong> Designates from which IPv4 server</p>
<p><strong>~all:</strong> Records outside of the prior declared ones will fail.</p>
<p><strong>TTL = 1 hour</strong> (or 3600 seconds): Time-To-Live, or how often this should expire. If you were to change e-mail servers, you would be glad that there is only a maximum gap of 1 hour of not being authenticated.</p>
<h3 id="heading-setting-up-dkim">Setting up DKIM:</h3>
<p>This is the most tedious of the three to set up and the most critical one. You will authenticate the 3rd party to send on behalf of your e-mail name, i.e. ‘john@doecompany.com’.</p>
<p>I have 2 DKIMs currently set up:</p>
<ol>
<li>For my actual Mail Server which lives on a different server than my actual website (this is more common in Enterprise environments).</li>
<li>For my e-mail newsletter blast service provider (ConstantContact in this case, it could easily be Mailchimp or someone else in your case).</li>
</ol>
<p>For both scenarios, your legwork is the same. You will have to contact the e-mail support of your Mail Server or Third Party e-mail sending service and have them install the DKIM on their end, for your account.</p>
<p>This is completely out of your hands and typically takes them 1–2 days to complete this task. Basically what is happening is that they will register and install an RSA of at least 1024-Bit encoding (2048 is better) on their server.</p>
<p>After they got it set up, they will send you a Public Key that you will be using in the next step to set up your DKIM record.</p>
<p>Just like with the SPF &amp; DMARC records you will access your DNS Editor (also called DNS Zone Editor in CPanel), and create a new TXT entry. In this TXT Entry, you should have 3 possible fields: Host, TXT Value / Value &amp; TTL (Time-To-Live). What you will enter in these fields is the following (some details might vary, this is based on a GoDaddy installation with the e-mails being hosted on inmotionhosting.com and ConstantContact as Newsletter service). Remember to make 1 separate entry per DKIM record:Host: ._domainkeyTXT Value: v=DKIM1; k=rsa; p=TTL: 1 Hour</p>
<p>Make sure not to leave any spaces after the ‘=’ symbols.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*nj_ycXzk_LsASRBfcw7b3A.png" alt="Image" width="800" height="216" loading="lazy">
<em>GoDaddy DNS Sample TXT Entry for the DKIM settings as described above.</em></p>
<p><strong>Explanation / Meaning of these settings:</strong></p>
<p>The host can be a name or number and is truly unique to the third party. When an e-mail is being sent on your behalf, that e-mail will have that name or number included in the header. That is the record it will be looking under your domain for.</p>
<p>In layman’s terms and our example, the recipient server would go to ‘doecompany’s DNS records and look if what the 3rd party claims to be true will be there. Only if the public key properly validates with the key on their server, the e-mails will be sent out.</p>
<p><strong>v=DKIM1:</strong> Simply specifies the version of DKIM being used to clarify further what to look for.</p>
<p><strong>k=rsa:</strong> RSA is the most typical one to use as the Key (k). Your 3rd party might opt-in to use something else. But RSA with a 2048 bit encryption is the most secure option you can have at the moment. 1024 bit is good, too.</p>
<p><strong>p=:</strong> Instead of ‘’ you would be provided with either a 1024 bit or 2048 bit string of seemingly random text and numbers or other values suited to whatever encryption the 3rd party decided to utilize.</p>
<p><strong>TTL = 1 hour</strong> (or 3600 seconds): Time-To-Live, or how often this should expire. If you were to change e-mail servers, you would be glad that there is only a maximum gap of 1 hour of not being authenticated.</p>
<h3 id="heading-setting-up-dmarc">Setting up DMARC:</h3>
<p><strong>Reminder:</strong> In order for the DMARC to do its job, you MUST setup SPF AND DKIM before. Because DMARC verifies SPF &amp; DKIM settings and whether or not the sender suits these settings and is not a spoofer. If SPF &amp; DKIM are not set up, DMARC won’t work and will result in rejected e-mails.</p>
<p>Just like with the SPF records you will access your DNS Editor (also called DNS Zone Editor in CPanel), and create a new TXT entry. In this TXT Entry, you should have 3 possible fields: Host, TXT Value / Value &amp; TTL (Time-To-Live). What you will enter in these fields is the following (some details might vary, this is based on a GoDaddy installation with the e-mails being hosted on inmotionhosting.com):Host: _dmarcTXT Value: v=DMARC1;p=reject;sp=none;adkim=r;aspf=r;pct=100;fo=0;rf=afrf;ri=86400TTL: 1 Hour</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*TvOQkx-VHgLLx7o831YsAg.png" alt="Image" width="800" height="213" loading="lazy">
<em>GoDaddy DNS Sample TXT Entry for the DMARC settings as described above.</em></p>
<p><strong>Explanation / Meaning of these settings:</strong></p>
<p>The Host is declared as ‘_dmarc’ because within GoDaddy it will automatically add ‘.johndoe.com’ as a subdomain. This means when an e-mail is being sent out, the DMARC will always be checked under that selector against your domain. If this is not set up properly as ‘_dmarc’, the e-mail servers won’t be able to find your DMARC entry and will automatically fail your e-mail as they believe there is no entry to begin with.</p>
<p><strong>v=DMARC1:</strong> Declares the version of the DMARC to clarify what is being used and make authentication more legitimate.</p>
<p><strong>p=reject:</strong> E-mails will be rejected from the recipient e-mail server if they don’t match the DMARC records.</p>
<p><strong>sp=none:</strong> Do not check if subdomains and the main domain have aligned settings; this is optional.</p>
<p><strong>adkim=r:</strong> Whether to be strict (s) or relaxed (r) with the DKIM identifier settings; relaxed is the default.</p>
<p><strong>aspf=r:</strong> Whether to be strict (s) or relaxed (r) with the SPF identifier settings; relaxed is the default.</p>
<p><strong>pct=100:</strong> 100 percent of e-mails are going to be affected by the DMARC. Integer values between 1 to 100 only. The smaller set would make sense only for testing; should be 100 for security purposes.</p>
<p><strong>fo=0:</strong> A DMARC error report is created if SPF &amp; DKIM fail to be authenticated. 0 is the default value. Others are 1, d and s. 1 is if either one fails, to generate a record. d if the signature failed evaluation. s if SPF evaluation failed.</p>
<p><strong>rf=afrf:</strong> The formatting for the message failure reports. afrf is the only supported value at the point of this writing.</p>
<p><strong>ri=86400:</strong> How many seconds passed between sending the report to the sender. 86400 is default which is 24 hours or 1 day. Many of the major mailbox providers such as Gmail, Yahoo, etc. will send more than one report a day.</p>
<p><strong>TTL = 1 hour</strong> (or 3600 seconds): Time-To-Live, or how often this should expire. If you were to change e-mail servers, you would be glad that there is only a maximum gap of 1 hour of not being authenticated.</p>
<p>And that is how you properly authenticate your e-mails. I hope this took some of the mystery and complication out for you. You will be on your way of not getting those troublesome kickbacks from your mailer-daemon anymore!</p>
<hr>
<p><strong>Author:</strong></p>
<p>Andreas Lopez — <a target="_blank" href="https://www.linkedin.com/in/andreaslopez/">https://www.linkedin.com/in/andreaslopez/</a></p>
<p><strong>Editors:</strong></p>
<p>Stevan Pupavac — <a target="_blank" href="https://www.linkedin.com/in/stevan-pupavac/">https://www.linkedin.com/in/stevan-pupavac/</a></p>
<p>Frederick Alcantara — <a target="_blank" href="https://www.linkedin.com/in/frederick-alcantara/">https://www.linkedin.com/in/frederick-alcantara/</a></p>
<p><strong>Sources:</strong></p>
<ol>
<li>GoDaddy Screenshots by DMARCanalyzer.com: <a target="_blank" href="https://www.dmarcanalyzer.com/dmarc/dmarc-record-setup-guides/dmarc-setup-guide-godaddy/">https://www.dmarcanalyzer.com/dmarc/dmarc-record-setup-guides/dmarc-setup-guide-godaddy/</a></li>
</ol>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to design a cold email for a CEO with a 100% read, click, and response rate ]]>
                </title>
                <description>
                    <![CDATA[ By Theo Strauss The Emailer’s Guide To The Galaxy: Part II As I explained in my last post, I’m 17, so my network isn’t too big just yet. For me, cold emails are the easiest and most direct way to reach a founder. Over the past year, I’ve sent over ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-design-a-cold-email-for-a-ceo-with-a-100-read-click-and-response-rate-84edb1b2603b/</link>
                <guid isPermaLink="false">66c35195d58e4fdd567d5186</guid>
                
                    <category>
                        <![CDATA[ business ]]>
                    </category>
                
                    <category>
                        <![CDATA[ email marketing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ startup ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 16 Jul 2018 14:20:38 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*5GNIcAIsWjWRFN5iKN4fHg.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Theo Strauss</p>
<h4 id="heading-the-emailers-guide-to-the-galaxy-part-ii">The Emailer’s Guide To The Galaxy: Part II</h4>
<p>As I explained in my last post, I’m 17, so my network isn’t too big just yet. For me, cold emails are the easiest and most direct way to reach a founder. Over the past year, I’ve sent over one hundred emails to CEO’s, founders, and heads of design, and have gotten a response from over 80% of them.</p>
<p>My emails started out unconventionally — filled with long paragraphs, massive intros, and frankly, very little about the recipient. But, with A/B tests, just the right amount of analytics, and persistence, I was able to notice what stuck.</p>
<p>Most people just assume they’re bad writers, others think it takes a degree in communications. Not me. In this post, I’m going to give you a play by play handbook on what I learned in the past year. And, by the end, you should be able to lock down a meeting with whomever you want.</p>
<h3 id="heading-the-email-address">The email address</h3>
<p>Depending on whom you’re emailing, the address you choose to send your email to can decide your fate.</p>
<p>Why? I get into this in the first post of this series - <a target="_blank" href="https://medium.freecodecamp.org/how-to-find-any-ceos-email-address-in-minutes-70dcb96e02b0">How to find any CEO’s email address in minutes</a>. I touch on deciding which email address to use in the first part of that post. You should probably read that before getting into this one.</p>
<h3 id="heading-composing-the-email">Composing the email</h3>
<h4 id="heading-the-subject-line">The subject line</h4>
<p>In the world of email, the battle starts before your message is even opened.</p>
<p>It’s your subject line against the rest in their inbox. You’re a mere peasant among the hundreds of others vying for the king’s attention. To get in front of the throne, to have the king hear your thoughts, the subject line of your email has to be perfect. There are two ways of going about this:</p>
<ol>
<li>The trojan horse</li>
<li>Knocking on the front door</li>
</ol>
<p>The trojan horse strategy is another name for camouflaging. Here’s an example:</p>
<blockquote>
<p>What do you think?</p>
</blockquote>
<p>Remember, with hundreds of emails coming in a day, the CEO you’re emailing skims their email for the ones that need the most attention. This subject line blends perfectly into the myriad of other work emails they’re receiving.</p>
<p>“What do you think?” can apply to a proposal that needs looking over, a meeting that needs confirming, or a random question. Consistently clicking on subject lines similar to this one might get your email opened.</p>
<p>Knocking on the front door is the complete opposite of the trojan horse. These types of subject lines are perfect for a pitch or if you stand out and can take advantage of that. Here’s an example:</p>
<blockquote>
<p>$10 million in revenue 1 month in, now I need your help</p>
</blockquote>
<p>This is complete clickbait, but it can pay off in big ways. The rest of this post will guide you in keeping their attention now that you’ve grabbed it.</p>
<h4 id="heading-the-greeting">The greeting</h4>
<p>“Hi,” “hey,” “hello,” “what’s up,” “yo,” “dear,” “good morning,” “whomever it may concern”. <strong>The first two words of your email set the tone for your entire note.</strong></p>
<p>That’s why deciding which greeting to use is crucial. The one I’ve found the most success with is “Hi [first name],” and <a target="_blank" href="http://www.businessinsider.com/the-perfect-way-to-start-an-email-and-greetings-you-should-avoid-2016-5">Business Insider agrees</a>. This is because it’s not too casual (For example, “hey” or “what’s up”) and it’s not too formal such as “dear” or “whomever it may concern.”</p>
<p>It’s ultimately up to the person you’re emailing, though. When they respond, they might use a different greeting than you. From then on, use their greeting while emailing with them. If they respond with the same greeting, you hit a home run.</p>
<h4 id="heading-the-first-line">The first line</h4>
<p>You’ve convinced the person you’re emailing into looking at your note and you set the tone with the greeting. Now, it’s time to grab their attention.</p>
<p>Here’s a look at the line I use:</p>
<blockquote>
<p>I’m not a normal <strong>kid</strong>. I’m <strong>17</strong>, go to the Dalton School, right <strong>uptown from [insert their company here]</strong>, and I’d love to ask a <strong>question</strong>.</p>
</blockquote>
<p>Let’s break that down. In one sentence, I’ve said:</p>
<ol>
<li>Who I am</li>
<li>Why I’m different</li>
<li>How we’re distantly related</li>
<li>What my purpose is with this email</li>
</ol>
<p>CEO’s don’t have much time, and they have even less for people they don’t know. Captivating them in the first sentence is key.</p>
<p>The bolded words are the most important. Being 17, a kid, sets up who I am and what makes me differenct. Because I’m local to where they are, it gives them an incentive to learn why I’m reaching out to them. And, instead of just saying “Hi, nice to meet you”, I’m declaring that I have an intention.</p>
<p>Let’s look at an example opener:</p>
<blockquote>
<p>I’m a junior at Stanford, 95% of the campus is on my app, and I wanted to talk about YC.</p>
</blockquote>
<p>The same four keys appear in this sentence. The sender is a Stanford student, they’re different because of the number of users they have, the example recipient is a Stanford alum, and has gone through YCombinator.</p>
<p>The first sentence is setting the stage for the rest of the email and offers a quick preview from the inbox. On that topic, here’s how much preview space there is for different email clients.</p>
<p>Apple Mail: 140 characters<br>Gmail: 110 characters<br>AOL: 75 characters<br>Outlook: 55 characters</p>
<p>The example above has 88 characters, and if you include the subject line, it’s 109, just below Gmail’s cap.</p>
<h4 id="heading-the-bio">The bio</h4>
<p>Here’s one thing to keep in mind while writing an email: just like it was a fight to get your email clicked on, it’s still a fight to have them read line after line of the body. Captivating your reader with every paragraph is essential.</p>
<p><strong>The key to making the CEO read each line is to draw connections between the two of you.</strong> With more in common, the recipient will want to keep reading, just to see what sets you apart. It’s exactly like how getting a job is easier if you went to the same school as the founder of the company.</p>
<p>The bio is the place to do that. While making connections, you’re also touting everything you’ve done that’s impressive and how you’ve gotten to where you are.</p>
<p>The trick to making those connections in each paragraph is research. I recommend you find five links about the founder, CEO, or person you’re reaching out to before even starting your draft:</p>
<ul>
<li>1 interview with them</li>
<li>2 articles covering them</li>
<li>Their website / about page</li>
<li>Their LinkedIn (past companies, education, volunteer work, and contact info)</li>
</ul>
<p>On each page, you’re bound to find one piece of information that helps your case. Whether it’s a shared city or school, or even if you have a friend who worked for a company they did, it’s helpful to put that in your bio.</p>
<p>Here’s an example of the bio I used for my last email:</p>
<blockquote>
<p><strong>New York</strong> has taught me to take a deep interest in the world around me: the energy, the innovation, and the perspectives.</p>
<p>A couple years ago I started to brand companies, one of which <strong>Hillary Clinton</strong> Instagrammed about, which led me to start designing apps, creating solutions to New Yorkers’ daily problems.</p>
<p>To bring them to life, I taught myself to code, which landed me at <strong>WWDC</strong> as a scholar.</p>
<p>Meeting founders there, I started to conduct case studies, looking at how design can help solve problems the future poses, looking at how <strong>ride-hailing</strong> can be made more accessible.</p>
<p>After WWDC, during the summer, I <strong>Citi Biked</strong> across the Brooklyn Bridge every day to intern at a startup in DUMBO.</p>
<p>And last fall, I <strong>trained to run</strong> a marathon, running every day in Central Park. In November, I crossed the finish line in Cape Cod.</p>
</blockquote>
<p>You’re probably thinking, “that’s one long bio.” In reality, the more in common you two have there, the more they’re willing to read.</p>
<p>Let’s break this bio down. The person I emailed 1) lives in New York and was on the former mayor’s communications &amp; marketing team, 2) worked on Hillary’s campaign, 3) had tagged WWDC on her Instagram, 4) is at Citi Bike right now working on alternative transit, and 5) is a runner.</p>
<p>Five things in common from five websites, all in chronological order. This makes the email flow, progressing from the past to the present.</p>
<h4 id="heading-the-flattery-and-the-ask">The flattery and the ask</h4>
<p>After making the connection between the founder and yourself, now is the point to make the connection between you and the company they founded/run.</p>
<p><strong>Showing why you love their company so much is the perfect stage to deliver your ask.</strong> This section is short, but it is impactful. Before getting into <em>why</em> this is so successful, let’s look at an example:</p>
<blockquote>
<p>Your work and mindset, frankly, inspire me. As a co-founder of a startup and an aspiring designer, I look up to you, your past work, and [company name].</p>
<p>Your platform has changed the way people communicate, but in a way none has before: it’s done so with design.</p>
<p>Now, I want to help [company name] inspire more people by joining your interaction team. With my background being intertwined with the word design, itself, I’m positive that I can truly help make a difference. I know both sides of the coin, the engineering, and the design side, and I hope to bring that with me.</p>
</blockquote>
<p>In three short paragraphs, I explain why I think the CEO is so special, why I think their company is so special, and why I’m emailing in the first place.</p>
<p>This works because, in the first paragraph, the flattery makes the recipient excited. In the second, the CEO sees a true understanding of their company. And by the third, the quick acceleration has brought the reader to the ask in a good mood, allowing them to absorb <em>why</em> it was worth getting to the point of this email and what separates the writer from the average.</p>
<p>As you might’ve noticed in this email, and this Medium post, paragraphs are kept to two or three sentences max.</p>
<p><strong>The shorter paragraphs make the email feel shorter as a whole.</strong> Instead of endless scrolling, the reader feels as if they are making progress after each paragraph ends.</p>
<p>Longer paragraphs also lead to skimming, and somewhere in the middle sentences, the reader loses focus.</p>
<p>Finally, as most CEO’s read their email on a mobile device, <strong>long paragraphs look long, and short paragraphs look normal.</strong></p>
<h3 id="heading-the-conclusion">The conclusion</h3>
<p>Just how the email accelerated to its apex quickly, it needs to decelerate quickly as well. Once the reader knows the point of your email, they don’t care much about the rest. So in the conclusion, you need to wrap up and get out.</p>
<blockquote>
<p>I’d be thrilled to hear your thoughts and would love to continue this conversation. My resume is attached and reference letters are included in it. My portfolio is just my website, so that’s linked as well. Let me know what you think.</p>
</blockquote>
<p>This sums up everything you need, you can even copy and paste. The reason this works is that it continues the positive attitude and excitement while offering further reading, like a resume or portfolio.</p>
<h4 id="heading-the-signature">The signature</h4>
<p>Similar to when talking about the first line, many options are available to sign off with.</p>
<p>“All the best,” “best,” “thanks a ton,” “thanks,” “cheers,” “sincerely,” and a simple dash are some examples.</p>
<p>Full disclosure, I use “cheers,” but Business Insider recommends “thanks.” Look at <a target="_blank" href="http://www.businessinsider.com/best-way-to-end-an-email-2017-2">their do’s and don’ts</a> for this one.</p>
<h4 id="heading-the-links">The links</h4>
<p>Just like five links were recommended in research, five links are recommended for the signature. After testing as few as one link to as many as six, I’ve found it’s a in perfect balance. You should add your:</p>
<ul>
<li>Website/portfolio/Github</li>
<li>Resume</li>
<li>LinkedIn</li>
<li>Email</li>
<li>Phone number</li>
</ul>
<p>Formatting tip: put a space between the first three and the last two, in order to separate your personal links from contact info.</p>
<h4 id="heading-the-send-button-dont-press-it-yet">The send button (don’t press it yet!)</h4>
<p>One last thing: before pressing the send button, you need to prepare the war room.</p>
<p><strong>If you send an email without a tracker or the right analytics, your odds of getting a response go down significantly.</strong> So, in my <a target="_blank" href="https://medium.freecodecamp.org/how-to-send-an-email-the-right-way-track-follow-up-and-get-a-response-5a607ae45797">next post</a>, I’ll cover how to ensure a response by seeing when they read your email, what they click, and how that can inform what your follow up should look like.</p>
<p>If you liked this post, hold down that ? icon (you can go up to 50, you know). Stay tuned for the next post and the one after that, which will go into tracking the progress of your email.</p>
<p><a target="_blank" href="http://medium.com/@theostrauss">Follow my Medium</a> to learn more about design from a new perspective, literally. For the next few months, I’m diving into how design will intersect with the future. On this page, you’ll see case studies looking into self-driving cars and posts highlighting interfaces that are breaking boundaries in the world of UI/UX.</p>
<p>You can also catch me on <a target="_blank" href="http://instagram.com/theostrauss">Instagram</a> and <a target="_blank" href="http://twitter.com/theodorestrauss">Twitter</a>!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Sending emails with Amazon SES ]]>
                </title>
                <description>
                    <![CDATA[ By Kangze Huang The Complete AWS Web Boilerplate — Tutorial 3 Table of Contents Part 0: Introduction to the Complete AWS Web Boilerplate Part 1: User Authentication with AWS Cognito (3 parts) Part 2: Saving File Storage Costs with Amazon S3 (1 part... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/sending-emails-with-amazon-ses-7617e83327b6/</link>
                <guid isPermaLink="false">66c35e79b8711219e1e72dea</guid>
                
                    <category>
                        <![CDATA[ AWS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ email marketing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Node.js ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Startups ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 20 Mar 2017 02:49:59 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*6qHAynt7vd0MQr7Yut0LVA.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Kangze Huang</p>
<h4 id="heading-the-complete-aws-web-boilerplate-tutorial-3">The Complete AWS Web Boilerplate — Tutorial 3</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/APBEF5hr2WpoHLy0DEuLKJV2GzmYTubut78Q" alt="Image" width="800" height="283" loading="lazy"></p>
<h3 id="heading-table-of-contents">Table of Contents</h3>
<blockquote>
<p><strong>Part 0:</strong> <a target="_blank" href="https://medium.com/@kangzeroo/the-complete-aws-web-boilerplate-d0ca89d1691f#.3eqpvcjsy">Introduction to the Complete AWS Web Boilerplate</a></p>
<p><strong>Part 1:</strong> <a target="_blank" href="https://medium.com/@kangzeroo/user-management-with-aws-cognito-1-3-initial-setup-a1a692a657b3#.cbkz7b2jp">User Authentication with AWS Cognito</a> (3 parts)</p>
<p><strong>Part 2:</strong> <a target="_blank" href="https://medium.com/@kangzeroo/amazon-s3-cloud-file-storage-for-performance-and-cost-savings-8f38d7769619#.l9so2hk00">Saving File Storage Costs with Amazon S3</a> (1 part)</p>
<p><strong>Part 3:</strong> <a target="_blank" href="https://medium.com/@kangzeroo/sending-emails-with-amazon-ses-7617e83327b6#.5nhcrr609">Sending Emails with Amazon SES</a> (1 part)</p>
<p>Part 4: Manage Users and Permissions with AWS IAM <strong>[Coming Soon]</strong></p>
<p>Part 5: Cloud Server Hosting with AWS EC2 and ELB<strong>[Coming Soon]</strong></p>
<p>Part 6: The MongoDB Killer: AWS DynamoDB <strong>[Coming Soon]</strong></p>
<p>Part 7: Painless SQL Scaling using AWS RDS <strong>[Coming Soon]</strong></p>
<p>Part 8: Serverless Architecture with Amazon Lambda <strong>[Coming Soon]</strong></p>
</blockquote>
<p>Download the Github <a target="_blank" href="https://github.com/kangzeroo/Kangzeroos-Complete-AWS-Web-Boilerplate/tree/SES">here</a>.</p>
<h3 id="heading-setup">Setup</h3>
<p>Sending emails with Amazon SES is really straightforward. Let’s start at the set-up. Go to Amazon SES and click <strong>Email Addresses</strong> in the sidebar. Then click <strong>Verify a New Email Address</strong> and enter an email you want to use for messaging in the app.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/-Mx1fdq0M7OF63l3-3Jmc0fQHrLl8jR56nbh" alt="Image" width="800" height="214" loading="lazy"></p>
<p>Now go to your email provider and click the verification link. After verifying, go back to Amazon SES <strong>Email Addresses</strong> tab. You should now see your email verified.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/KgdxVyP4QlP-XpKRFG-aUpjn2Wuj5VH1-gSC" alt="Image" width="800" height="230" loading="lazy"></p>
<p>This was necessary for 2 reasons. First is that we need an email for sending a message, and the second is because we are in a sandbox environment. A sandbox environment means you can only send and receive emails from verified addresses, and prevents you from spamming people. This is all the set-up we need for this boilerplate.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/wRQoOk9N4QQSCM6Slimww-YrZhMrWzi2-KWR" alt="Image" width="800" height="498" loading="lazy"></p>
<p>If you want be able to send emails to any email address, you need to make a written request to Amazon to graduate from the sandbox environment. To do this, navigate to the top-right hand corner at <strong>Support</strong> &amp;<strong>gt; Support Cen</strong>ter.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/ErZNvtZKAWPsUVrhSHje-JmjlseahbCJhi1V" alt="Image" width="800" height="174" loading="lazy"></p>
<p>At this next screen, click <code>Create case</code>.</p>
<p>This is a straightforward form, but we’ll briefly explain. Select <strong>Service Limit Increase</strong> and set the <strong>Limit Type</strong> to <strong>SES Sending Limits</strong>. Now create 2 requests, one where <strong>Limit</strong> is <strong>Desired Daily Sending Quota</strong> (how many emails can be sent in one day), and the other where <strong>Limit</strong> is <strong>Desired Maximum Send Rate</strong>. Set the <strong>New limit value</strong> to the amount that you need. Finally, optionally set the Mail Type as it increases you odds of approval. Use transactional if your emails are generated as a request of a user’s activity. There are others available for other use cases.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/FqkYQdVUxsfCm232bHtQlCbCNltKdDoh57p8" alt="Image" width="800" height="600" loading="lazy"></p>
<p>The rest of the request is easy. Make sure you agree to comply with the Terms of Service, and you have a process to handle <a target="_blank" href="http://docs.aws.amazon.com/ses/latest/DeveloperGuide/best-practices-bounces-complaints.html">bounces and complaints</a> (for when users mark your email as spam). Finally, give a brief explanation of your use case.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/in92mh4YL5eNVCjDz6Iy96b7jhWP3xZ222Fv" alt="Image" width="800" height="568" loading="lazy"></p>
<p>Submit your code and you should get an email from Amazon with the results of your service increase request. Once approved, your app can send messages to any email.</p>
<h3 id="heading-the-code">The Code</h3>
<p>We’re ready to dig into the code! Go to <code>App/src/api/aws/aws_ses.js</code> where the bulk of the code resides. Let’s take a look at the main function <code>sendAWSEmail()</code>:</p>
<pre><code><span class="hljs-keyword">export</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">sendAWSEmail</span>(<span class="hljs-params">email, message</span>)</span>{ <span class="hljs-keyword">const</span> ses = <span class="hljs-keyword">new</span> AWS.SES({  <span class="hljs-attr">region</span>: <span class="hljs-string">'us-east-1'</span> }) <span class="hljs-keyword">const</span> p = <span class="hljs-keyword">new</span> <span class="hljs-built_in">Promise</span>(<span class="hljs-function">(<span class="hljs-params">res, rej</span>)=&gt;</span>{  <span class="hljs-keyword">if</span>(!email|| message){   rej(<span class="hljs-string">'Missing user email or message content'</span>)  }<span class="hljs-keyword">else</span>{   <span class="hljs-keyword">const</span> params = createInquiryParamsConfig(email, message)   <span class="hljs-comment">// console.log('Sending email with attached params!')   AWS.config.credentials.refresh(function(){    // console.log(AWS.config.credentials)    ses.sendEmail(params, function(err, data) {      if(err){        // console.log(err, err.stack); // an error occurred        rej(err)      }else{       // console.log(data);           // successful response     res('Success! Email sent')      }    })   })  } }) return p}</span>
</code></pre><p>This is extremely straightforward. We receive two arguments, an email to send to, and a message to be sent. The first thing we do in this function is instantiate the AWS SES object for interacting with AWS by simply passing in the region. Next we check if there is a recipient email and a message. If both are provided, then we can actually send the email.</p>
<p>Assuming we have both a recipient email and message, we will create a <code>params</code> object for AWS SES to read for all the info &amp; options necessary. This <code>params</code> object is created with <code>createInquiryParamsConfig()</code>. Before we dive into that rabbit hole, let’s just quickly finish up explaining the rest of <code>sendAWSEmail()</code>. We refresh AWS Cognito user’s credentials (that we set with AWS Cognito, explained in my <a target="_blank" href="https://medium.com/@kangzeroo/user-management-with-aws-cognito-1-3-initial-setup-a1a692a657b3#.ykdx6xqx2">other tutorial</a>) and call <code>ses.sendEmail</code> with <code>params</code> and a response callback passed in. Reject the promise if there is an error, and resolve with a success message if there is no error. <code>ses.sendEmail</code> is the only AWS function we will use, and everything else is we need is determined in <code>params</code>.</p>
<p>Now let’s see how to make <code>params</code> with <code>createInquiryParamsConfig()</code>.</p>
<pre><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">createInquiryParamsConfig</span>(<span class="hljs-params">email, message</span>)</span>{ <span class="hljs-keyword">const</span> params = {   <span class="hljs-attr">Destination</span>: {      <span class="hljs-attr">BccAddresses</span>: [],     <span class="hljs-attr">CcAddresses</span>: [],     <span class="hljs-attr">ToAddresses</span>: [ email ]   },   <span class="hljs-attr">Message</span>: {      <span class="hljs-attr">Body</span>: {        <span class="hljs-attr">Html</span>: {         <span class="hljs-attr">Data</span>: generateHTMLInquiryEmail(landlordEmail, message),         <span class="hljs-attr">Charset</span>: <span class="hljs-string">'UTF-8'</span>       }     },     <span class="hljs-attr">Subject</span>: {        <span class="hljs-attr">Data</span>: <span class="hljs-string">'Kangzeroos Boilerplate says hi '</span> + email,       <span class="hljs-attr">Charset</span>: <span class="hljs-string">'UTF-8'</span>     }   },   <span class="hljs-attr">Source</span>: <span class="hljs-string">'yourApp@gmail.com'</span>,    <span class="hljs-attr">ReplyToAddresses</span>: [ <span class="hljs-string">'yourApp@gmail.com'</span> ],   <span class="hljs-attr">ReturnPath</span>: <span class="hljs-string">'yourApp@gmail.com'</span> } <span class="hljs-keyword">return</span> params}
</code></pre><p>Pretty straightforward, we pass in <code>email</code> and <code>message</code>, and return a big javascript object. All the values you see here are necessary, but you can add a ton of other optional configurations too. The function we must pay attention to is <code>generateHTMLInquiryEmail()</code>. Let’s look at that.</p>
<pre><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">generateHTMLInquiryEmail</span>(<span class="hljs-params">email, message</span>)</span>{ <span class="hljs-keyword">return</span> <span class="hljs-string">`  &lt;!DOCTYPE html&gt;  &lt;html&gt;    &lt;head&gt;      &lt;meta charset='UTF-8' /&gt;      &lt;title&gt;title&lt;/title&gt;    &lt;/head&gt;    &lt;body&gt;     &lt;table border='0' cellpadding='0' cellspacing='0' height='100%' width='100%' id='bodyTable'&gt;      &lt;tr&gt;          &lt;td align='center' valign='top'&gt;              &lt;table border='0' cellpadding='20' cellspacing='0' width='600' id='emailContainer'&gt;                  &lt;tr style='background-color:#99ccff;'&gt;                      &lt;td align='center' valign='top'&gt;                          &lt;table border='0' cellpadding='20' cellspacing='0' width='100%' id='emailBody'&gt;                              &lt;tr&gt;                                  &lt;td align='center' valign='top' style='color:#337ab7;'&gt;                                      &lt;h3&gt;<span class="hljs-subst">${message}</span>&lt;/h3&gt;                                  &lt;/td&gt;                              &lt;/tr&gt;                          &lt;/table&gt;                      &lt;/td&gt;                  &lt;/tr&gt;                  &lt;tr style='background-color:#74a9d8;'&gt;                      &lt;td align='center' valign='top'&gt;                          &lt;table border='0' cellpadding='20' cellspacing='0' width='100%' id='emailReply'&gt;                              &lt;tr style='font-size: 1.2rem'&gt;                                  &lt;td align='center' valign='top'&gt;                                      &lt;span style='color:#286090; font-weight:bold;'&gt;Send From:&lt;/span&gt; &lt;br/&gt; <span class="hljs-subst">${email}</span>                                  &lt;/td&gt;                              &lt;/tr&gt;                          &lt;/table&gt;                      &lt;/td&gt;                  &lt;/tr&gt;              &lt;/table&gt;          &lt;/td&gt;      &lt;/tr&gt;      &lt;/table&gt;    &lt;/body&gt;  &lt;/html&gt; `</span>}
</code></pre><p>All we are doing here is creating an HTML file and passing in the <code>email</code> and <code>message</code> to create a custom email. We use ES6 string literals to add in string variables with <code>${ }</code> like so: <code>&lt;h3&gt;${message</code>}.</p>
<p>And that’s it! You can use whatever front end code you want, simply pass in an <code>email</code> and <code>message</code> to <code>sendAWSEmail()</code>. Just remember <code>sendAWSEmail()</code> returns a promise, so you will have to handle that accordingly. If you don’t know how to handle promises, check out my <a target="_blank" href="https://medium.com/@kangzeroo/quick-story-about-javascript-promises-31b4e76ed0cd#.sty9l0ncx">other tutorial here</a>.</p>
<p>See you next time!</p>
<h3 id="heading-table-of-contents-1">Table of Contents</h3>
<blockquote>
<p><strong>Part 0:</strong> <a target="_blank" href="https://medium.com/@kangzeroo/the-complete-aws-web-boilerplate-d0ca89d1691f#.3eqpvcjsy">Introduction to the Complete AWS Web Boilerplate</a></p>
<p><strong>Part 1:</strong> <a target="_blank" href="https://medium.com/@kangzeroo/user-management-with-aws-cognito-1-3-initial-setup-a1a692a657b3#.cbkz7b2jp">User Authentication with AWS Cognito</a> (3 parts)</p>
<p><strong>Part 2:</strong> <a target="_blank" href="https://medium.com/@kangzeroo/amazon-s3-cloud-file-storage-for-performance-and-cost-savings-8f38d7769619#.l9so2hk00">Saving File Storage Costs with Amazon S3</a> (1 part)</p>
<p><strong>Part 3:</strong> <a target="_blank" href="https://medium.com/@kangzeroo/sending-emails-with-amazon-ses-7617e83327b6#.5nhcrr609">Sending Emails with Amazon SES</a> (1 part)</p>
<p>Part 4: Manage Users and Permissions with AWS IAM <strong>[Coming Soon]</strong></p>
<p>Part 5: Cloud Server Hosting with AWS EC2 and ELB<strong>[Coming Soon]</strong></p>
<p>Part 6: The MongoDB Killer: AWS DynamoDB <strong>[Coming Soon]</strong></p>
<p>Part 7: Painless SQL Scaling using AWS RDS <strong>[Coming Soon]</strong></p>
<p>Part 8: Serverless Architecture with Amazon Lambda <strong>[Coming Soon]</strong></p>
</blockquote>
<p>This method was partially used in the deployment of <a target="_blank" href="http://renthero.ca">renthero.ca</a></p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
