<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-19089540</atom:id><lastBuildDate>Mon, 01 Mar 2010 10:09:47 +0000</lastBuildDate><title>JangoMail In Progress</title><description>This is the blog for JangoMail, a constantly evolving sophisticated and feature-rich web-based email marketing system.  In this blog our programmers and system administrators make frequent posts about new features, changes, enhancements, and tips and tricks for JangoMail.</description><link>http://www.jangomail.com/blog/JangoMailInProgress.asp</link><managingEditor>noreply@blogger.com (Ajay Goel)</managingEditor><generator>Blogger</generator><openSearch:totalResults>238</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-1740642574918756445</guid><pubDate>Thu, 25 Feb 2010 20:54:00 +0000</pubDate><atom:updated>2010-02-25T16:09:24.951-05:00</atom:updated><title>Five new API methods</title><description>We've added the following &lt;span style="font-weight: bold;"&gt;five API/web service methods&lt;/span&gt; to improve our &lt;a href="http://www.jangosmtp.com/"&gt;transactional email &lt;/a&gt;capabilities.  All were requested by prospects evaluating JangoMail.  Do you have a request for an API method that would make your developer's life easier? Let us know by filling out our &lt;a href="http://www.jangomail.com/support"&gt;Support form&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Click each method name to use its corresponding test form.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;li&gt;                 &lt;a href="http://api.jangomail.com/api.asmx?op=GetTransactionalGroupID"&gt;GetTransactionalGroupID&lt;/a&gt;                                  &lt;span&gt;              &lt;br /&gt;Gets a transactional group id. Returns a string.&lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;li&gt;                 &lt;a href="http://api.jangomail.com/api.asmx?op=DeleteTransactionalGroup"&gt;DeleteTransactionalGroup&lt;/a&gt;                                  &lt;span&gt;              &lt;br /&gt;Deletes a transactional group from account. Returns a string.&lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;li&gt;                 &lt;a href="http://api.jangomail.com/api.asmx?op=Reports_GetBouncesByTransactionalGroup_DataSet"&gt;Reports_GetBouncesByTransactionalGroup_DataSet&lt;/a&gt;                                  &lt;span&gt;              &lt;br /&gt;Retrieves list of bounced addresses for a particular transactional group. Includes SMTP Diagnostic Code and Definitive columns. Returns a .NET DataSet.&lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;li&gt;                 &lt;a href="http://api.jangomail.com/api.asmx?op=Reports_GetBouncesByTransactionalGroup_String"&gt;Reports_GetBouncesByTransactionalGroup_String&lt;/a&gt;                                  &lt;span&gt;              &lt;br /&gt;Retrieves list of bounced addresses for a particular transactional group. Includes SMTP Diagnostic Code and Definitive columns. Returns a string.&lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;li&gt;                 &lt;a href="http://api.jangomail.com/api.asmx?op=Reports_GetBouncesByTransactionalGroup_XML"&gt;Reports_GetBouncesByTransactionalGroup_XML&lt;/a&gt;                                  &lt;span&gt;              &lt;br /&gt;Retrieves list of bounced addresses for a particular transactional group. Includes SMTP Diagnostic Code and Definitive columns. Returns an XML document.&lt;/span&gt;&lt;/li&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-1740642574918756445?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2010/02/five-new-api-methods.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-1113367141079218284</guid><pubDate>Wed, 24 Feb 2010 11:09:00 +0000</pubDate><atom:updated>2010-02-24T06:00:50.766-05:00</atom:updated><title>New Report: Complaint Rate Dashboard</title><description>JangoMail and &lt;a href="http://www.jangosmtp.com/"&gt;JangoSMTP&lt;/a&gt; users have always been able to see the complaint  rate for an individual broadcast campaign or for an individual  &lt;a href="http://www.jangosmtp.com/"&gt;transactional email&lt;/a&gt; group. However, it was difficult to see complaint  rate history over time, and in aggregate across different types of email  campaigns (&lt;a href="http://www.jangomail.com/features_TransactionalMessaging.asp"&gt;transactional&lt;/a&gt;, &lt;a href="http://www.jangomail.com/features_autoresponder.asp"&gt;autoresponders&lt;/a&gt;, recurring campaigns,  single-shot broadcast campaigns).&lt;br /&gt;&lt;br /&gt;With our new &lt;span style="font-weight: bold;"&gt;Complaint Rate Dashboard&lt;/span&gt;, available only in our new &lt;span style="font-weight: bold;"&gt; no-frames interface&lt;/span&gt;, you can see your overall complaint rate based on  all emails sent from your account in aggregate.&lt;br /&gt;&lt;br /&gt;To access the &lt;span style="font-weight: bold;"&gt;Complaint Rate Dashboard&lt;/span&gt;, make sure your account is using our new no-frames interface, then click Reports, then choose "Complaint Rate History" from the Account dropdown menu:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/ComplaintRateReportAccessIt-735318.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 234px;" src="http://www.jangomail.com/blog/uploaded_images/ComplaintRateReportAccessIt-735315.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's an example of the  &lt;span style="font-weight: bold;"&gt;Complaint Rate Dashboard&lt;/span&gt; from our customer, Popcorn Palace:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/ComplaintRateReport-735549.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 318px; height: 400px;" src="http://www.jangomail.com/blog/uploaded_images/ComplaintRateReport-735543.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The report shows the complaint rate for the last 7 days and the last 30  days, and it also allows you to see how many total emails you've sent  per day during this period.&lt;br /&gt;&lt;br /&gt;Additionally, you can see what ISP has resulted in the most complaints  during a given period.&lt;br /&gt;&lt;br /&gt;Time-based complaint rates are more difficult to calculate than the complaint rate on say, an individual broadcast email campaign.  There are two ways to calculate time-based complaint rates:&lt;br /&gt;&lt;br /&gt;1. &lt;span style="color: rgb(204, 0, 0);"&gt;Bad way:&lt;/span&gt; Number of emails sent within a time period and number of complaints received within that same time period.  This method is flawed, since the complaint on an email sent within time period A may not be received until after time period A.  So a simple division of the complaints received within a particular 7 day period divided by the number of emails sent within that 7 day period would result in an erroneous complaint rate.&lt;br /&gt;&lt;br /&gt;2. &lt;span style="color: rgb(0, 102, 0);"&gt;Good way:&lt;/span&gt; Instead, we tie each complaint back to the original email that resulted in it.  The complaint rates shown in this new report are calculated by analyzing how many emails were sent in a given time period, and then &lt;span style="font-style: italic;"&gt;analyzing how many complaints were received for only the emails sent within that given time period&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-1113367141079218284?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2010/02/new-report-complaint-rate-dashboard_17.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-8130428956294302707</guid><pubDate>Tue, 23 Feb 2010 20:35:00 +0000</pubDate><atom:updated>2010-02-23T16:00:33.659-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>email surveys</category><title>Your Company Logo in your JangoMail Surveys</title><description>JangoMail now has support for adding your company logo to surveys that you create through our website using the &lt;span style="font-weight: bold;"&gt;Surveys&lt;/span&gt; tab.  Adding your logo to your surveys is a great idea, not only because it makes it clear who is conducting the survey, but it also builds on your branding by putting your image in front of your survey participants once more.&lt;br /&gt;&lt;br /&gt;Adding your logo is accomplished in three simple steps:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/logo_three_steps-737711.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 195px;" src="http://www.jangomail.com/blog/uploaded_images/logo_three_steps-737676.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;While logged in, click on the &lt;span style="font-weight: bold;"&gt;Company Logo&lt;/span&gt; selection on the &lt;span style="font-weight: bold;"&gt;Settings&lt;/span&gt; tab&lt;/li&gt;&lt;li&gt;Input the URL of your company logo from your website (or wherever your logo image is hosted)&lt;/li&gt;&lt;li&gt;Click the &lt;span style="font-weight: bold;"&gt;Update Company Logo&lt;/span&gt; button&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;After your company logo setting has been updated, that logo will automatically appear at the top of any survey pages you create in the &lt;span style="font-weight: bold;"&gt;Surveys&lt;/span&gt; section of JangoMail.&lt;br /&gt;&lt;br /&gt;Below is a screenshot with a sample survey put together to demonstrate the new feature.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/survey_with_logo-737744.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 145px;" src="http://www.jangomail.com/blog/uploaded_images/survey_with_logo-737725.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-8130428956294302707?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2010/02/your-company-logo-in-your-jangomail.html</link><author>noreply@blogger.com (Dean Goodman)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-1976377824618997170</guid><pubDate>Wed, 10 Feb 2010 16:19:00 +0000</pubDate><atom:updated>2010-02-16T14:14:37.419-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>email marketing</category><title>V-Day Email Tips to Enflame Customer Passions</title><description>Nothing inflames the passions like a well-written love letter. That's why for this Valentine's Day I thought I'd offer some tips on how you can take the same basic tenets of love letter writing to create email campaigns that will really get your customer and prospect hearts beating!&lt;br /&gt;&lt;br /&gt;1. The sheer appearance of a love letter says so much about the sender and the level of his or her affection. As an email marketer, you need to choose layouts, colors, fonts, and graphics that not only accurately reflect your brand but also draw readers in and show you truly care about how they perceive you.&lt;br /&gt;&lt;br /&gt;2. All Romeos and Juliets know how to create the right ambiance. Be sure to consider not only the mood you’re hoping your email will leave readers in, but also the mood they may already be in. Most recipients will be busy, so be considerate of their time and say what needs to be said in order for them to warm up to you.&lt;br /&gt;&lt;br /&gt;3. Ever get a love letter and then gush about it with friends? Your friends are probably left wishing their special someones could melt their hearts like that! Know what your competitors are telling customers, and then beat their sweet nothings with sweet somethings that make customers feel special. Segment your outreach and create copy that focuses on your reader's specific needs. Coupons, giveaways, newsletters and funny videos all show you’re interested in a giving, long-term relationship while contributing to the viral effect.&lt;br /&gt;&lt;br /&gt;4. "Let us go then you and I…" Just like the Love Song of J. Alfred Prufrock, your email must contain a clear call to action. But don’t just ask would-be customers to click on a link or buy your product. Show them how by doing so you can change their lives in deep and meaningful ways.&lt;br /&gt;&lt;br /&gt;5. No matter how eloquently written, sending unsolicited love letters can get you into trouble. As always, be sure your recipients have opted in to receiving your affections!&lt;br /&gt;&lt;br /&gt;JangoMail is also showing some love this Valentine's Day by offering &lt;strong&gt;free trials&lt;/strong&gt; of its powerful email marketing platform and &lt;strong&gt;waiving its start-up fee through the end of February&lt;/strong&gt;. JangoMail offers a variety of affordable pricing options, so anyone can send emails in a highly reliable and personalized way. Visit &lt;a href="http://www.jangomail.com/"&gt;http://www.jangomail.com/&lt;/a&gt; for more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-1976377824618997170?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2010/02/v-day-email-tips-to-enflame-customer.html</link><author>noreply@blogger.com (Melissa Sherman)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-4498595694339493321</guid><pubDate>Tue, 09 Feb 2010 06:19:00 +0000</pubDate><atom:updated>2010-02-09T01:43:29.895-05:00</atom:updated><title>Two New Reports in our New User Interface</title><description>Those users that have switched to our new no-frames interface now have a new report to enjoy -- two new detailed &lt;span style="font-weight: bold;"&gt;Sending Progress reports.&lt;/span&gt;&lt;span&gt; The first shows&lt;/span&gt; how many emails are still pending, and which JangoMail sending server they have been assigned to, and the second shows how many emails have been sent per hour since the email campaign was launched.&lt;br /&gt;&lt;br /&gt;To access these two new reports, you must be using the new interface.  If you are on the old interface, click &lt;span style="font-weight: bold;"&gt;"Switch to No Frames"&lt;/span&gt; in the top blue area.&lt;br /&gt;&lt;br /&gt;Go to &lt;span style="font-weight: bold;"&gt;Reports &lt;/span&gt;click the &lt;span style="font-weight: bold;"&gt;(sending)&lt;/span&gt; link next to an in-progress email campaign:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/SendingProgress2-733594.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 344px;" src="http://www.jangomail.com/blog/uploaded_images/SendingProgress2-733592.gif" alt="" border="0" /&gt;&lt;/a&gt;After clicking &lt;span style="font-weight: bold;"&gt;(sending)&lt;/span&gt;, a popup will show you how many emails have been sent, how many are remaining, and to which sending server they've been assigned:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/SendingProgress-785744.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 365px; height: 367px;" src="http://www.jangomail.com/blog/uploaded_images/SendingProgress-785743.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Clicking on &lt;span style="font-weight: bold;"&gt;[Time]&lt;/span&gt; will reveal how many emails have been sent per hour since the email campaign was launched.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/TimeReport-756295.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 191px;" src="http://www.jangomail.com/blog/uploaded_images/TimeReport-756293.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-4498595694339493321?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2010/02/new-report-in-our-new-user-interface.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-4905613854486135908</guid><pubDate>Sat, 06 Feb 2010 23:50:00 +0000</pubDate><atom:updated>2010-02-06T18:57:10.444-05:00</atom:updated><title>Two bug fixes in SMTP relay service</title><description>We've just deployed two fixes to the JangoSMTP &lt;a href="http://www.jangosmtp.com"&gt;transactional email service&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;1. Previously, lines in an email message that begin with a single period would result in two periods when delivered to the recipient.  This was a bug related to how SMTP treats the escaping of periods.  &lt;span style="color: rgb(0, 153, 0);"&gt;This is now fixed.&lt;/span&gt;  To read more about issues involving SMTP and periods, see this article: &lt;a href="http://db.ilug-bom.org.in/lug-authors/philip/docs/mail-stuff/smtp-intro.html"&gt;http://db.ilug-bom.org.in/lug-authors/philip/docs/mail-stuff/smtp-intro.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Previously, if an email message was relayed to &lt;span style="font-weight: bold;"&gt;relay.jangosmtp.net&lt;/span&gt; and included both the &lt;span style="font-weight: bold;"&gt;Disposition-Notification-To&lt;/span&gt; and the &lt;span style="font-weight: bold;"&gt;Return-Receipt-To&lt;/span&gt; headers, then JangoSMTP would throw an error on the email message:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;System.ArgumentException: An item with the same key has already been added.  &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;This is now fixed, and email messages containing both headers will be delivered properly.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-4905613854486135908?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2010/02/two-bug-fixes-in-smtp-relay-service.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-4117939092603414017</guid><pubDate>Mon, 18 Jan 2010 22:57:00 +0000</pubDate><atom:updated>2010-01-18T18:27:29.965-05:00</atom:updated><title>JangoMail Has Upgraded Its HTML Editor</title><description>It has been a while since the last upgrade but JangoMail has just installed the latest version of the &lt;span style="color: rgb(0, 153, 0);"&gt;Ephox EditLive! HTML editor&lt;/span&gt;.  What does this mean for you?  TONS of new features and bugfixes, including:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Support for setting the language direction in both the applet and in inline editing sections&lt;/li&gt;&lt;li&gt;Improved dictionaries for spell checking&lt;/li&gt;&lt;li&gt;Additional support for international, non-English locales&lt;/li&gt;&lt;li&gt;Fixes for several table rendering problems&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/rtl-code-768457.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 313px;" src="http://www.jangomail.com/blog/uploaded_images/rtl-code-768455.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/rtl-design-799999.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 311px;" src="http://www.jangomail.com/blog/uploaded_images/rtl-design-799997.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://releases.ephox.com/"&gt;here&lt;/a&gt; for a list of all bugfixes and enhancements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-4117939092603414017?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2010/01/jangomail-has-upgraded-its-html-editor.html</link><author>noreply@blogger.com (Dean Goodman)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-8674269488123308251</guid><pubDate>Sat, 02 Jan 2010 04:22:00 +0000</pubDate><atom:updated>2010-01-01T23:28:23.609-05:00</atom:updated><title>Transactional emails now support List-Unsubscribe header option</title><description>Back in July, we &lt;a href="http://www.jangomail.com/blog/2009/07/new-feature-list-unsubscribe-header.html"&gt;announced support for the List-Unsubscribe header in broadcast email campaigns&lt;/a&gt; sent via JangoMail.&lt;br /&gt;&lt;br /&gt;Starting today, the List-Unsubscribe header will also be applied to transactional email messages.  Transactional emails are email messages sent via any of the following methods:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The &lt;a href="http://www.jangosmtp.com"&gt;SMTP relay service&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Any of the following API methods: &lt;a href="http://api.jangomail.com/api.asmx?op=SendTransactionalEmail"&gt;SendTransactionalEmail&lt;/a&gt;, &lt;a href="http://api.jangomail.com/api.asmx?op=SendTransactionalEmailFromTemplate"&gt;SendTransactionalEmailFromTemplate&lt;/a&gt;, &lt;a href="http://api.jangomail.com/api.asmx?op=SendTransactionalEmailRaw"&gt;SendTransactionalEmailRaw&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;See the original &lt;a href="http://www.jangomail.com/blog/2009/07/new-feature-list-unsubscribe-header.html"&gt;July blog post&lt;/a&gt; for information on how this header affects your email messages. It is our recommendation, that all clients leave this header turned on.  If you wish to turn it off, you may do so under Settings --&gt; Unsubscribe Options.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-8674269488123308251?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2010/01/transactional-emails-now-support-list.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-311593501935393995</guid><pubDate>Fri, 18 Dec 2009 01:04:00 +0000</pubDate><atom:updated>2009-12-17T20:09:26.154-05:00</atom:updated><title>The Rendering/Inbox Preview tool is back in action</title><description>Our rendering/inbox preview tool is back in action, after a hiatus for the last month where the only client that rendered properly was GMail.&lt;br /&gt;&lt;br /&gt;Now, four of the clients will consistently display (Gmail, Outlook, Thunderbird, and Windows Mail), and we're working on bringing AOL, Hotmail, and Yahoo! Mail back to life.&lt;br /&gt;&lt;br /&gt;The reason this tool is so difficult to maintain and service is because a) We coded this feature from scratch, and Inbox Rendering is an extremely difficult process from a software development perspective, and b) Webmail clients are constantly changing, and when a change is made to its login process or its interface, we have to re-code our app to render that client all over again.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/JangoMailRendering-716145.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 378px; height: 400px;" src="http://www.jangomail.com/blog/uploaded_images/JangoMailRendering-716142.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-311593501935393995?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/12/renderinginbox-preview-tool-is-back-in.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-5057945411373796627</guid><pubDate>Fri, 11 Dec 2009 08:08:00 +0000</pubDate><atom:updated>2009-12-11T03:56:55.927-05:00</atom:updated><title>SMTP service now supports large attachments</title><description>&lt;span style="font-weight: bold;"&gt;The JangoMail SMTP relay service now supports sending large file attachments in email.&lt;/span&gt;  Before, there was a limit of approximately 2 MB in total file attachments.  Now, there is NO theoretical limit, so the &lt;span style="color: rgb(0, 153, 0);"&gt;SMTP service can handle file attachments as large as 10 or 20 MB&lt;/span&gt;.  Of course, email may not be the best medium to transmit such large files, but it is possible with our system.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JangoSMTP:&lt;/span&gt; The &lt;a href="http://www.jangosmtp.com"&gt;Stand-Alone SMTP Service&lt;/a&gt; with open tracking, click tracking, DKIM signing, and more.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JangoMail:&lt;/span&gt; The &lt;a href="http://www.jangomail.com/Features-SMTP-Relay-Tracking.asp"&gt;SMTP Service combined with email broadcast service&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-5057945411373796627?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/12/smtp-service-now-supports-large.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-1081775405572887478</guid><pubDate>Sat, 05 Dec 2009 09:24:00 +0000</pubDate><atom:updated>2009-12-05T08:32:05.757-05:00</atom:updated><title>Review of Megabus WiFi Internet access</title><description>Running a fast-paced high tech company like JangoMail, I need to be as productive as possible. I am usually either in Chicago (where I live) or in Dayton, Ohio (where I grew up, and where JangoMail is headquartered). Normally I drive between the two cities, because non-stop flights between Chicago and Dayton are upwards of $1,000. Recently, I was told of a bus service called Megabus, which operates a bus route between Cincinnati and Chicago with WiFi Internet access, so tonight, I gave it a shot. With the WiFi, I figured taking the bus I figured would allow me to work for six hours rater than drive for six hours.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;What I wanted to know&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Prior to buying my ticket, I wanted to know the following about the Megabus WiFi access:&lt;br /&gt;&lt;br /&gt;1. How fast was it?  Would it be like dialup, or a T1?&lt;br /&gt;&lt;br /&gt;2. Were there any connectivity restrictions? Could I remote into a JangoMail server and deploy a new feature? Could I use GoToMyPC to access my main workstation in Chicago?&lt;br /&gt;&lt;br /&gt;3. Were there power outlets available?  My laptop battery only lasts four hours, and my trip was six.&lt;br /&gt;&lt;br /&gt;Googling got me nowhere, as nobody has documented in detail experiences with Megabus's WiFi, so hence the purpose of this article.&lt;br /&gt;&lt;br /&gt;To all tech executives, sysadmins, and those that like to make their web app better while travelling between cities, this article's for you.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Network Settings&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/megabus_networksettings-793490.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 95px;" src="http://www.jangomail.com/blog/uploaded_images/megabus_networksettings-793488.gif" alt="" border="0" /&gt;&lt;/a&gt;The above screenshot shows my network settings after connecting to the wireless network with SSID MEGABUS - 64184.  Note that I manually put in the DNS server of 8.8.8.8 in an attempt to get around the network's web site blocking, however my attempt was futile.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;The Speed&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The speed various greatly depending on whether the bus is moving or stationary. While stationary, I got reasonable high-speed access. I ran this speed test which shows that I was getting near T1 speeds on the download.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/megabus_indianapolis-708456.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 389px; height: 400px;" src="http://www.jangomail.com/blog/uploaded_images/megabus_indianapolis-708453.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Above speed was while bus was stationary at Indianapolis stop.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/megabus_slow-719055.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 391px; height: 400px;" src="http://www.jangomail.com/blog/uploaded_images/megabus_slow-719053.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Above speed test was while bus was in route, half-way between Indianapolis and Chicago.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The speed between Cincinnati and Indianapolis was the slowest of all, but unfortunately I did not capture a speed test screenshot during that portion of the trip.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Port Blocking&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All connectivity, except to ports 80 and 443, and DNS lookups, are blocked:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I could not ping any of our servers.&lt;/li&gt;&lt;li&gt;I could not FTP to our server.&lt;/li&gt;&lt;li&gt;I could not connect on port 25 to any mail servers.&lt;/li&gt;&lt;li&gt;I could not Remote Desktop into any servers.&lt;/li&gt;&lt;li&gt;I could not use GoToMyPC to connect to my workstation.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:180%;"&gt;Web Site Blocking&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Additionally, the WiFi service uses OpenDNS to block many web sites. While I was able to read and respond to email via GMail, and browse Facebook, the following sites were blocked:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;MySpace&lt;/li&gt;&lt;li&gt;Google Docs (at docs.google.com), which was odd, because most other Google services were available&lt;/li&gt;&lt;li&gt;Nerve&lt;/li&gt;&lt;/ol&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/megabus_indianapolis_blocked-750783.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 394px; height: 400px;" src="http://www.jangomail.com/blog/uploaded_images/megabus_indianapolis_blocked-750781.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Because it was an OpenDNS based block, I suspected that switching to Google's new public DNS server (8.8.8.8) might be a workaround to the blocking. I manually set my Windows TCP/IP settings to use 8.8.8.8 as its DNS server rather than the one dynamically assigned by DHCP, but to no avail. The sites were still blocked, redirecting me to an OpenDNS message.&lt;br /&gt;&lt;br /&gt;The WiFi service is provided by a company called Saucon, and it is free.&lt;span style="font-size:180%;"&gt;&lt;br /&gt;&lt;br /&gt;Power Outlets on Megabus&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There were no power outlets on my bus from Cincinnati to Chicago, but I've read (insert link) that some buses do have outlets.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Resources&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For the official Megabus Saucon WiFi Terms of Use, that you must agree to right when you connect, is here: &lt;a href="http://www.saucontds.com/us/index.html"&gt;http://www.saucontds.com/us/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wikipedia entry on Megabus - &lt;a href="http://en.wikipedia.org/wiki/Megabus"&gt;http://en.wikipedia.org/wiki/Megabus&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;Megabus Home page - &lt;a href="http://www.megabus.com/"&gt;http://www.megabus.com&lt;/a&gt;, which oddly enough when I just visited, gave me:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/megabus_offline-731963.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 159px;" src="http://www.jangomail.com/blog/uploaded_images/megabus_offline-731961.gif" alt="" border="0" /&gt;&lt;/a&gt;Shocking that the site goes offline EVERY DAY for 3 hours.  In our world of real-time, mission-critical everything, I'm surprised that they would sacrifice 12.5% of the time they could be selling tickets.  JangoMail, which I'd imagine is a far more complex app than Megabus's web site, has maintenance running on the back-end almost constantly, and we rarely go offline.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-1081775405572887478?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/12/review-of-megabus-wifi-internet-access.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-5909017063644304893</guid><pubDate>Tue, 24 Nov 2009 22:05:00 +0000</pubDate><atom:updated>2009-11-24T17:50:48.569-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>email surveys</category><category domain='http://www.blogger.com/atom/ns#'>surveys</category><category domain='http://www.blogger.com/atom/ns#'>survey tool</category><title>Test Out Our New Survey Tool</title><description>&lt;span style="color: #274e13;"&gt;We just launched the first ever &lt;strong&gt;Silverlight-based Survey Design Tool&lt;/strong&gt;. You can now design and publish email survey invites through the JangoMail interface and view your survey results for each individual participant.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;Set Up Instructions&lt;/span&gt;&lt;br /&gt;1. The Survey feature&amp;nbsp;is part of our new &lt;a href="http://www.jangomail.com/blog/2009/11/test-our-new-no-frames-interface.html"&gt;no-frames interface&lt;/a&gt;. Because both are in beta,&amp;nbsp;you must set your system to use&amp;nbsp;the no-frames interface. Click on &lt;strong&gt;Switch to No-Frames &lt;/strong&gt;in the upper right-hand corner.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jangomail.com/blog/uploaded_images/surveys1-703083.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="94" src="http://www.jangomail.com/blog/uploaded_images/surveys1-703081.gif" width="320" yr="true" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;2. Click on the new &lt;strong&gt;Surveys &lt;/strong&gt;tab. If you don't have Microsoft's Silverlight Platform installed, you will be prompted to install it at this time. &lt;em&gt;Survey recipients see the survey on a regular webpage and&amp;nbsp;will not need to download Silverlight.&lt;/em&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jangomail.com/blog/uploaded_images/surveys2-708147.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="88" src="http://www.jangomail.com/blog/uploaded_images/surveys2-708145.gif" width="320" yr="true" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;3. Click the &lt;strong&gt;Create a New Survey &lt;/strong&gt;button to get started. Then choose the &lt;strong&gt;Blank survey &lt;/strong&gt;option.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;4. To create a new question, click in the box under &lt;em&gt;&lt;strong&gt;Create a new item&lt;/strong&gt;. &lt;/em&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jangomail.com/blog/uploaded_images/surveys3-782414.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="119" src="http://www.jangomail.com/blog/uploaded_images/surveys3-782412.gif" width="320" yr="true" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Edit the question and answer points by deleting the text that is currently there and typing in your own.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jangomail.com/blog/uploaded_images/surveys4-720110.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="139" src="http://www.jangomail.com/blog/uploaded_images/surveys4-720108.gif" width="320" yr="true" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;To use a pre-defined set of answers, click the down arrow next to your answer set.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jangomail.com/blog/uploaded_images/surveys5-765831.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="187" src="http://www.jangomail.com/blog/uploaded_images/surveys5-765829.gif" width="320" yr="true" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;To add space for &lt;strong&gt;short text answers&lt;/strong&gt; and &lt;strong&gt;comment sections&lt;/strong&gt;, click on the down arrow in the box under &lt;strong&gt;&lt;em&gt;Create a new item&lt;/em&gt;&lt;/strong&gt;. Then click on the type of answer you would like.&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jangomail.com/blog/uploaded_images/surveys6-781706.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="188" src="http://www.jangomail.com/blog/uploaded_images/surveys6-781704.gif" width="320" yr="true" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;5. When you are done creating your survey, click the &lt;strong&gt;Save &lt;/strong&gt;button.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;6. &lt;span style="color: black;"&gt;&lt;em&gt;To make the survey available for people to respond, you must publish it.&lt;/em&gt;&lt;/span&gt; Click on the &lt;strong&gt;Publish &lt;/strong&gt;tab and then click &lt;strong&gt;Publish Survey&lt;/strong&gt;. Here you will get a link that you can send to people to fill out your survey.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;7. &lt;strong&gt;Set your survey to end&lt;/strong&gt; by navigating to the &lt;strong&gt;Close &lt;/strong&gt;tab and entering in when the survey should close. You can choose to &lt;strong&gt;end it immediately, on a certain date, or after a given number of responses&lt;/strong&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-size: x-large;"&gt;Send the Survey&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;1. To send out your survey, go to the &lt;strong&gt;Send Email&lt;/strong&gt; tab and begin creating an email as you normally would.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;2. On the &lt;strong&gt;Send Email&lt;/strong&gt; page, you will see a new link for adding a &lt;strong&gt;Survey Link&lt;/strong&gt;. Click on that link and find the link for the Survey that you would like to add. &lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jangomail.com/blog/uploaded_images/surveys7-760861.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="246" src="http://www.jangomail.com/blog/uploaded_images/surveys7-760858.gif" width="320" yr="true" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-size: x-large;"&gt;&lt;span style="font-size: small;"&gt;3. Copy and paste&amp;nbsp;the link&amp;nbsp;into your email.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://www.jangomail.com/blog/uploaded_images/surveys8-797415.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.jangomail.com/blog/uploaded_images/surveys8-797408.gif" yr="true" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;4. Send your email as you normally would and wait for results to come in.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-size: x-large;"&gt;View Results&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;View&amp;nbsp;&lt;strong&gt;Recipient-Level Results &lt;/strong&gt;by clicking on &lt;strong&gt;My Surveys&lt;/strong&gt; in the &lt;strong&gt;Surveys &lt;/strong&gt;section. Click on the &lt;strong&gt;Results &lt;/strong&gt;button next to the survey that you would like to view results for.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jangomail.com/blog/uploaded_images/surveys9-731711.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="146" src="http://www.jangomail.com/blog/uploaded_images/surveys9-731709.gif" width="320" yr="true" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;We will soon&amp;nbsp;add results in our &lt;strong&gt;Reporting and Analytics&lt;/strong&gt; section as well.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-5909017063644304893?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/11/test-out-our-new-survey-tool.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-4717052077020994667</guid><pubDate>Mon, 23 Nov 2009 08:12:00 +0000</pubDate><atom:updated>2009-11-23T04:07:02.550-05:00</atom:updated><title>Test our new no-frames interface</title><description>Our new no-frames user interface is ready to be tested.  To switch to the no-frames interface, login to your account and click the "Switch to No-Frames" link.  You can always switch back to the old frames interface if you want to later.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/JangoMailNoFrames1-702268.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 359px;" src="http://www.jangomail.com/blog/uploaded_images/JangoMailNoFrames1-702265.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Below is the first screen of the new interface:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/JangoMailNoFrames2-740203.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 351px;" src="http://www.jangomail.com/blog/uploaded_images/JangoMailNoFrames2-740200.gif" alt="" border="0" /&gt;&lt;/a&gt;Along with the absence of frames, there are three key navigational differences:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The "Account Info" section is no longer a main tab.  It is a link in the top area.&lt;/li&gt;&lt;li&gt;The "Help" section is no longer a main tab.  It is a link in the top area.&lt;/li&gt;&lt;li&gt;There is a new tab called "Surveys". You can now design and publish and email survey invites to your email lists.  The Surveys feature is also in beta.  The survey builder runs on Microsoft's Silverlight platform, so if you don't have Silverlight installed, the first time you click on the "Surveys" tab you'll be asked to install Silverlight.&lt;/li&gt;&lt;/ol&gt;The new no-frames interface will now be the basis for a whole host of user interface improvements, including improved text styling, contextual help, more videos, easier navigation, and clearer organization. Stay tuned for these improvements and future blog posts on how to use Surveys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-4717052077020994667?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/11/test-our-new-no-frames-interface.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-7156651650688212781</guid><pubDate>Mon, 23 Nov 2009 05:33:00 +0000</pubDate><atom:updated>2009-11-23T00:47:36.851-05:00</atom:updated><title>Error handling for the SMTP Relay Service</title><description>&lt;span style="font-weight: bold;"&gt;Overview:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We've launched a new error handling system for the SMTP relay system.  There are a number of reasons why a message sent through the SMTP relay may result in an error.  For example:&lt;br /&gt;&lt;br /&gt;1. If the recipient address is on your account's bounce list, then a "bounce" error will be thrown.&lt;br /&gt;2. If the recipient address is on your account's unsubscribe list, then an "unsubscribe" error will be thrown.&lt;br /&gt;3. If your account is over its sending limits, a "Over Account Limit" error will be thrown.&lt;br /&gt;4. If a badly formed email message is passed through the relay, a "parsing" error will be thrown.&lt;br /&gt;&lt;br /&gt;These errors are only detected after a message is received by the SMTP relay, so the error will NOT appear during the SMTP conversation with relay.jangosmtp.net.&lt;br /&gt;&lt;br /&gt;When an error is detected, the error notification can be emailed to the Account Manager and/or the From Address on the email that resulted in the error.  Additionally, the error is available for viewing under Reporting in the Transactional Emails section.&lt;br /&gt;&lt;br /&gt;To set your error handling preferences, go to &lt;span style="font-weight: bold;"&gt;Settings --&gt; SMTP Relay&lt;/span&gt; and set the two relevant checkboxes appropriately.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Recommendations:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. If you know that you regularly attempt to relay emails to addresses on your Unsubscribe and Bounce lists, you may wish to turn off the email notifications for errors entirely, as this could result in a large volume of emails to you.&lt;br /&gt;&lt;br /&gt;2. To decide whether or not the error should also be sent to the From Address, consider what type of transactional emails you're sending through the SMTP relay.  If the From Address is an address at your organization, then it's probably okay for the From Address to also receive errors.  But, if you're sending social networking "You have a new message from John" type emails, where the From Address is that of one of your users, you probably don't want your users to receive error notifications from JangoMail.  In this case, uncheck the box to send errors to the From Address.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-7156651650688212781?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/11/error-handling-for-smtp-relay-service.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-674404002362796815</guid><pubDate>Thu, 19 Nov 2009 23:40:00 +0000</pubDate><atom:updated>2009-11-20T03:41:52.308-05:00</atom:updated><title>Seven Steps to Optimize Email Deliverability Using JangoMail</title><description>&lt;span style="font-size:180%;"&gt;Overview:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Email deliverability is a key concern for most email marketers, and at JangoMail, we think we do a pretty good job of ensuring the highest possible inbox placement of our clients' emails. JangoMail is a highly customizable platform, from sending speeds, to email headers, to SMTP protocol level customizations. Taking advantage of certain settings and features can help ensure high email deliverability.&lt;br /&gt;&lt;br /&gt;Some of these steps involve separating yourself from other JangoMail clients. It's not that JangoMail accepts spammers, but JangoMail does accept different levels of opt-in email marketing.  For example, some customers use single opt-in, while other customers use confirmed opt-in.  Generally, customers using confirmed opt-in experience higher deliverability.  Therefore, different JangoMail clients have different reputations with ISPs, so if two clients are both using a username@jangomail.com &lt;span style="font-weight: bold;"&gt;From Address&lt;/span&gt; for example, they both can impact the reputation of the domain jangomail.com.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:180%;"&gt;The Seven Steps:&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;Following the below steps will solve most email delivery issues to major consumer ISPs, like Yahoo, Hotmail, GMail, and AOL.&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Use a branded From Address rather than a username@jangomail.com From Address.&lt;/span&gt; All JangoMail accounts come with the option to use &lt;span style="font-weight: bold;"&gt;username@jangomail.com&lt;/span&gt; as the &lt;span style="font-weight: bold;"&gt;From Address&lt;/span&gt; on your email campaigns. This is provided as a convenience to our clients.&lt;br /&gt;&lt;br /&gt;a. In order to separate your reputation from other clients using jangomail.com as their From Address, use your actual corporate email address, like &lt;span style="font-weight: bold;"&gt;john.smith@company.com&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;b. An even better and safer option is to use a branded sub-domain, like &lt;span style="font-weight: bold;"&gt;john.smith@newsletters.company.com&lt;/span&gt;.  That way &lt;span style="font-weight: bold;"&gt;newsletters.company.com&lt;/span&gt; can have its own SenderID and DK/DKIM records.  Additionally, there is an SMTP level benefit to setting up a branded sub-domain -- it allows the SMTP MAIL FROM command during the SMTP transaction between our sender and the recipient server to show your sub-domain rather than jangomail.com.  For instructions see the PDF &lt;a href="http://www.jangomail.com/documents/Public/JangoMail_Custom_Sub-Domain.pdf"&gt;Setting up a Branded Sub-Domain&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;Who should do this? The technical person who manages your domain's DNS settings.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Use a branded tracking domain, that is based on your organization's domain name.&lt;/span&gt; The tracking domain is the domain referenced in the open-tracking mechanism, the click-tracking re-directs, the unsubscribe link, the forward-to-friend link, the view-as-a-web-page link, and other links that offer tracking in your email messages.  By default, every new JangoMail account is assigned a system tracking domain that is shared amongst multiple clients, like &lt;span style="font-weight: bold;"&gt;x.jango5.com&lt;/span&gt; for example. By setting up your own, you can isolate yourself from the activities of our other clients.  Set up your own by going to &lt;span style="font-weight: bold;"&gt;Settings --&gt; Tracking Domain&lt;/span&gt;.  If your domain is &lt;span style="font-weight: bold;"&gt;mycompany.com&lt;/span&gt;, then setting up &lt;span style="font-weight: bold;"&gt;x.mycompany.com&lt;/span&gt; makes for the perfect tracking domain.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/JangoMailTrackingDomain-765644.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 333px;" src="http://www.jangomail.com/blog/uploaded_images/JangoMailTrackingDomain-765641.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;Who should do this? The technical person who manages your domain's DNS settings.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Setup DomainKeys/DKIM for the domain use in your From Address.&lt;/span&gt;  Both Yahoo! Mail and GMail currently look for DKIM signatures in the headers of email messages. The presence of a DKIM signature fosters a sense of trust that the email was sent by who was purported to send the email. To setup DomainKeys and DKIM in JangoMail, see our PDF entitled &lt;a href="http://www.jangomail.com/documents/Public/JangoMail_DomainKeys_DKIM.pdf"&gt;Setting up DomainKeys/DKIM with JangoMail&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;Who should do this? The technical person who manages your domain's DNS settings.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Setup SenderID on your domain&lt;/span&gt;, and then set your campaigns to use your own From Address as the SMTP-level MAIL-FROM address.  Instructions can be found in the PDF &lt;a href="http://www.jangomail.com/documents/Public/JangoMail_SenderID_SPF_Guide.pdf"&gt;How to Publish SPF Records in JangoMail&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;Who should do this? The technical person who manages your domain's DNS settings.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;If you're sending HTML email, make sure you include a corresponding plain text message. &lt;/span&gt; Spam filters tend to frown upon emails that have a heavy ratio of HTML to plain text content.  This is as easy as setting the Plain Text Message to "auto-generate".  See screenshot below.  This will cause a plain text message to be generated (based on your HTML message) at the time of email sending.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jangomail.com/blog/uploaded_images/JangoMailAutoGenerate-700855.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 324px;" src="http://www.jangomail.com/blog/uploaded_images/JangoMailAutoGenerate-700853.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;Who should do this? The person using JangoMail.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Enroll in the &lt;a href="http://www.jangomail.com/features_SenderScoreCertified.asp"&gt;Sender Score Certified program&lt;/a&gt;.&lt;/span&gt; In order to be accepted, you must have a complaint rate of 0 to 0.1%. Once enrolled, your emails are sent from IP addresses that are certified. Hotmail virtually guarantees inbox placement for emails sent from certified IPs, and Yahoo prioritizes emails sent from certified IPs.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-style: italic;"&gt;Who should do this? The person using JangoMail.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;If using click-tracking, anchor text should be phrases, not URLs.&lt;/span&gt; Some spam filters look closely at how you link to determine whether the link is legitimate or fraudulent.  They do this to prevent phishing scams--a type of scam where an email pretends to be a request from a legitimate company in order to get the login credentials of that company's user.  For more information on phishing, see the &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Phishing"&gt;Wikipedia article on phishing&lt;/a&gt;.  The best way to explain good links versus bad links is with an example:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Good Link:&lt;/span&gt; &lt;span style=";font-family:courier new;font-size:85%;"  &gt;&amp;lt;a href="http://www.browniekitchen.com/"&amp;gt;Visit our web site.&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Bad Link:&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;a href="http://www.browniekitchen.com/"&amp;gt;http://www.browniekitchen.com&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When these URLs are click-tracked in JangoMail, the final email message looks like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Good Click-Tracked Link:&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;a href="http://x.jango5.com/y.z?l=http://www.browniekitchen.com"&amp;gt;Visit our web site.&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Bad Click-Tracked Link:&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;a href="http://x.jango5.com/y.z?l=http://www.browniekitchen.com"&amp;gt;http://www.browniekitchen.com&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What makes the bad link bad is that the anchor text is a URL, and that domain in that URL does not match the domain in the link destination. Phishing filters look for this domain mismatch. In the good example, however, the anchor text is not a URL to begin with, so the phishing filter will accept it as legitimate.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;Who should do this? The person designing your email campaigns.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:180%;"&gt;Further Reading:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For more information on general JangoMail deliverability practices, see our &lt;a href="http://www.jangomail.com/features_deliverability.asp"&gt;Deliverability page&lt;/a&gt; on our web site&lt;br /&gt;&lt;br /&gt;There are basic steps that any email marketer can take with the &lt;span style="font-weight: bold;"&gt;content &lt;/span&gt;of their emailings to ensure high deliverability. The content-related issues are covered in the PDF document &lt;a href="http://www.jangomail.com/documents/Public/JangoMail_Deliverability.pdf"&gt;Optimizing Email Deliverability&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-674404002362796815?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/11/how-to-optimize-email-deliverability.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-573830377873429105</guid><pubDate>Fri, 06 Nov 2009 09:29:00 +0000</pubDate><atom:updated>2009-11-06T11:16:45.542-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>marathon race tracking</category><category domain='http://www.blogger.com/atom/ns#'>marathon email tracking</category><title>How we scaled up the JangoSMTP service to accommodate the ING New York City Marathon</title><description>&lt;span style="font-size: 180%;"&gt;Overview of the New York City Marathon and its Email Alerts&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It was a sunny mid-September day when my head of sales informed me that the systems integrator for the &lt;span style="font-weight: bold;"&gt;2009 New York City Marathon&lt;/span&gt; was looking at our &lt;a href="http://www.jangosmtp.com/"&gt;SMTP service&lt;/a&gt; for the delivery of alert emails on runners during the marathon.  Given that our &lt;a href="http://www.jangomail.com/Features-SMTP-Relay-Tracking.asp"&gt;SMTP relay service&lt;/a&gt; was relatively new at the time, we saw this as an opportunity to demonstrate the powerful tracking features and performance capabilities of our service.&lt;br /&gt;&lt;br /&gt;Having tried other email vendors and their own internal systems in the past, the marathon was looking to avoid past issues, such as large delays in the delivery of the email alerts and email blocking issues with consumer ISPs like GMail and Hotmail.&lt;br /&gt;&lt;br /&gt;The marathon had about 42,000 total runners.  Friends and family members of each runner could "subscribe" to a runner, such that whenever the runner reached a checkpoint during the marathon, an email alert would be sent to the subscribers of that runner.  This would be done electronically via a Chronotrack D-Tag.  For more information on the electronic tracking of runners, see &lt;a href="http://www.nycmarathon.org/race_scoring.htm"&gt;http://www.nycmarathon.org/race_scoring.htm&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;My team was told to expect anywhere from &lt;span style="font-weight: bold;"&gt;400,000 to 2,000,000 email alerts&lt;/span&gt; to be sent out during the race.  That represents an average of 10 to 50 email alerts per runner, depending on how many individuals subscribe to a particular runner.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;The Speed Problem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The JangoSMTP service has been a single-node service since its launch earlier in 2009.  It was serviced by one single fault-tolerant, RAID-based, multiple-CPU, high memory Windows server located at relay.jangosmtp.net.  The SMTP service works by receiving email at relay.jangosmtp.net, and then passing emails along to one of JangoMail's 40 outbound SMTP senders for delivery to the final recipient.  The relay.jangosmtp.net server could receive an unlimited amount of emails and saturate our upstream Internet provider's bandwidth, but it could only process, add tracking, and transmit to the outbound SMTP senders over the Internet at a rate of 250 emails/minute.  I therefore calculated:&lt;br /&gt;&lt;br /&gt;250 emails/minute x 60 = &lt;span style="font-weight: bold;"&gt;15,000 emails/hour&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Based on past marathon results, I estimated that the fastest runners would complete the race in about 2 hours, and the slowest runners would complete the race in about 6 hours.  However, the marathon would be initiated in &lt;a href="http://www.nycmarathon.org/entrantinfo/wave_start.htm"&gt;3 waves of 14,000 runners each&lt;/a&gt;, distributed over an hour the morning of the marathon.  So 6 hours of running time, plus an added hour for the start of the last wave, meant 7 hours of sending email.&lt;br /&gt;&lt;br /&gt;7 hours x 15,000 emails/hour = &lt;span style="font-weight: bold;"&gt;105,000 emails over 7 hours&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Uh oh. &lt;/span&gt; We weren't nearly fast enough.  Even at the minimum expected volume, we weren't fast enough by a factor of 4.  And at the maximum expected volume, we only had 5% of the needed capacity.&lt;br /&gt;&lt;br /&gt;The two bottlenecks were 1) the processing of an email message, meaning the dis-assembly and re-assembly to determine what user it belonged to and add tracking mechanisms, and 2) transmitting the email to a SMTP sender.  Point #2 warrants more explanation.  &lt;span style="font-style: italic;"&gt;While there is no bottleneck for relay.jangosmtp.net to receive emails from the outside world, there can be a bottleneck for relay.jangosmtp.net to transmit emails&lt;/span&gt;, since relay.jangosmtp.net must transmit the message to separate SMTP sender located on separate networks in separate data centers.  This transmission happens over the Internet, and based on where the SMTP sender is located and the routing to it, speed can fluctuate.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;Time to Scale Up&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%; font-style: italic;"&gt;Load Balancing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We needed to scale up, and scale up fast.  The initial plan was to order four more servers, and have them each serve as an additional SMTP receiver and processor for relay.jangosmtp.net.  The JangoMail architecture does not employ the use of appliance-based load balancers, so I decided to handle the load balancing via our Domain Name System (DNS).&lt;br /&gt;&lt;br /&gt;We created multiple DNS "A" records for relay.jangosmtp.net, each with a Time to Live (TTL) of 60 seconds.  Five "A" records were created in total, each with a different IP address.  The first of the five was the original IP for relay.jangosmtp.net, and the other four were for the four additional servers we commissioned.&lt;br /&gt;&lt;br /&gt;By keeping the TTL at a short 60 seconds, I could make certain that each of the five servers would receive an equal load of email every minute.  And since not all DNS servers on the net respect TTLs and sometimes do their own caching, I confirmed with our tech contact at the marathon that their systems would NOT cache the IPs for relay.jangosmtp.net beyond the designated 60 second TTLs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%; font-style: italic;"&gt;SQL Query Caching&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Every email that arrives at relay.jangosmtp.net is disassembled, tracked, re-assembled, and then passed to an outbound SMTP server for actual sending.  In order to determine what email belongs to what user, and what tracking options each user has selected, the originating IP address of each email message is looked up against an IP Address table, and then once the user is determined from the IP address, the UserAccounts table in the core database is queried to determine what tracking/DomainKeys options the user has selected.  &lt;span style="font-weight: bold;"&gt;These two queries combined took anywhere from 0.05 seconds to 0.2 seconds&lt;/span&gt;, depending on the load on the database at the time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;We shaved this time down to 0.001 seconds &lt;/span&gt;by caching the results of these queries and refreshing every five minutes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%; font-style: italic;"&gt;Multi-threading&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Our custom SMTP architecture is a multi-threaded model, allowing for the simultaneous processing and delivery of emails across user accounts.  We had been informed ahead of time that the marathon would trigger email alerts from two originating IP addresses.  We therefore configured two dedicated processing threads on each of the 8 servers.  This gave us 16 total processing threads, and also isolated the processing/delivery of the marathon's emails from our other clients' emails during the race.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%; font-style: italic;"&gt;Distributed Transactional Senders&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The SMTP service is part of JangoMail's transactional email platform, which also includes the &lt;a href="http://api.jangomail.com/api.asmx?op=SendTransactionalEmail"&gt;SendTransactionalEmail&lt;/a&gt; API method.  All transactional emails are sent through the email sender that is assigned for a particular user.  For fault-tolerance purposes, every user has a list of transactional email senders assigned to it, such that if the first email sender is unavailable or offline, the email is passed to the second, and to the third, and so on, until the email is successfully transmitted.  &lt;span style="font-style: italic;"&gt;This approach was great for fault-tolerance and redundancy, but not for scaleability.&lt;/span&gt;  If the first server in the list was online and available, then it would receive all the transactional emails for that account.&lt;br /&gt;&lt;br /&gt;I therefore decided to add an internally controlled user-level setting option to randomize the list of senders.  Now, if a user's list of transactional senders included:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: courier new;"&gt;Sender1, Sender2, Sender3, Sender4&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now the relay.jangosmtp.net servers would farm out the emails for delivery to any sender in the user's list at random, ensuring that as many transactional senders as were assigned would receive an equal load of emails to deliver, rather than having the first available sender do all the delivery.  This also aided in resolving the bandwidth bottleneck with the SMTP senders mentioned earlier.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%; font-style: italic;"&gt;Still not fast enough - need 3 more servers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Given our SQL query optimizations, multi-threading, additional servers, the timing now looked like:&lt;br /&gt;&lt;br /&gt;400 emails/minute/server x 5 servers = 2,000 emails/minute x 60 minutes = 120,000 emails/hour.&lt;br /&gt;&lt;br /&gt;120,000 emails/hour x 7 hours = &lt;span style="font-weight: bold;"&gt;840,000 emails over 7 hours&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;However, if the load was over 1 million emails, there would still be a delay.  I decided to annex 3 additional servers that are already a part of the JangoMail network but weren't active on port 25, and turn them into 3 additional SMTP receivers.  There were now 8 total DNS "A" records for relay.jangosmtp.net.&lt;br /&gt;&lt;br /&gt;With just 48 hours before the marathon, we were informed that the expected outbound volume, based on the number of subscribers so far, would be about 750,000 emails.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%; font-style: italic;"&gt;And just in case all else failed...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;While we've always believed in the performance and reliability of our code and architecture, we decided that for a project of this caliber, a backup plan was necessary in case our custom SMTP architecture was unable to perform.  The JangoSMTP custom architecture is what allows emails that pass through the SMTP relay to be open and click-tracked, and stored in a database, so that SMTP logs can be viewed and reports can be generated based on open and click timing, domains, and geo-tracking reports based on IP addresses.  &lt;span style="font-style: italic;"&gt;However, the primary issue for the marathon, was to ensure the emails were delivered, and delivered on time.&lt;/span&gt;  Therefore, a backup plan was put into place that could guarantee the emails would be delivered, even if we had to eliminate the tracking and logging based on our own custom architecture.  If we found that JangoSMTP could not handle the load, we would replace the instances of the JangoSMTP receiver with Microsoft's built-in SMTP service (part of Internet Information Services), such that emails would be received and delivered to the final recipient, without any processing needed in between.&lt;br /&gt;&lt;br /&gt;In order to isolate the marathon from our other clients in case this backup plan had to be put in place, &lt;span style="font-style: italic;"&gt;we setup the domain marathon.jangosmtp.net, which mimiced the 8 A records for relay.jangosmtp.net&lt;/span&gt;, and we &lt;span style="font-weight: bold;"&gt;asked the system integrators for the marathon to connect to marathon.jangosmtp.net instead of relay.jangosmtp.net&lt;/span&gt;.  This would allow us to re-direct just their email on the day of the race if needed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;The Day of the Race - November 1, 2009&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I awoke at 7:30 AM EST on that Sunday, after having been out the night prior for Halloween.  The emails would begin trickling in at 8:30 AM EST for runner check-ins, and the first wave of the race was set to begin at 9:40 AM EST.&lt;br /&gt;&lt;br /&gt;I was watching the race live on TV, while at the same time monitoring the traffic flows across our 8 instances of relay.jangosmtp.net.  Emails were being received, processed, and sent quickly, and there was no backlog...until about 12:25 PM EST.&lt;br /&gt;&lt;br /&gt;All three waves had been released, and runners from all three waves were triggering a massive volume of email alerts.  From 12:25 PM EST to about 12:35 PM EST, there was a 4-5 minute delay with final delivery.  Thankfully, the backlog period only lasted 10 minutes.  It makes sense that approximately 3 hours after the release of the first wave, that the highest volume of email was passing through, since the greatest number of runners would still be running around this time.&lt;br /&gt;&lt;br /&gt;Additionally, at about 1:00 PM EST, we discovered that comcast.net and att.net/bellsouth.net domains were blocking one of the IPs from which marathon email was sending.  While we did have a mechanism by which domain-specific routes could be used, such that we could enable all comcast.net/att.net/bellsouth.net email to go through one specific non-blocked IP address, the complexity of the randomization system we had added to accomodate the bandwidth bottleneck rendered this mechanism non-functional.  I called our lead developer, who was on call, asked him to make a change to the sender-determination algorithm, and re-deployed our code across all 8 SMTP server instances.  We were now able to route all comcast.net/att.net/bellsouth.net email through a separate non-blocked SMTP sender.  &lt;span style="font-style: italic;"&gt;In the end, the marathon alert emails had less than a 0.3% blocking rate.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After 1:00 PM EST, no further email deliverability or backlog issues ensued.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We were thrilled that we were able to pull this off for the 2009 ING New York City Marathon. Even post-marathon, we continue to make performance and feature enhancements to our transactional email platform.  &lt;span style="font-style: italic;"&gt;If you have an important project for which sending email is critical, please &lt;/span&gt;&lt;a href="http://www.jangomail.com/contactus.asp" style="font-style: italic;"&gt;get in touch&lt;/a&gt;&lt;span style="font-style: italic;"&gt; with us, and we'll work as hard for you as we did for the marathon.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-573830377873429105?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/11/how-we-scaled-up-jangosmtp-service-to.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-4067556791063864529</guid><pubDate>Fri, 06 Nov 2009 07:55:00 +0000</pubDate><atom:updated>2009-11-12T08:45:30.510-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>transactional emails</category><title>New API Method for Template-Driven Transactional Emails</title><description>&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-size: x-large;"&gt;Overview&lt;/span&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;Marketers can now create and edit &lt;b&gt;Transactional Email Templates&lt;/b&gt; on the &lt;b&gt;Send Email Page&lt;/b&gt; and without the help of their IT team.&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;To enable this, we launched a new API method: &lt;a href="http://api.jangomail.com/api.asmx?op=SendTransactionalEmailFromTemplate"&gt;SendTransactionalEmailFromTemplate&lt;/a&gt;. Instead of&amp;nbsp;passing the full details of the email message using the regular &lt;a href="http://api.jangomail.com/api.asmx?op=SendTransactionalEmail"&gt;SendTransactionalEmail&lt;/a&gt; method, you can now simply pass the email &lt;b&gt;Campaign ID&lt;/b&gt; and let your marketers use the JangoMail interface to&amp;nbsp;dictate the email's&amp;nbsp;creative content.&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;a href="http://api.jangomail.com/api.asmx?op=SendTransactionalEmailFromTemplate"&gt;SendTransactionalEmailFromTemplate&lt;/a&gt; works like the &lt;a href="http://api.jangomail.com/api.asmx?op=SendTransactionalEmail"&gt;SendTransactionalEmail&lt;/a&gt; method, but does not require you to enter &lt;b&gt;FromEmail&lt;/b&gt;, &lt;b&gt;FromName&lt;/b&gt;, &lt;b&gt;Subject&lt;/b&gt;, &lt;b&gt;MessagePlain&lt;/b&gt;, and &lt;b&gt;MessageHTML&lt;/b&gt;. Instead you must enter &lt;b&gt;CampaignID&lt;/b&gt;, &lt;b&gt;PersonalizationValues&lt;/b&gt;, &lt;b&gt;PersonalizationColDelimiter&lt;/b&gt; and &lt;b&gt;PersonalizationFields&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;span style="font-size: x-large;"&gt;Input Parameters&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #990000;"&gt;Username&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Your JangoMail account username&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;b&gt;&lt;span style="color: #990000;"&gt;Password&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;Your JangoMail account password&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;b&gt;&lt;span style="color: #990000;"&gt;CampaignID&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;Marketers&amp;nbsp;should create an &lt;b&gt;Email Campaign&lt;/b&gt; as they normally would, starting on the &lt;b&gt;Send Email Page &lt;/b&gt;(or just use the &lt;a href="http://api.jangomail.com/api.asmx?op=SendMassEmail"&gt;SendMassEmail&lt;/a&gt; API method). Once they create a campaign and send a test, you can find the &lt;b&gt;Campaign ID&lt;/b&gt;&amp;nbsp;in the &lt;b&gt;Reporting and Analytics&lt;/b&gt; section of the JangoMail interface. Look in the &lt;b&gt;ID&lt;/b&gt; column to find the&lt;b&gt; Campaign ID&lt;/b&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;b&gt;&lt;span style="color: #990000;"&gt;ToEmailAddress&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;The single email address to whom you want to send this email message.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;b&gt;&lt;span style="color: #990000;"&gt;PersonalizationFields&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;i&gt;Example:&lt;br /&gt;&lt;/i&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;FirstName,LastName,Company,FromAddress&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-family: inherit;"&gt;JangoMail uses the following syntax for &lt;/span&gt;&lt;a href="http://www.jangomail.com/documents/Public/JangoMail_Tutorial_Personalization.pdf"&gt;&lt;span style="font-family: inherit;"&gt;personalization&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: inherit;"&gt; and &lt;b&gt;Marketers&lt;/b&gt; should continue to use this when creating transactional email templates. Mail-merge personalization tags can be used in the Subject, HTML Message, Plain Text Message, From Display Name, and From Email Address:&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;%%FieldName%%&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;or&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;%%FieldName**Default Value%&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The second version of the personalization syntax can be used in cases where the value of &lt;i&gt;FieldName &lt;/i&gt;is blank, such that a default value is substituted instead of a blank.&lt;b&gt;&lt;span style="color: #990000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #990000;"&gt;PersonalizationValues &lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;i&gt;Example:&lt;br /&gt;&lt;/i&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;Ajay,Goel,Silicomm,ag@silicomm.com&lt;/b&gt;&lt;b&gt;&lt;span style="color: #990000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #990000;"&gt;PersonalizationColDelimiter&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;i&gt;Specify a column delimiter as follows:&lt;/i&gt; &lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;b&gt;c&lt;/b&gt;&amp;nbsp;for a comma&lt;br /&gt;&lt;b&gt;s&lt;/b&gt;&amp;nbsp;for a space&lt;br /&gt;&lt;b&gt;n&lt;/b&gt;&amp;nbsp;for a&amp;nbsp;newline, or a hard break&lt;br /&gt;&lt;b&gt;t&lt;/b&gt;&amp;nbsp;for a tab&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: #990000;"&gt;&lt;b&gt;Options&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;A comma separated list of name/value pairs.&amp;nbsp; The names of the various options and their associated values are explained below.&lt;br /&gt;&lt;span style="color: #990000;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt; &lt;br /&gt;&lt;/span&gt;&lt;i&gt;You may specify:&lt;br /&gt;&lt;/i&gt;&lt;b&gt;TransactionalGroupID&lt;/b&gt; (a numeric ID of a previously created Transactional Group)&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;SkipUnsubCheck &lt;/b&gt;("True" or "False")&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;i&gt;You&amp;nbsp;can also specify the following, but if not specified,&amp;nbsp;values will pull&amp;nbsp;from your original email campaign. User-specified values here will override values in your email campaign:&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;b&gt;ReplyTo &lt;/b&gt;(any valid email address)&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;CC &lt;/b&gt;(any valid email address)&lt;br /&gt;&lt;b&gt;BCC &lt;/b&gt;(any valid email address)&lt;br /&gt;&lt;b&gt;CharacterSet &lt;/b&gt;(a character set like "ISO-8859-1" or "US-ASCII")&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;Encoding &lt;/b&gt;(either "7 bit" or "Quoted Printable" or "Base 64")&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;Priority &lt;/b&gt;(either "Low", "Medium", or "High")&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;UseSystemMAILFROM &lt;/b&gt;("True" or "False")&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Receipt &lt;/b&gt;("True" or "False")&lt;br /&gt;&lt;b&gt;Wrapping &lt;/b&gt;(a numeric value from 0 to 100, with 0 meaning no wrapping takes place)&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;ClickTrack &lt;/b&gt;("True" or "False")&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;OpenTrack &lt;/b&gt;("True" or "False")&lt;br /&gt;&lt;b&gt;NoClickTrackText &lt;/b&gt;("True" or "False")&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Attachment1 &lt;/b&gt;(the name of a previously FTPd file, like "Invoice.pdf")&lt;b&gt;&lt;br /&gt;Attachment2 &lt;/b&gt;(the name of a previously FTPd file, like "Invoice.pdf")&lt;br /&gt;&lt;b&gt;Attachment3 &lt;/b&gt;(the name of a previously FTPd file, like "Invoice.pdf")&lt;br /&gt;&lt;b&gt;Attachment4 &lt;/b&gt;(the name of a previously FTPd file, like "Invoice.pdf")&lt;br /&gt;&lt;b&gt;Attachment5&lt;/b&gt; (the name of a previously FTPd file, like "Invoice.pdf")&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;Example&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;In the below example, the input parameters are:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Username:&lt;/b&gt;jangomail&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Password:&lt;/b&gt;******&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;CampaignID:&lt;/b&gt;265987456&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;ToEmailAddress:&lt;/b&gt;jangomail@gmail.com&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;PersonalizationFields:&lt;/b&gt;FirstName,OrderNumber&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;PersonalizationValues:&lt;/b&gt;Bob,123456&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;PersonalizationColDelimiter:&lt;/b&gt;c&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Options:&lt;/b&gt;ReplyTo=jm@gmail.com,OpenTrack=True&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;This example assumes that the Subject and/or Body contains personalization placeholders for FirstName and OrderNumber.&amp;nbsp; In fact, for Campaign ID 265987456, the actual message is:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;------BEGIN MESSAGE-------&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;Dear %%FirstName**Valued Customer%%,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;Your order has shipped.&amp;nbsp; Your order number is %%OrderNumber%%.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;------END MESSAGE-------&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;This transactional email will be open tracked.&amp;nbsp; To ensure that it will also be click tracked, we would add "ClickTrack=True" to the Options parameter.&amp;nbsp; If we wanted it to be a high priority message instead of the default medium priority, we could add "Priority=High", such that the full Options string would look like:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Options:ReplyTo=jm@gmail.com,OpenTrack=True,ClickTrack=True,Priority=High&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jangomail.com/blog/uploaded_images/TemplateExample-701836.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" sr="true" src="http://www.jangomail.com/blog/uploaded_images/TemplateExample-701835.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;To&amp;nbsp;test the operation using the HTTP POST protocol, visit the &lt;a href="http://api.jangomail.com/api.asmx?op=SendTransactionalEmailFromTemplate"&gt;JangoMail API&amp;nbsp;page&lt;/a&gt; on this method and&amp;nbsp;click the &lt;b&gt;Invoke&lt;/b&gt; button.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;Frequently Asked Questions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Q. &lt;strong&gt;What's the difference between SendTransactionalEmailFromTemplate and SendTransactionalEmail?&lt;/strong&gt;&lt;br /&gt;A. When calling SendTransactionalEmail, you are passing in the full details of that email message, including the Subject, the HTML Message, the Plain Text Message, tracking options and much more.&amp;nbsp; However, if you've already created a template message in the Send Email section of the JangoMail web interface, you can call SendTransactionalEmailFromTemplate to send transactional emails and avoid having to pass in all the message details on every method call.&amp;nbsp; You simply reference the Campaign ID of the email message that you created in the Send Email section.&lt;br /&gt;&lt;br /&gt;Q. &lt;strong&gt;I see there's a PersonalizationColDelimiter input paramter.&amp;nbsp; Where is the PersonalizationRowDelimiter input parameter?&lt;/strong&gt;&lt;br /&gt;A. Since this is a method to send a single transactional email, only one set of values can be provided for the single recipient of the email message.&amp;nbsp; There is no need for a row delimiter since the data should only be for one record.&lt;br /&gt;&lt;br /&gt;Q. &lt;strong&gt;What is the TransactionalGroupID?&lt;/strong&gt;&lt;br /&gt;A. This is an optional setting that can be specified as part of the Options input parameter.&amp;nbsp; Transactional Groups are a way to categorize different types of transactional emails, like Order Confirmations, Shipping Notifications, and Thank You messages.&amp;nbsp; You can create different Transactional Groups using the web interface or by calling AddTransactionalGroup.&amp;nbsp; Every Group has a numeric ID assigned to it, and so to assign a particular transactional email to a Group, you can set the TransactionalGroupID.&lt;br /&gt;&lt;br /&gt;Q. &lt;strong&gt;How do I send attachments with my transactional email?&lt;/strong&gt;&lt;br /&gt;A. You can specify the names of attachments in the Options input parameter.&amp;nbsp; However, the file names you specify must already be present in your account.&amp;nbsp; You should FTP your files to client.jangomail.com/Attachments prior to calling this method with attachments.&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-4067556791063864529?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/11/new-api-method-for-template-driven.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-8790902673903445599</guid><pubDate>Tue, 27 Oct 2009 13:35:00 +0000</pubDate><atom:updated>2009-10-27T09:48:20.535-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>smtp relay service</category><title>Official Launch of JangoSMTP.com, Our Stand-Alone SMTP Relay Service</title><description>&lt;span style="color: #6aa84f;"&gt;We have just launched &lt;/span&gt;&lt;a href="http://www.jangosmtp.com/"&gt;&lt;strong&gt;&lt;span style="color: #6aa84f;"&gt;JangoSMTP.com&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;span style="color: #6aa84f;"&gt;, a new stand-alone SMTP relay service and the first designed for email marketers.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why use it?&lt;/strong&gt;&lt;br /&gt;JangoSMTP is the first SMTP relay service to offer &lt;strong&gt;open and click tracking&lt;/strong&gt;. It also comes with a variety of features that contribute to&amp;nbsp;its &lt;strong&gt;extreme deliverability&lt;/strong&gt;:&amp;nbsp;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DomainKeys/DKIM Signing&lt;/li&gt;&lt;li&gt;SPF/SenderID Authentication&lt;/li&gt;&lt;li&gt;Sender Score Certification&lt;/li&gt;&lt;li&gt;Feedback Loops with ISPs&lt;/li&gt;&lt;/ul&gt;Visit our site for&amp;nbsp;JangoSMTP's&amp;nbsp;&lt;a href="http://www.jangosmtp.com/How-It-Works.asp"&gt;Full Features List&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Who is it for?&lt;/strong&gt;&lt;br /&gt;JangoSMTP can be utilized by &lt;strong&gt;users of&lt;/strong&gt; &lt;strong&gt;desktop email clients&lt;/strong&gt; (Outlook, Thunderbird, etc.),&amp;nbsp; &lt;strong&gt;Gmail users&lt;/strong&gt;, and &lt;strong&gt;web programmers&lt;/strong&gt; who send transactional emails through their own corporate servers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Where can I learn more?&lt;/strong&gt;&lt;br /&gt;Go to &lt;a href="http://www.jangosmtp.com/"&gt;&lt;strong&gt;http://www.jangosmtp.com/&lt;/strong&gt;&lt;/a&gt; for more information or &lt;a href="http://www.jangosmtp.com/Contact-Us.asp"&gt;&lt;strong&gt;Contact Us&lt;/strong&gt;&lt;/a&gt; directly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-8790902673903445599?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/10/official-launch-of-jangosmtpcom-our_27.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-4774673060610444696</guid><pubDate>Mon, 26 Oct 2009 17:55:00 +0000</pubDate><atom:updated>2009-10-27T16:12:39.097-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>email api</category><title>New API Method: AddTransactionalGroup</title><description>We just released a new API method for the &lt;a href="http://api.jangomail.com/"&gt;JangoMail API&lt;/a&gt;&amp;nbsp;which allows you to add a Transactional Group to your account: &lt;br /&gt;&lt;br /&gt;*&lt;a href="http://api.jangomail.com/api.asmx?op=AddTransactionalGroup"&gt;AddTransactionalGroup&lt;/a&gt;&lt;br /&gt;&amp;nbsp; Adds a new Transactional Group to your account. Returns a string.&lt;br /&gt;&lt;br /&gt;We also recently released &lt;a href="http://www.jangomail.com/blog/2009/10/new-transactional-email-reporting.html"&gt;3 other transactional email API methods&lt;/a&gt;. These methods allow you to retrieve opens, clicks, unsubscribes, bounces, and complaint statistics for a single transactional email in your account.&lt;br /&gt;&lt;br /&gt;Visit &lt;a href="http://api.jangomail.com/"&gt;api.jangomail.com&lt;/a&gt; for a full list of our API methods.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-4774673060610444696?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/10/new-api-method-addtransactionalgroup.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-5741228313810921316</guid><pubDate>Thu, 22 Oct 2009 17:54:00 +0000</pubDate><atom:updated>2009-10-22T14:57:03.184-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>email marketing features</category><title>New Design: Features Page</title><description>JangoMail has a very comprehensive feature list and we've been working on&amp;nbsp;a way to organize it so that it's easy to navigate. We want to make sure that our current and prospective customers are able to identify all of our capabilities and can easily find all of the information and tutorials we have on each feature.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;We are excited to announce that we&amp;nbsp;just relaunched our &lt;/span&gt;&lt;a href="http://www.jangomail.com/features_overview.asp"&gt;&lt;span style="color: #38761d;"&gt;&lt;strong&gt;Email&amp;nbsp;Features&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #274e13;"&gt;&lt;span style="color: #38761d;"&gt; page, which now has an improved navigation system&lt;/span&gt;.&lt;/span&gt; You can expand each feature set and feature for more information.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jangomail.com/blog/uploaded_images/features-page-791001.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://www.jangomail.com/blog/uploaded_images/features-page-790465.gif" vr="true" width="330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;*Use the &lt;strong&gt;Table of Contents&lt;/strong&gt; to find the feature category you are interested in.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jangomail.com/blog/uploaded_images/featuretable-748189.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.jangomail.com/blog/uploaded_images/featuretable-748188.gif" vr="true" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;/ul&gt;*To navigate to a certain feature's description, video, tutorial or blog entry, simply click the arrow next to that feature. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jangomail.com/blog/uploaded_images/featuresnavarrow-744387.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.jangomail.com/blog/uploaded_images/featuresnavarrow-744384.gif" vr="true" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&amp;nbsp; Then click on the link for the information you would like to see.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jangomail.com/blog/uploaded_images/featurenavvideo-794098.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="169" src="http://www.jangomail.com/blog/uploaded_images/featurenavvideo-794095.gif" vr="true" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;*To see a visual description of a certain feature, click on the name of that feature.&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jangomail.com/blog/uploaded_images/featuresnavname-775120.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.jangomail.com/blog/uploaded_images/featuresnavname-775119.gif" vr="true" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&amp;nbsp; A window will pop up with a visual description of the feature.&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://www.jangomail.com/blog/uploaded_images/featuresnavname2-774522.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="http://www.jangomail.com/blog/uploaded_images/featuresnavname2-774520.gif" vr="true" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;Browse through our new page yourself at: &lt;a href="http://www.jangomail.com/features_overview.asp"&gt;http://www.jangomail.com/features_overview.asp&lt;/a&gt;. Let us know what you think!&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-5741228313810921316?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/10/redesigned-features-page.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-5054798583947402961</guid><pubDate>Thu, 22 Oct 2009 02:10:00 +0000</pubDate><atom:updated>2009-10-21T22:18:54.975-04:00</atom:updated><title>Two SMTP Service Bug Fixes</title><description>Tonight we've &lt;span style="font-weight: bold;"&gt;deployed two bug fixes&lt;/span&gt; to the &lt;a href="http://www.jangomail.com/Features-SMTP-Relay-Tracking.asp"&gt;SMTP relay service&lt;/a&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Previously, emails sent with very long Subject lines, such that the Subject line folded onto the next line, were improperly processed, and this could result in headers being visible in the email body.  &lt;span style="color: rgb(0, 153, 0);"&gt;This is now fixed.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Previously, emails sent with very long From lines, such that the From line folded onto the next line, were improperly processed, and this could result in the email not being transmitted to the final recipient at all. &lt;span style="color: rgb(0, 153, 0);"&gt;This is now fixed.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Previously, encoded subject lines, such as:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;=?utf-8?Q?You've_received_=E2=82=A8229.64_($2.00_USD)_in_your_Surveyhead_?= =?utf-8?Q?account?=&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;would not have their encoding preserved.  &lt;span style="color: rgb(0, 153, 0);"&gt;This is also now fixed.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Technical Resources:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Those wishing to read about the allowance of folded lines as stated in the SMTP specification can do so here: &lt;a href="http://www.faqs.org/rfcs/rfc822.html"&gt;http://www.faqs.org/rfcs/rfc822.html&lt;/a&gt;. Specifically, read section:&lt;br /&gt;&lt;br /&gt;3.1.1.  LONG HEADER FIELDS&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-5054798583947402961?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/10/two-smtp-service-bug-fixes.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-8982656119719182025</guid><pubDate>Mon, 19 Oct 2009 19:00:00 +0000</pubDate><atom:updated>2009-10-22T13:20:45.987-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>transactional email</category><title>New Transactional Email API Methods</title><description>We have just released 3 new &lt;strong&gt;Transactional Email API Methods&lt;/strong&gt; for the JangoMail &lt;a href="http://api.jangomail.com/"&gt;Email Marketing&amp;nbsp;API&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;These new methods allow you to &lt;span style="color: #6aa84f;"&gt;retrieve opens, clicks, unsubscribes, bounces, and complaint statistics&lt;/span&gt; for a single transactional email in your account:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;*&lt;a href="http://api.jangomail.com/api.asmx?op=Reports_Transactional_GetSingleEmailStats_Dataset"&gt;Reports_Transactional_GetSingleEmailStats_Dataset&lt;/a&gt; &lt;br /&gt;&amp;nbsp; Retrieves statistics for a transactional email. Returns a .NET DataSet. &lt;br /&gt;&lt;br /&gt;*&lt;a href="http://api.jangomail.com/api.asmx?op=Reports_Transactional_GetSingleEmailStats_String"&gt;Reports_Transactional_GetSingleEmailStats_String&lt;/a&gt; &lt;br /&gt;&amp;nbsp; Retrieves statistics for a transactional email. Returns a string. &lt;br /&gt;&lt;br /&gt;*&lt;a href="http://api.jangomail.com/api.asmx?op=Reports_Transactional_GetSingleEmailStats_XML"&gt;Reports_Transactional_GetSingleEmailStats_XML&lt;/a&gt; &lt;br /&gt;&amp;nbsp; Retrieves statistics for a transactional email. Returns an XML document.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-8982656119719182025?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/10/new-transactional-email-reporting.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-8900996283034555162</guid><pubDate>Sun, 20 Sep 2009 03:58:00 +0000</pubDate><atom:updated>2009-09-21T12:16:13.070-04:00</atom:updated><title>Technical Discussion of How Social Networking Sites Send Transactional Email</title><description>Shortly after JangoMail launched its own &lt;a href="http://www.jangomail.com/features_TransactionalMessaging.asp"&gt;transactional email platform&lt;/a&gt;, we took on a flood of new clients with a need to send "social networking" type transactional emails, including "You have a new message" notifications and "You have a new friend request" notifications. Then we launched our &lt;a href="http://www.jangomail.com/Features-SMTP-Relay-Tracking.asp"&gt;SMTP relay for email marketers&lt;/a&gt;, and the floodgates ripped off.&lt;br /&gt;&lt;br /&gt;We're often asked what the best practices are from a technical standpoint, with respect to issues like Content, From Addressing, DomainKeys and DKIM, and SPF/SenderID. Should the content of a message sent from one member to another be included in the email notification, or should the recipient have to log in to the site to read the message?  Should a "friend request" email come "from" the friend or "from" the social networking site?  Should the email contain Plain Text, or HTML, or both? To best answer these questions, I've analyzed transactional email from the most notable social networking sites -- &lt;b&gt;Facebook&lt;/b&gt;, &lt;b&gt;LinkedIn&lt;/b&gt;, &lt;b&gt;Friendster&lt;/b&gt;, and &lt;b&gt;MySpace.&lt;/b&gt;  &lt;i&gt;Note that this is an article about the technical aspects of sending transactional email. &lt;/i&gt; If you're looking for an article on transactional email strategy (what to send, how often, to whom...), then you won't find that here, but you can in &lt;a href="http://www.useit.com/alertbox/confirmation-email.html"&gt;many other places&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The following are the properties of each social networking site's email that I will analyze:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Presence of a &lt;b&gt;DomainKeys &lt;/b&gt;header.&lt;/li&gt;&lt;li&gt;Presence of a &lt;b&gt;DKIM &lt;/b&gt;header.&lt;/li&gt;&lt;li&gt;Sender Policy Framework (&lt;b&gt;SPF&lt;/b&gt;) compliant email.&lt;/li&gt;&lt;li&gt;The &lt;b&gt;From Address&lt;/b&gt;&lt;/li&gt;&lt;li&gt;The &lt;b&gt;From Display Name&lt;/b&gt;&lt;/li&gt;&lt;li&gt;The &lt;b&gt;SMTP MAIL-FROM Address&lt;/b&gt; used in the SMTP transaction&lt;/li&gt;&lt;li&gt;The &lt;b&gt;Sender &lt;/b&gt;header, if present&lt;/li&gt;&lt;li&gt;The &lt;b&gt;Reply-To&lt;/b&gt; header, if present&lt;/li&gt;&lt;li&gt;Use of a &lt;span style="font-weight: bold;"&gt;unique identifier&lt;/span&gt; in the &lt;span style="font-weight: bold;"&gt;SMTP MAIL-FROM&lt;/span&gt; address&lt;/li&gt;&lt;li&gt;The &lt;span style="font-weight: bold;"&gt;content&lt;/span&gt;, particularly whether a friend's message is present in the Email Body, or whether the user must log in to read the message.&lt;/li&gt;&lt;li&gt;The use of &lt;span style="font-weight: bold;"&gt;HTML versus Plain Text MIME parts&lt;/span&gt;.&lt;/li&gt;&lt;/ol&gt;Let's get started with the biggest social network of all, Facebook:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;Facebook:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When somebody sends me a message on Facebook, I get an email notification with the Subject line:&lt;br /&gt;&lt;br /&gt;"Mary Parker sent you a message on Facebook..."&lt;br /&gt;&lt;br /&gt;The Body of the email contains the actual message, which is convenient, because it prevents me from having to log in to Facebook to read the message.&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;;"&gt;&lt;span style="font-family: courier new; font-size: 85%;"&gt;&lt;b&gt;From Address:&lt;/b&gt; notification+mummiv~d@facebookmail.com&lt;b&gt;&lt;br /&gt;Reply-To:&lt;/b&gt; noreply@facebookmail.com&lt;b&gt;&lt;br /&gt;From Name:&lt;/b&gt; Facebook&lt;b&gt;&lt;br /&gt;DKIM-Signature:&lt;/b&gt; v=1; a=rsa-sha1; &lt;b&gt;d=facebookmail.com&lt;/b&gt;; s=q1-2009b; c=relaxed/relaxed;q=dns/txt; i=@facebookmail.com; t=1253415012;h=From:Subject:Date:To:MIME-Version:Content-Type;bh=fLwGefDfPrLKUK2vwWzaC5k5iNo=;b=DfJugajI0Fsc5FIppBQSfSAAiV+WuK1ugzc00USpIkJku3sUgcupO+TPua0Tcxw7qJDUE0yRohPMWz3jPwPfRA==;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;A &lt;b&gt;DKIM-Signature &lt;/b&gt;header for facebookmail.com is present, but it is noteworthy that a &lt;b&gt;DomainKey-Signature&lt;/b&gt; header is not present.&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;SMTP MAIL-FROM&lt;/span&gt; address is: &lt;span style="font-weight: bold;"&gt;notification+mummiv~d@facebookmail.com&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Facebook Transactional Email SMTP Log:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-size: 78%;"&gt;69.63.178.170 [03A4] 22:50:13 Connected&lt;br /&gt;69.63.178.170 [03A4] 22:50:13 &amp;gt;&amp;gt;&amp;gt; 220 mail.silicomm.com ESMTP IceWarp 9.1.0; Sat, 19 Sep 2009 22:50:13 -0400&lt;br /&gt;69.63.178.170 [03A4] 22:50:13 &amp;lt;&amp;lt;&amp;lt; EHLO mx-out.facebook.com&lt;br /&gt;69.63.178.170 [03A4] 22:50:13 &amp;gt;&amp;gt;&amp;gt; 250-mail.silicomm.com Hello mx-out.facebook.com [69.63.178.170], pleased to meet you.&lt;br /&gt;69.63.178.170 [03A4] 22:50:13 &amp;lt;&amp;lt;&amp;lt; MAIL FROM:&amp;lt;&lt;span style="font-weight: bold;"&gt;notification+mummiv~d@facebookmail.com&lt;/span&gt;&amp;gt;&lt;br /&gt;69.63.178.170 [03A4] 22:50:13 &amp;gt;&amp;gt;&amp;gt; 250 2.1.0 &amp;lt;notification+mummiv~d@facebookmail.com&amp;gt;... Sender ok&lt;br /&gt;69.63.178.170 [03A4] 22:50:13 &amp;lt;&amp;lt;&amp;lt; RCPT TO:&amp;lt;AjayGoel@silicomm.com&amp;gt;&lt;br /&gt;69.63.178.170 [03A4] 22:50:13 &amp;gt;&amp;gt;&amp;gt; 250 2.1.5 &amp;lt;&lt;/span&gt;&lt;span style="font-family: courier new; font-size: 78%;"&gt;AjayGoel@silicomm.com&lt;/span&gt;&lt;span style="font-family: courier new; font-size: 78%;"&gt;&amp;gt;... Recipient ok&lt;br /&gt;69.63.178.170 [03A4] 22:50:13 &amp;lt;&amp;lt;&amp;lt; DATA&lt;br /&gt;69.63.178.170 [03A4] 22:50:13 &amp;gt;&amp;gt;&amp;gt; 354 Enter mail, end with "." on a line by itself&lt;br /&gt;69.63.178.170 [03A4] 22:50:13 *** &amp;lt;notification+mummiv~d@facebookmail.com&amp;gt; &amp;lt;ajay@us.jangomail.com&amp;gt; 1 2021 00:00:00 OK BLS56313&lt;br /&gt;69.63.178.170 [03A4] 22:50:13 &amp;gt;&amp;gt;&amp;gt; 250 2.6.0 2021 bytes received in 00:00:00; Message id BLS56313 accepted for delivery&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The &lt;b&gt;SPF &lt;/b&gt;record for &lt;b&gt;facebookmail.com&lt;/b&gt; is:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-size: 85%;"&gt;"v=spf1 mx ip4:204.15.20.0/22 ip4:69.63.176.0/20 -all"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The connecting IP is 69.63.178.170, which is a part of the "ip4:69.63.176.0/20" directive and therefore this IP is SPF-valid for sending email "FROM" &lt;b&gt;facebookmail.com&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Noteworthy Points:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;It's excellent that &lt;span style="font-weight: bold;"&gt;Facebook is employing both SPF and DKIM&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;The email&lt;span style="font-weight: bold;"&gt; lacks a DomainKey-Signature header&lt;/span&gt; for backwards compatibility for receiving systems that might not be DKIM-compliant yet.&lt;/li&gt;&lt;li&gt;The email is &lt;span style="font-weight: bold;"&gt;from "Facebook" and not my friend "Mary Parker"&lt;/span&gt;. This is likely to prevent people from attempting to reply to the email as a way of writing back to "Mary Parker". The only way to reply to the message is to login to Facebook and use their internal messaging system.&lt;/li&gt;&lt;li&gt;Facebook's &lt;span style="font-weight: bold;"&gt;transactional emails come from the domain facebookmail.com&lt;/span&gt; rather than the more recognizable facebook.com. This is perhaps to separate email reputation from their actual high-value business domain facebook.com. That way, should their emails be treated as spam by a network, the domain name facebookmail.com will be punished, not facebook.com.&lt;/li&gt;&lt;li&gt;The X-Mailer header of the email is:&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;X-Mailer: ZuckMail [version 1.00]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Presumably, ZuckMail is an email system written by, or an homage to, Facebook's founder Mark Zuckerberg.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;LinkedIn&lt;/span&gt;&lt;span style="font-size: 180%;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;LinkedIn sends transactional email differently than Facebook. While Facebook "friend request" email comes from "Facebook" and a no-reply facebookmail.com email address, LinkedIn's &lt;span style="font-weight: bold;"&gt;"Join my network"&lt;/span&gt; emails &lt;i&gt;usually &lt;/i&gt;come "From" the person trying to add you.&lt;br /&gt;&lt;br /&gt;The relevant headers from a LinkedIn transactional email are below:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-size: 85%;"&gt;&lt;span style="font-weight: bold;"&gt;DomainKey-Signature:&lt;/span&gt; s=prod; &lt;span style="font-weight: bold;"&gt;d=linkedin.com&lt;/span&gt;; c=nofws; q=dns; h=Sender:Date:From:To:Message-ID:Subject:MIME-Version: Content-Type:X-LinkedIn-fbl;b=KQVq9LfSNIZ+6tOuz7xUaUW1wx86f62EndMqyY+bbkmI8jHQDNe8HdtW ZfJsxH50d8nvAnQHryCdQKGfBEY0u2t5sXkrRmf7yCAhhg4Q9aqBo20KZ LSUvTK726opFnO0;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sender:&lt;/span&gt; messages-noreply@bounce.linkedin.com&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new; font-size: 85%;"&gt;&lt;span style="font-weight: bold;"&gt;From:&lt;/span&gt; "Mary Parker" &lt;maryparker@hotmail.com&gt;&lt;/maryparker@hotmail.com&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: courier new;"&gt;&amp;lt;maryparker@hotmail.com&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: courier new; font-size: 85%;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;To:&lt;/span&gt; Ajay Goel &amp;lt;AjayGoel@silicomm.com&amp;gt;&lt;ajaygoel@silicomm.com&gt;&lt;/ajaygoel@silicomm.com&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Note that the the &lt;b&gt;From Name&lt;/b&gt; is my friend "Mary Parker" and the &lt;b&gt;From Address&lt;/b&gt; is Mary's email address, &lt;b&gt;maryparker@hotmail.com&lt;/b&gt;. Because no &lt;b&gt;Reply-To&lt;/b&gt; header is present, clicking "Reply" on my email client will auto-address the message to the &lt;span style="font-weight: bold;"&gt;From Address&lt;/span&gt;, &lt;b&gt;maryparker@hotmail.com&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;From an authentication perspective, it's interesting that the LinkedIn transactional email contains the &lt;span style="font-weight: bold;"&gt;DomainKey-Signature header&lt;/span&gt;, but &lt;span style="font-weight: bold;"&gt;not the more modern DKIM-Signature header&lt;/span&gt;. JangoMail transactional emails contain both the &lt;a href="http://www.jangomail.com/documents/Public/JangoMail_DomainKeys_DKIM.pdf"&gt;DomainKey-Signature and the DKIM-Signature headers&lt;/a&gt;, for the highest level of compatibility with all receiving email systems.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;LinkedIn Transactional Email SMTP Log:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt;64.74.98.137 [057C] 12:16:54 Connected&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;64.74.98.137 [057C] 12:16:54 &amp;gt;&amp;gt;&amp;gt; 220 mail.silicomm.com ESMTP IceWarp 9.1.0; Thu, 03 Sep 2009 12:16:54 -0400&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;64.74.98.137 [057C] 12:16:54 &amp;lt;&amp;lt;&amp;lt; EHLO mail15-a-aa.linkedin.com&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;64.74.98.137 [057C] 12:16:54 &amp;gt;&amp;gt;&amp;gt; 250-mail.silicomm.com Hello mail15-a-aa.linkedin.com [64.74.98.137], pleased to meet you.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;64.74.98.137 [057C] 12:16:54 &amp;lt;&amp;lt;&amp;lt; &lt;b&gt;MAIL FROM:&amp;lt;s-vEJ2DMWLs51nh5KhMMSL430pk-MMh3YJi-KV_N5M-Qy28fihJyfjtc@bounce.linkedin.com&amp;gt;&lt;/b&gt; SIZE=3706&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;64.74.98.137 [057C] 12:16:54 &amp;gt;&amp;gt;&amp;gt; 250 2.1.0 &amp;lt;s-vEJ2DMWLs51nh5KhMMSL430pk-MMh3YJi-KV_N5M-Qy28fihJyfjtc@bounce.linkedin.com&amp;gt;... Sender ok&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;64.74.98.137 [057C] 12:16:54 &amp;lt;&amp;lt;&amp;lt; RCPT TO:&amp;lt;AjayGoel@silicomm.com&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;64.74.98.137 [057C] 12:16:54 &amp;gt;&amp;gt;&amp;gt; 250 2.1.5 &amp;lt;AjayGoel@silicomm.com&amp;gt;... Recipient ok&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;64.74.98.137 [057C] 12:16:54 &amp;lt;&amp;lt;&amp;lt; DATA&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;64.74.98.137 [057C] 12:16:54 &amp;gt;&amp;gt;&amp;gt; 354 Enter mail, end with "." on a line by itself&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;64.74.98.137 [057C] 12:16:54 *** &amp;lt;s-vEJ2DMWLs51nh5KhMMSL430pk-MMh3YJi-KV_N5M-Qy28fihJyfjtc@bounce.linkedin.com&amp;gt; &amp;lt;AjayGoel@silicomm.com&amp;gt; 1 4048 00:00:00 OK KZT46754&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;64.74.98.137 [057C] 12:16:54 &amp;gt;&amp;gt;&amp;gt; 250 2.6.0 4048 bytes received in 00:00:00; Message id KZT46754 accepted for delivery&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Noteworthy Points:&lt;/span&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;1. The SMTP MAIL-FROM address is a string of characters followed by &lt;b&gt;@bounce.linkedin.com&lt;/b&gt;. LinkedIn is using a sub-domain of its high-value business domain, &lt;span style="font-weight: bold;"&gt;linkedin.com&lt;/span&gt;. JangoMail also offers the option to setup a &lt;a href="http://www.jangomail.com/documents/Public/JangoMail_Custom_Sub-Domain.pdf"&gt;sub-domain&lt;/a&gt; based off your corporate domain name. The string of randomly generated characters is presumably to track any bounce that occurs as a result of this particular transactional email. If the silicomm.com MTA sends a notification back to &lt;span style="font-weight: bold;"&gt;s-vEJ2DMWLs51nh5KhMMSL430pk-MMh3YJi-KV_N5M-Qy28fihJyfjtc@bounce.linkedin.com&lt;/span&gt;, the LinkedIn system will be able to immediately tie the identifier present in that email address and use that information to immediately notify Mary Parker that the email to me bounced. JangoMail also handles bounces to transactional emails, but with a unique identifier in the &lt;span style="font-weight: bold;"&gt;X-VConfig&lt;/span&gt; header of the message as opposed to within the MAIL-FROM address itself. Both options are legitimate for tracking bounces.&lt;/li&gt;&lt;li&gt;The SPF record for bounce.linkedin.com is:&lt;span style="font-family: courier new; font-size: 85%;"&gt;&lt;br /&gt;&lt;br /&gt;"v=spf1 redirect=linkedin.com"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The redirect directive then tells us to look up the SPF record for linkedin.com, which is:&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;&lt;br /&gt;"v=spf1 ip4:70.42.142.0/24 ip4:208.111.172.0/24 ip4:64.74.220.0/24 ip4:64.74.221.0/26 ip4:64.71.153.211 ip4:64.74.221.30 ip4:69.28.149.0/24 ip4:208.111.169.128/26 ip4:64.74.98.128/26 ip4:64.74.98.16/29 mx ~all"&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The sending IP 64.74.98.137 is covered by the "ip4:64.74.98.128/26" designation, therefore this email passes the SPF test.&lt;/li&gt;&lt;li&gt;Emails with subject line &lt;span style="font-weight: bold;"&gt;"Invitation to connect on LinkedIn"&lt;/span&gt; always has the user's information as the &lt;span style="font-weight: bold;"&gt;From Name&lt;/span&gt; / &lt;span style="font-weight: bold;"&gt;From Address&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Emails with subject line &lt;span style="font-weight: bold;"&gt;"Join my network on LinkedIn"&lt;/span&gt; sometimes have the &lt;span style="font-weight: bold;"&gt;From Name&lt;/span&gt; / &lt;span style="font-weight: bold;"&gt;From Address&lt;/span&gt; of the user, but other times &lt;span style="font-weight: bold;"&gt;From Name&lt;/span&gt; is &lt;span style="font-weight: bold;"&gt;"Mary Parker (LinkedIn Invitations)"&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;From Address&lt;/span&gt; is &lt;span style="font-weight: bold;"&gt;invitations@linkedin.com&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I have been unable to determine the reason for the ambiguity with the "Join my network on LinkedIn" emails.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;Friendster&lt;/span&gt;&lt;span style="font-size: 180%;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The following are the relevant headers from a Friendster "new message" notification:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;b&gt;From:&lt;/b&gt; Friendster &amp;lt;message-2219486617@mail.friendster.com&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;b&gt;Subject:&lt;/b&gt; New Friendster Message from Vikki - 09/07/09 10:17 PM&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;b&gt;To:&lt;/b&gt; AjayGoel@silicomm.com&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Friendster Transactional Email SMTP Log:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt;209.11.169.65 [03A4] 01:17:58 Connected&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;209.11.169.65 [03A4] 01:17:58 &amp;gt;&amp;gt;&amp;gt; 220 mail.silicomm.com ESMTP IceWarp 9.1.0; Tue, 08 Sep 2009 01:17:58 -0400&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;209.11.169.65 [03A4] 01:17:58 &amp;lt;&amp;lt;&amp;lt; EHLO c350a-5.friendster.com&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;209.11.169.65 [03A4] 01:17:58 &amp;gt;&amp;gt;&amp;gt; 250-mail.silicomm.com Hello c350a-5.friendster.com [209.11.169.65], pleased to meet you.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;209.11.169.65 [03A4] 01:17:58 &amp;lt;&amp;lt;&amp;lt; &lt;b&gt;MAIL FROM:&amp;lt;message-2219486617@mail.friendster.com&amp;gt;&lt;/b&gt; SIZE=9837&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;209.11.169.65 [03A4] 01:17:58 &amp;gt;&amp;gt;&amp;gt; 250 2.1.0 &amp;lt;message-2219486617@mail.friendster.com&amp;gt;... Sender ok&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;209.11.169.65 [03A4] 01:17:58 &amp;lt;&amp;lt;&amp;lt; RCPT TO:&amp;lt;AjayGoel@silicomm.com&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;209.11.169.65 [03A4] 01:17:58 &amp;gt;&amp;gt;&amp;gt; 250 2.1.5 &amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt;AjayGoel&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt;@silicomm.com&amp;gt;... Recipient ok&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;209.11.169.65 [03A4] 01:17:58 &amp;lt;&amp;lt;&amp;lt; DATA&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;209.11.169.65 [03A4] 01:17:58 &amp;gt;&amp;gt;&amp;gt; 354 Enter mail, end with "." on a line by itself&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;209.11.169.65 [03A4] 01:17:58 *** &amp;lt;message-2219486617@mail.friendster.com&amp;gt; &amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt;AjayGoel&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt;@silicomm.com&amp;gt; 1 10017 00:00:00 OK POZ63258&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;209.11.169.65 [03A4] 01:17:58 &amp;gt;&amp;gt;&amp;gt; 250 2.6.0 10017 bytes received in 00:00:00; Message id POZ63258 accepted for delivery&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Noteworthy Points:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The complete &lt;span style="font-weight: bold;"&gt;lack of both DomainKeys and DKIM signatures&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;The email &lt;span style="font-weight: bold;"&gt;is SPF compliant&lt;/span&gt;. The SPF record for mail.friendster.com is "v=spf1 mx ip4:209.11.168.0/23 mx:c300a-1.gbxsc.friendster.com -all" and the sending IP is 209.11.169.65, which is covered by the "ip4:209.11.168.0/23" directive.&lt;/li&gt;&lt;li&gt;The email is not "from" my friend but instead is from "Friendster". The &lt;span style="font-weight: bold;"&gt;From Email&lt;/span&gt; is also not of my friend, but a Friendster unique email address, in this case &lt;span style="font-weight: bold;"&gt;message-2219486617@mail.friendster.com&lt;/span&gt;. The &lt;span style="font-weight: bold;"&gt;From Address&lt;/span&gt; is the same as the &lt;span style="font-weight: bold;"&gt;SMTP MAIL-FROM&lt;/span&gt; address shown in the SMTP transaction. Therefore bounces at the MTA level will be sent to &lt;span style="font-weight: bold;"&gt;message-2219486617@mail.friendster.com&lt;/span&gt;, and the &lt;span style="font-weight: bold;"&gt;unique number&lt;/span&gt; that's a part of that &lt;span style="font-weight: bold;"&gt;From Address&lt;/span&gt; presumably allows the Friendster mail system to know that it was this particular transactional email that bounced.&lt;/li&gt;&lt;li&gt;There is no &lt;span style="font-weight: bold;"&gt;Reply-To&lt;/span&gt; address, so if the user does hit &lt;span style="font-weight: bold;"&gt;Reply &lt;/span&gt;in his email client, the reply will go to the From Address, &lt;span style="font-weight: bold;"&gt;message-2219486617@mail.friendster.com&lt;/span&gt;, and sending to this will presumably cause the email to be lost in the ether.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;MySpace&lt;/span&gt;&lt;span style="font-size: 180%;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The following are the relevant headers from a MySpace "new message" notification:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;b&gt;DKIM-Signature:&lt;/b&gt; v=1; a=rsa-sha1; c=relaxed/relaxed; s=pmta; &lt;b&gt;d=message.myspace.com&lt;/b&gt;;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;h=MIME-Version:From:To:Reply-To:Date:Subject:Content-Type:Content-Transfer-Encoding; i=noreply@message.myspace.com;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;bh=T25HyvwBLohBcz5zhA0xB0tJqdc=;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;b=SeqKqNrcg4jDIyy0lmlo2BJje2frO0hgd16E9M/Y7U42LNLPh+cLlr7q5muDN7ASuPzwaNIvjj9V&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;Kq9VzNSvnxNukRsF2ICj+jT7GFRHdO39feZXnyJgcGbu0eHGLF7v83PL8CApEF80w/f3HuZ8xZgz&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;YQcagUvNeD2jUmTqj/4=&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;b&gt;DomainKey-Signature:&lt;/b&gt; a=rsa-sha1; c=nofws; q=dns; s=pmta; &lt;span style="font-weight: bold;"&gt;d=message.myspace.com&lt;/span&gt;;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;b=SlJszI5cM6w78pK5nSJLzVTrrFw5YgU2vX8GraxP8yPjhbb6/hZ+oMjr7HUF21r8wyK774IEA/o/&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;u3Y6z+kcpRHTf7D3TWD94TCZW+mQDGxl3t+FSdqLLt4ISVUvGu+LTAIMfpSOzVKNnz3C/4QHpAg1&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;c2a2jRu1IFmrPbqOaK0=;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;b&gt;From:&lt;/b&gt; MySpace &amp;lt;noreply@message.myspace.com&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;b&gt;To:&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: courier new;"&gt;AjayGoel@silicomm.com&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;b&gt;Reply-To:&lt;/b&gt; MySpace &amp;lt;noreply@message.myspace.com&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;b&gt;Subject:&lt;/b&gt; MaryParker has sent you a new message!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;MySpace Transactional Email SMTP Log:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt;204.16.33.83 [0664] 18:04:01 Connected&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;204.16.33.83 [0664] 18:04:01 &amp;gt;&amp;gt;&amp;gt; 220 mx.silicomm.com ESMTP IceWarp 9.1.0; Fri, 10 Jul 2009 18:04:01 -0400&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;204.16.33.83 [0664] 18:04:01 &amp;lt;&amp;lt;&amp;lt; EHLO vmta20.myspace.com&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;204.16.33.83 [0664] 18:04:01 &amp;gt;&amp;gt;&amp;gt; 250-mx.silicomm.com Hello vmta20.myspace.com [204.16.33.83], pleased to meet you.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;204.16.33.83 [0664] 18:04:01 &amp;lt;&amp;lt;&amp;lt; &lt;b&gt;MAIL FROM:&amp;lt;noreply@message.myspace.com&amp;gt; &lt;/b&gt;BODY=8BITMIME&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;204.16.33.83 [0664] 18:04:01 &amp;gt;&amp;gt;&amp;gt; 250 2.1.0 &amp;lt;noreply@message.myspace.com&amp;gt;... Sender ok&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;204.16.33.83 [0664] 18:04:01 &amp;lt;&amp;lt;&amp;lt; RCPT TO:&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt;AjayGoel&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt;@silicomm.com&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;204.16.33.83 [0664] 18:04:01 &amp;gt;&amp;gt;&amp;gt; 250 2.1.5 &amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt;AjayGoel&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt;@silicomm.com&amp;gt;... Recipient ok&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;204.16.33.83 [0664] 18:04:02 &amp;lt;&amp;lt;&amp;lt; DATA&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;204.16.33.83 [0664] 18:04:02 &amp;gt;&amp;gt;&amp;gt; 354 Enter mail, end with "." on a line by itself&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;204.16.33.83 [0664] 18:04:02 *** &amp;lt;noreply@message.myspace.com&amp;gt; &amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt;AjayGoel&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-family: courier new;"&gt;@silicomm.com&amp;gt; 1 5669 00:00:00 OK RDO05602&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;204.16.33.83 [0664] 18:04:02 &amp;gt;&amp;gt;&amp;gt; 250 2.6.0 5669 bytes received in 00:00:00; Message id RDO05602 accepted for delivery&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;MySpace is the only one of the four social networking sites to &lt;span style="font-weight: bold;"&gt;use both the DomainKey-Signature and the DKIM-Signature headers&lt;/span&gt;, so kudos to MySpace for considering the entire email ecosystem.&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Noteworthy Points:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Both DKIM and DomainKeys&lt;/span&gt; headers present.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;SPF passes.&lt;/span&gt; The SPF record for message.myspace.com is "v=spf1 ip4:63.208.226.0/24 ip4:204.16.32.0/22 ip4:216.178.32.0/20 ip4:216.178.38.0/20 a ~all" and the sending IP is 204.16.33.83, which is included in the "ip4:204.16.32.0/22" directive.&lt;/li&gt;&lt;li&gt;The email is From "MySpace" rather than "Mary Parker", and the &lt;span style="font-weight: bold;"&gt;From Address&lt;/span&gt; is &lt;span style="font-weight: bold;"&gt;noreply@message.myspace.com&lt;/span&gt; instead of maryparker@hotmail.com. The &lt;span style="font-weight: bold;"&gt;From Address&lt;/span&gt; clearly implies that you should not reply to it, unlike Friendster's address. Clearly MySpace wants you to log in to the site to reply rather than by email.&lt;/li&gt;&lt;li&gt;The &lt;span style="font-weight: bold;"&gt;SMTP MAIL FROM&lt;/span&gt; is &lt;span style="font-weight: bold;"&gt;noreply@message.myspace.com&lt;/span&gt;, and does not contain a unique identifier.&lt;/li&gt;&lt;li&gt;The &lt;span style="font-weight: bold;"&gt;Reply-To&lt;/span&gt; header is present, but its value is the same as the From Address. So regardless, if you hit &lt;span style="font-weight: bold;"&gt;Reply &lt;/span&gt;on your email client, the email is going to &lt;span style="font-weight: bold;"&gt;noreply@message.myspace.com&lt;/span&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size: 180%;"&gt;Conclusion:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If I had to rank the social networking sites in order of best to worse in sending authenticated, compliant, and useful transactional email, this would be the ranking:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Facebook (Best)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;Positive:&lt;/span&gt; Emails are DKIM and SPF compliant.  Email notifications of "You have a new message" include the message in the body of the email.&lt;br /&gt;&lt;span style="color: red;"&gt;Negative:&lt;/span&gt; No DomainKeys signature, and the Reply-To address is one that cannot receive replies.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. MySpace&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;Positive:&lt;/span&gt; Emails are SPF, DKIM, and DomainKeys compliant - the only social network to use all three.&lt;br /&gt;&lt;span style="color: red;"&gt;Negative:&lt;/span&gt; Notifications of "You have a new message" force you to login to read your message. The Reply-To address is one that cannot receive replies.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. LinkedIn&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;Positive:&lt;/span&gt; Emails are SPF and DomainKeys compliant. Sometimes emails are "From" the actual friend rather than LinkedIn. Proper use of the &lt;b&gt;Sender &lt;/b&gt;header.&lt;br /&gt;&lt;span style="color: red;"&gt;Negative:&lt;/span&gt; No DKIM signature, which means LinkedIn is complying with the older DomainKeys standard but not the newer DKIM standard. Notifications of "You have a new message" force you to login to read your message.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. Friendster (Worst)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;Positive:&lt;/span&gt; Emails are SPF compliant.&lt;br /&gt;&lt;span style="color: red;"&gt;Negative:&lt;/span&gt; No DomainKeys signature.  No DKIM signature.  Notifications of "You have a new message" force you to login to read your message.   The Reply-To address is one that cannot receive replies.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;JangoMail Best Practice Recommendations:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When using JangoMail to send &lt;a href="http://www.jangomail.com/features_TransactionalMessaging.asp"&gt;transactional emails&lt;/a&gt; for a social network, you can optimize the deliverability and usability of your emails by following these guidelines:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Ensure your emails are SPF compliant.  &lt;/b&gt;In most cases, your emails will already be SPF compliant.  Whether you're using &lt;b&gt;your-username@jangomail.com&lt;/b&gt; as your &lt;b&gt;From Address&lt;/b&gt; or &lt;b&gt;noreply@MySocialNetwork.com&lt;/b&gt; as your &lt;b&gt;From Address&lt;/b&gt;, SPF validates the &lt;b&gt;SMTP MAIL-FROM Address&lt;/b&gt;, not the Display From Address that the recipient sees.  The &lt;b&gt;SMTP MAIL-FROM Address&lt;/b&gt;, meaning the From Address that shows in the SMTP logs, will always be &lt;b&gt;your-username@jangomail.com&lt;/b&gt;, unless one of the following is true:&lt;br /&gt;&lt;br /&gt;a. You've setup a &lt;a href="http://www.jangomail.com/documents/Public/JangoMail_Custom_Sub-Domain.pdf"&gt;custom sub-domain&lt;/a&gt;, in which case your sub-domain will be reflected in the &lt;b&gt;SMTP MAIL-FROM&lt;/b&gt;.&lt;br /&gt;b. You've explicitly set the &lt;b&gt;SMTP MAIL-FROM&lt;/b&gt; by unchecking the &lt;b&gt;"Use JangoMail MAIL-FROM"&lt;/b&gt; box on the Send Email page.&lt;br /&gt;c. You've explicitly set the &lt;b&gt;UseSystemMailFrom=False&lt;/b&gt; option when calling the &lt;a href="http://api.jangomail.com/api.asmx?op=SendTransactionalEmail"&gt;SendTransactionalEmail API method&lt;/a&gt;.&lt;br /&gt;d. You've unchecked the &lt;b&gt;Use JangoMail MAIL-FROM&lt;/b&gt; box under &lt;b&gt;My Options --&amp;gt; SMTP Relay&lt;/b&gt;, and you are using the &lt;a href="http://www.jangomail.com/Features-SMTP-Relay-Tracking.asp"&gt;smtp relay&lt;/a&gt; to send your emails.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Ensure your emails are signed with DKIM and DomainKeys.&lt;/b&gt;  Once you've setup your account to use DKIM, your emails will automatically include both a DKIM and a DomainKeys signature. Read &lt;a href="http://www.jangomail.com/documents/Public/JangoMail_DomainKeys_DKIM.pdf"&gt;this guide&lt;/a&gt; to learn how to configure DomainKeys/DKIM for your emails.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Determine whether the content of a "You have a new message" email should appear in the Body of the email or whether you want to force the recipient to login to read the new message.&lt;/b&gt;  I personally favor Facebook's method of including the original message in the email notification but forcing the recipient to log in to reply. After all, free social networks need to generate page-views, and they can't do that if they allow back-and-forth messaging functionality all within email.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. Determine whether the From Address and/or Reply-To Address should be that of your social network's or that of your user's.&lt;/b&gt;  We've seen that in the big four, &lt;i&gt;LinkedIn is the only site that shows the user's name and email address in the From Line&lt;/i&gt;.  This allows the recipient to conveniently reply to the sender of the message via email.  The disadvantage to the owner of the social network is that the recipient need not visit the web site to reply to the message.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Therefore, If you wish to optimize the user experience, set the user's name and email address in the From line of the email message.&lt;/b&gt;  If you employ this strategy, consider these points:&lt;br /&gt;&lt;br /&gt;a. Your emails will still be SPF compliant so long as the SMTP MAIL-FROM contains a single consistent domain and SPF has been setup properly for that single domain.&lt;br /&gt;b. Return Path, a large email deliverability company, recommends that if you send emails in this manner, be sure to include the "Sender" header as well. &lt;b&gt;In JangoMail, you need only contact Support to have the Sender header turned on for your account.&lt;/b&gt;&lt;br /&gt;c. There is a small chance that your emails will not be &lt;b&gt;SenderID &lt;/b&gt;compliant, since &lt;b&gt;SenderID &lt;/b&gt;&lt;i&gt;may &lt;/i&gt;validate the &lt;b&gt;Display From Address&lt;/b&gt; in addition to the &lt;b&gt;SMTP MAIL-FROM&lt;/b&gt; address. However most SPF records for major domains are just that - SPF records and not SenderID records.  In fact, all four major social networking sites use ONLY SPF, and not SenderID, as shown by the &lt;b&gt;v=spf1&lt;/b&gt; designation in all four records.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The best option may be to set the From Address to the social network site's address (noreply@MySocialNetwork.com), and set a Reply-To Address equal to the user's email address.&lt;/b&gt;  The advantage of this setup is that you need not worry about any SPF/SenderID issues, and if the recipient hits &lt;b&gt;Reply&lt;/b&gt;, the email will be directed to the user, not the social network web site.  It is still important to have the &lt;b&gt;Sender &lt;/b&gt;header inserted, however.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-8900996283034555162?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/09/technical-discussion-of-how-social.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-5107826053582308956</guid><pubDate>Wed, 02 Sep 2009 07:20:00 +0000</pubDate><atom:updated>2009-09-02T04:38:07.483-04:00</atom:updated><title>Data Center Move Part 3: What went right and what went wrong</title><description>This is the third and final installment of my account of our data center move. This is also my favorite part to write, because I get to recount everything that went right and wrong during after the move.  And I love learning from my mistakes.&lt;br /&gt;&lt;br /&gt;I had &lt;span style="font-weight: bold;"&gt;six &lt;/span&gt;total people, including myself, coordinating this effort - five at the data centers, and one remote man who could test connectivity from the outside and perform tasks related to the move that didn't require being on-site.  &lt;span style="color: rgb(0, 102, 0);"&gt;Our downtime was scheduled from 12:00 AM to 4:00 AM EST on a Saturday night / Sunday morning.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;11:00 PM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The five met at the New Data Center at 11:00 PM. &lt;span style="color: rgb(0, 102, 0);"&gt;I wanted to make sure the New Data Center  had the WAN cable drop ready, that our access card worked, that the combinations to the cabinet doors worked, and plan out our access into and out of the building and determine where to park our cars while unloading equipment.&lt;/span&gt;  The New Data Center came equipped with remote-access Power Distribution Units (PDUs)  in both cabinets, one cabinet with 30 Amps and one with 20 Amps.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;11:30 PM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Our inspection of the New Data Center was complete, and we drove the eight blocks to the Old Data Center to prepare for the take-down of the core servers: the web server, the database server, and the API server.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;11:40 PM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We arrived at the Old Data Center. The primary check we needed to do prior to shutting down the servers ensuring that the standby database server had up-to-date copies of files from the primary database server. The primary log-ships to the standby server, so we needed to ensure the last of the log files had been restored to the standby server.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;12:00 AM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The equipment was transported in three waves:&lt;br /&gt;&lt;br /&gt;1. At 12:00 AM, I took the firewall and the main switch to the New Data Center. I wanted to get the firewall appliance connected to the WAN connection from the New Data Center, plug my laptop in to verify that connectivity to the Internet was working.  The team transporting the three core servers would wait for my call from the New Data Center signaling that connectivity was working.&lt;br /&gt;&lt;br /&gt;2. After my call to verify connectivity, a team of two (the primary two) would begin dismantling the three core servers (web server, database server, API server), and transport them to the New Data Center.&lt;br /&gt;&lt;br /&gt;3. Then the remaining two (the back two) would begin dismantling and transporting the last set of servers, including corporate mail, incoming mail, standby DB server, corporate web server, the rendering servers, and a few other standby servers and appliances.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;12:30 AM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Testing connectivity was a critical first step, because the type of connectivity was different from that of the Old Data Center. &lt;span style="color: rgb(0, 102, 0);"&gt;The New Data Center required a layer 3 routing device, while the Old Data Center did not.&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;The firewall had to be reconfigured with a static IP, a range of DMZ IPs, and a gateway. All DMZ devices would then use the firewall as the gateway. At the Old Data Center, all devices, including the firewall, were assigned IPs from the same class C, and the gateway IP for all devices, was the same IP, and an IP provided to us by the Old Data Center.  While the new connectivity setup seemed complicated at first, it worked just as expected.&lt;br /&gt;&lt;br /&gt;After the firewall and switch were plugged in and connected, I had the sixth man who was remote, connect to the firewall via web browser, and begin changing the Network Address Objects' IP addresses.  Simultaneously, he logged into our third party DNS system and begin making DNS changes for the main domain names, like jangomail.com and www.jangomail.com and mail.jangomail.com and relay.jangosmtp.net.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;12:45 AM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After having verified connectivity, I called the core two, and had them initiate take-down and transport of the three core servers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;1:15 AM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Within thirty minutes, the team arrived, and we began rack-mounting the three core servers.  We plugged them in, connected them to the switch, but they did not come back online.&lt;br /&gt;&lt;br /&gt;This is where we ran into problem #1: While the IPs for the New Data Center had been assigned to the second NIC on each of the core 3 servers, the second NIC on each of the servers was disabled.  Each needed to be re-enabled for connectivity to the servers to be established.&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;I needed to login to each server, and activate the NIC, but I forgot the Keyboard-Video-Mouse (KVM) unit at the Old Data Center, and had no way of configuring anything on these three servers.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;1:45 AM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I took a vehicle back to the Old Data Center, retrieved the KVM switch, checked in on the back two that were moving the ancillary servers, and drove back to the New Data Center.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;2:15 AM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I mounted the KVM switch, and one by one, plugged it into each of the 3 core now-mounted servers, and activated the NIC with the new IP.  &lt;span style="color: rgb(0, 102, 0);"&gt;One problem - I could only activate the NIC on 2 of the 3 servers.&lt;/span&gt;  On the third, the API server, the keyboard/mouse ports were USB, and our KVM unit doesn't have USB connectors for keyboard/mouse.  I had no way of actually configuring the API server. The New Data Center had mentioned the availability of a KVM crash cart on the floor, so I searched for it.&lt;span style="color: rgb(0, 102, 0);"&gt;Ten minutes later, I found it, locked behind another customer's cage.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;2:45 AM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The web server and database server were operational, 75 minutes prior to the end of our downtime window. However, the API is mission critical to 30% of our customers, so I had to find a way to get it up and running.&lt;br /&gt;&lt;br /&gt;Unable to fabricate an immediate solution to this problem, I drove back to the Old Data Center to check on the two men dismantling the ancillary servers.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;3:00 AM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I pulled up, and they were just loading up the car.  All equipment had now been removed from Old Data Center's racks.  I was going to lead the car back to the New Data Center.&lt;span style="color: rgb(0, 102, 0);"&gt;The car wouldn't start.  The car's battery had died while the flashers were on in, parked in front of the building.&lt;/span&gt;I pulled up alongside the car, we moved the equipment from his vehicle to mine, had a quick chat with the building doorman about not towing the now defunct car, piled back into my vehicle, and the three of us drove to the New Data Center.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;3:20 AM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We loaded up the ancillary equipment on carts, and rolled the carts into the New Data Center.  Once the equipment was in the data center, I had my core two men rack-mount the equipment. I let the back two use my laptop, still connected directly to the firewall, to Google for a store that was still open at the hour that would carry jumper cables.  They didn't find one, but left anyway in my vehicle in search of jumper cables.&lt;br /&gt;&lt;br /&gt;The three of us continued to rack-mount the remaining ancillary equipment.  One by one, we turned each device on, and re-configured the NIC for its new IP address&lt;br /&gt;&lt;br /&gt;After all equipment was powered on and connected, I still needed to get the API up.  I decided to use the standby database server as my new primary API server, until such time as I could configure the API server with a USB keyboard/mouse.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Post Move - 5:30 AM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The three of us drove back home to Dayton, Ohio.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Post Move - 6:30 AM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I arrived at my home in Dayton and fired up my laptop to do some final testing from the outside.  I noticed a few problems:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;My BlackBerry wasn't receiving any email.&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;My BlackBerry receives all my work email by having our corporate mail server, mail.silicomm.com, forward my email to my TMobile BlackBerry email account. The email wasn't being forwarded.&lt;br /&gt;&lt;br /&gt;I first remoted into mail.silicomm.com, did an MX lookup on tmo.blackberry.net, which is the T-Mobile BlackBerry domain, and attempted to connect to port 25 on that IP. The connection was made and immediately dropped. I assumed it was due to the new IP for mail.silicomm.com never having sent email before. As a temporary work-around, I had mail.silicomm.com forward my email to my GMail account, and then I had my GMail account forward email to my TMobile BlackBerry account.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Email I was sending wasn't being received.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I sent a test email from mail.silicomm.com to my GMail account, and it wasn't received.&lt;br /&gt;&lt;br /&gt;Our corporate email system, IceWarp, has its own DNS settings, separate from the DNS settings in Windows TCP/IP.  I hadn't changed the DNS servers of IceWarp to the New Data Cetner's DNS servers, and therefore, outbound email wasn't being transmitted since the MX lookups couldn't be performed.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;JangoMail notification emails weren't being received.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All JangoMail notifications, such as "Sending Complete" and "Import Complete" notifications are sent via the &lt;a href="http://www.jangomail.com/Features-SMTP-Relay-Tracking.asp"&gt;JangoMail SMTP relay service&lt;/a&gt;.  You can authenticate into the SMTP relay either by IP address or by From Address.  For our own system notifications, we authenticate by IP address.  &lt;span style="color: rgb(0, 102, 0);"&gt;We had forgotten to change the authenticated IP address in our own JangoMail account - the one that handles all these customer notifications.&lt;/span&gt;  Once that was changed, customers received the email notifications.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;One-Three Days After Data Center Move&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;Clients were reporting that the API was still inaccessible.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://api.jangomail.com/"&gt;API&lt;/a&gt; was inaccessible to at least three clients, because they were connecting to the API by IP address, rather than the domain name &lt;a href="http://api.jangomail.com/"&gt;api.jangomail.com&lt;/a&gt;. This was discovered in the 48 hours following the move.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Clients were reporting that the JangoMail web-database connectivity feature wasn't working.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Clients were unable to use the &lt;a href="http://www.jangomail.com/database_internet.asp"&gt;web-database connectivity feature&lt;/a&gt; of JangoMail because they had restricted access to their web servers/database servers by IP address, and they had our Old Data Center IP range in their firewalls. They did not have the New Data Center IPs in their firewalls.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Five Days After Data Center Move&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;While examining the headers of a forwarded email in my GMail account, I noticed that &lt;span style="color: rgb(0, 102, 0);"&gt;an email forwarded by mail.silicomm.com to my GMail account had the originating IP listed as&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;209.173.128.118, which is not the IP for mail.silicomm.com&lt;/span&gt;.  The IP for mail.silicomm.com is 209.173.141.195, and the reverse lookup for this IP is appropriately, mail.silicomm.com.&lt;br /&gt;&lt;br /&gt;Upon further examination, I discovered that all servers in the DMZ were connecting to the outside as 209.173.128.118, which is the IP of the firewall.  If I pointed a web browser on any device to www.whatismyip.com, the result was the same - 209.173.128.118.  I was baffled, since all devices had been assigned public, routable IP addresses.  I called SonicWall support, but I was declined support because I didn't have a support contract, and they refused to do a per-incident support ticket.  I posted on the SonicWall forums, and was told I had to put in a Network Address Translation (NAT) setting in order for the firewall to prevent the firewall IP from routing the outbound connections.  &lt;span style="color: rgb(0, 102, 0);"&gt;Once, I did that, the original BlackBerry forwarding issue was resolved.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;  &lt;/span&gt;&lt;span style="font-style: italic;"&gt;The BlackBerry email server was dropping the connection immediately because the source IP of the connection, 209.173.128.118, did not have a reverse DNS entry for it.&lt;/span&gt;  It was the firewall's IP, so it doesn't need a rDNS entry.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Lessons Learned&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There were several areas where planning was weak, including planning what equipment would be moved in what phase, and under assessing the impact of switching to new IP addresses.  Given the experience I've outlined, I would have done the following differently:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Activated the NIC with the New Data Center IP while still at the Old Data Center.&lt;/li&gt;&lt;li&gt;Made sure to have a USB keyboard/mouse with me.&lt;/li&gt;&lt;li&gt;A week prior to the move, informed all customers that our IP addresses were changing, including the new IP range.&lt;/li&gt;&lt;li&gt;Informed all API customers that anyone connecting directly to our IP address needed to connect to the domain &lt;a href="http://api.jangomail.com/"&gt;api.jangomail.com&lt;/a&gt; instead.&lt;/li&gt;&lt;li&gt;Been more conscious of the JangoMail accounts that we ourselves use and dependencies on IP addresses.&lt;/li&gt;&lt;li&gt;Been more aware that some applications don't inherit the TCP/IP settings of Windows, and have them set manually.&lt;/li&gt;&lt;li&gt;And lastly, I would have made sure at least one vehicle carried&lt;span style="font-weight: bold;"&gt; jumper cables&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-5107826053582308956?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/09/data-center-move-part-3-what-went-right.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19089540.post-168651163486092589</guid><pubDate>Fri, 28 Aug 2009 15:36:00 +0000</pubDate><atom:updated>2009-08-28T13:14:29.570-04:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>open</category><category domain='http://www.blogger.com/atom/ns#'>tracking</category><category domain='http://www.blogger.com/atom/ns#'>click</category><category domain='http://www.blogger.com/atom/ns#'>jangomail smtp</category><category domain='http://www.blogger.com/atom/ns#'>gmail smtp</category><title>New Video Tutorial: Configuring Gmail with the JangoMail SMTP Relay</title><description>&lt;span style="color: rgb(0, 153, 0);"&gt;We have a new &lt;span style="font-weight: bold;"&gt;Video Tutorial&lt;/span&gt; on &lt;span style="font-weight: bold;"&gt;how to configure Gmail with the JangoMail SMTP Relay Service&lt;/span&gt;&lt;/span&gt;:&lt;br /&gt;&lt;a href="http://www.jangomail.com/VideoTutorials/VideoConfiguringGmailforJangosmtp.asp"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://www.jangomail.com/VideoTutorials/VideoConfiguringGmailforJangosmtp.asp"&gt;Video: How to Configure Gmail with the JangoMail SMTP Relay&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The JangoMail SMTP Relay improves your sending capabilities by providing the following features for your person-to-person emails:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open Tracking&lt;/li&gt;&lt;li&gt;Click Tracking&lt;/li&gt;&lt;li&gt;DomainKeys/DKIM Signing&lt;/li&gt;&lt;li&gt;Easy web-based access to SMTP Logs&lt;/li&gt;&lt;li&gt;API methods to retrieve Reporting data&lt;/li&gt;&lt;/ul&gt;For more information, screenshots, and written directions, read our post on &lt;a href="http://www.jangomail.com/blog/2009/08/you-can-now-use-jangomails-smtp-relay.html"&gt;configuring your Gmail account with the JangoMail SMTP Relay Service&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you are not a Gmail user, watch our other Video Tutorials on &lt;a href="http://www.jangomail.com/blog/2009/07/new-smtp-video-tutorials.html"&gt;Configuring the JangoMail SMTP Relay with a Desktop Client or a Web Server&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19089540-168651163486092589?l=www.jangomail.com%2Fblog%2FJangoMailInProgress.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.jangomail.com/blog/2009/08/new-video-tutorial-configuring-gmail.html</link><author>noreply@blogger.com (Ajay Goel)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item></channel></rss>