Monday, June 07, 2010

Better design for API homepage

We have re-designed the homepage of the API to be cleaner, more organized, easier to use, and easier to access documentation for each individual web service method. You can see the difference between the new and the old versions below.

Each method is organized into its proper category, has a link to a test form to call the method, and a link to the detailed documentation for the method.

New API homepage design



Old homepage design

Sunday, June 06, 2010

Improved email list segmentation performance

We re-wrote some code tonight that allows campaigns sent to segmented email lists using the "Filter/Send" feature process about 10x faster than normal. Additionally, our capacity for handling complex and very large segments is much greater now.

Previously, segmenting a list of 2 million email addresses, where the resulting segment was 1.5 million email addresses would cause memory errors on our end. But now, you can segment your very large email lists to your heart's content, and JangoMail will handle it fast and efficiently.

Screenshot of email list segmentation process

For more detail on JangoMail's advanced email list segmentation capabilities, see this PDF tutorial.

Thursday, June 03, 2010

HTML Editor Updates

Our HTML editor has been updated. The following fixes have been made:

  • Table cells incorrectly inherited rowspan and colspan from parent tables
  • Pasting rich text did not work on OS X 10.4
  • Custom attributes on
  • Editor did not save
    tags at the end of a paragraph correctly so they did not appear in browsers
  • NullPointerException when cleaning up spelling errors

User interface enhancements to Send Email page

Tonight we've enhanced the usability of the main Send Email page. The screenshot below outlines the improvements:



  1. There used to be two dropdown menus, one for re-sending an old message and another for editing an existing message. These two dropdowns have now been cominbed into one single dropdown with two buttons.
  2. You now have the option to enter a campaign ID manually rather than choosing from the dropdown. The dropdown has always only showed the 500 most recent campaigns. This was limiting to some of our users that needed to work with a much older campaign. Now, you can enter the ID number of any campaign in your account.
  3. Our new contextual help system shows a tooltip when you hover your mouse over the question mark. Look for more tooltips throughout the application as we adopt this system across all of the main tabs.
  4. You can FTP HTML files to client.jangomail.com/HTMLTemplates, and those HTML files will show in the last dropdown, and can be chosen to create an email campaign. Additionally, if you're using the High Impact Email for JangoMail desktop template management software, those templates will also appear in this dropdown. Note that this dropdown will only show if there is at least one HTML file in your FTP folder.

Wednesday, June 02, 2010

New password change process

In an effort to beef up security, we've enhanced the password-change process for an account. Previously, you could update your password on the same page under the Account Info page that you update all of your other contact information.

Now, there is a separate Change Password function, which requires you to enter your old password and enter your new password (twice) before a password change can take place.


New Feature: 101 new templates and editing software

I am happy to announce that a new email template set and a tool to manage these templates is available for download here:

http://www.jangomail.com/downloads/HIE5_JangoMail_Setup.exe

The download is over 100 MB, so it may take a few minutes to retrieve this file, depending on your Internet connection.

This software is called "High Impact Email for JangoMail". It is an email template management tool that comes with 101 email templates, and it works directly with your JangoMail account. During installation, you'll be asked for your JangoMail username and password, so have that handy.



Once you've downloaded and installed "High Impact Email for JangoMail", this is what the application will look like:

The software shows the categories of email templates on the left, and the actual email templates on the right. Select the email template you wish to use and hit the "Next" button on the lower-right.


The email template software will have already stored your JangoMail account username and password when you installed it. After you've selected and edited the template click the "Save to JangoMail" button in the lower right.

To find your new template in your JangoMail account, click the Messages link, click Compose New Message, then click With an Uploaded Template. Click the new template that was created in High Impact.

After selecting your email template, you can edit it within the JangoMail editor to make any final changes, before sending your email campaign:


We hope you find this new email template software useful.

Thursday, May 27, 2010

JangoSMTP now supports SSL/TLS

JangoMail has added support for SSL connections to our relay server from your email client of choice (e.g. Outlook, Thunderbird, Mac Mail, etc.). Just as when you use an HTTPS connection to connect to a website and make a secure online purchase, you can use the same technology to setup a secure connection with JangoMail and send email through your JangoSMTP account. This ensures your JangoSMTP username and password remain secure as they are transmitted between your computer and JangoSMTP relay servers. All that's needed to enable this feature a quick settings change in your email client.

Note: These instructions assume you already have your JangoSMTP account setup in your mail client. Follow these directions if you don't already have your mail client setup to send through your JangoSMTP account.

Outlook:

  1. Click on Tools -> Account Settings
  2. Highlight your JangoSMTP account and click Change...
  3. Click More Settings...
  4. Go to the Advanced tab
  5. Choose SSL in the Use the following type of encrypted connection: dropdown
  6. Change the Outgoing server (SMTP) port number to 465




Thunderbird:

  1. Go to Tools -> Account Settings
  2. Click Outgoing Server (SMTP)
  3. Choose the entry for relay.jangosmtp.net and click Edit
  4. Check the Use Secure Connection box and choose SSL/TLS from the Connection security dropdown



Mac Mail:

  1. Go to Mail -> Preferences
  2. Click on the Accounts tab
  3. Choose your JangoSMTP account at the left
  4. Click on Edit Server List... from the Outgoing Mail Server (SMTP) dropdown
  5. Select the entry for relay.jangosmtp.net and click on the Advanced tab
  6. Put a check next to Use Secure Sockets Layer (SSL)
  7. Select Use custom port and enter 465 as the value



Most modern email clients support SSL/TLS. If your email client is not listed above, open up your account settings configuration page and find the outgoing email server connection settings. The option you want to enable will be called SSL/TLS (not STARTTLS). Also look out for a default connection port. Generally this port number will be 25 or 2525 before you setup SSL/TLS, but it should be changed to 465 after the feature is setup. When in doubt, submit a support ticket and a member of the JangoSMTP support team will be able to assist you in choosing the right options.

Monday, May 03, 2010

How to use the API method SendMassEmail to connect to a website database

The SendMassEmail method of the JangoMail Email Marketing API is a versatile method that can launch an email campaign to recipients in a variety of ways. There are various "To" input parameters, each with its own use depending on where your email list data is stored.

The full specification of the method is located here. The "To" input parameters include:
  • ToGroups - send to an entire Email List - specify the name of an Email List (also called an Email Group) to send to. Specify multiple Email Lists separated by a comma
  • ToGroupFilter - sent to a segment of an Email List - specify the name of an Email List followed by a colon followed by a valid SQL filter (just the WHERE clause). For example, if you have an Email List called Contact List with the fields FirstName, LastName, and Company, then an acceptable input value would be "Contact List: Company = 'ABC Corporation'". An additional acceptable input value would be "Contact List: Company = 'ABC Corporation' OR FirstName = 'John'".
  • ToOther - specify a string of email addresses in any unstructured format. JangoMail will parse the data and pull out the email addresses and send to them. Optionally, pass structured data on-the-fly with field name and field value information, in order to send personalized emails to a dataset on the fly.
  • ToWebDatabase - pass in a SQL query (usually a SELECT statement) that will be executed against your web site database, in real-time, to pull down a list of email list data, to send a personalized email campaign.
This article will focus on how to use the ToWebDatabase input parameter.

In order to be able to use this feature, your JangoMail account first needs to know how to connect to your web database platform. There are two steps to this:
  1. You must create a Web Database Connection Profile. Create a Web Database Connection Profile under Lists --> Databases --> Add New Item --> Internet Web Database. If you're not familiar with creating a connection profile, see the detailed PDF guide.
  2. Then you must set this Profile as the Master Profile, so that the API knows that this connection profile is the one to use when you use ToWebDatabase. Set the Web Database Connection Profile as your Master Profile under Settings --> Integrating JangoMail with Other Systems --> Set Master Profile for Web DB. See screenshot below:


Set Master Connection Profile here.

If you attempt to call SendMassEmail and specify a value for ToWebDatabase without first having set a Master Profile, you will get this web service Exception:

MissingWebDatabaseSettings: There is no Master Web Database Connection Profile set for your account. This must be set prior to specifying a SQL query for the ToWebDatabase parameter.
Once you have set the Master Profile, you're ready to make the API call and pass in a SQL query in the ToWebDatabase input parameter. If you wanted to send to all email addresses that had been added to your database in the last 24 hours, for example, your SQL query might be:

select * from Accounts where AccountCreateDate >= dateadd(hh, -24, getdate())

And the full API call would look like the screenshot below:

Changes to web database connection settings

We made a change this weekend that affects all users that had set web database settings under Settings --> Web Site / DB Settings.

[This screen should no longer be used.]

Settings on this page were applicable when any of the following operations were executed:
  1. Synchronization of unsubscribes, bounces, opens, clicks, forwards with a web site database
  2. A call to the SendMassEmail or SendMassEmailPrevious2 API methods, while passing in a SQL query to the ToWebDatabase parameter.
Thus the settings were applicable for web database operations that occurred outside the normal JangoMail web interface (offline operations).

We have now replaced these settings with the ability to declare an existing Web Database Connection Profile as the Master Web Database Connection Profile. The profile chosen as the Master Profile will be the profile whose connection information will be used for the aforementioned "offline" operations.

[The "Master Profile" page should be used instead.]

If you had settings on this page, then a new web database profile has been created for you called Default Master Profile. This profile copies the settings from this page, and is already set as your default profile.


Only one web database connection profile can be declared as the Master Profile:



Web Database Connection Profiles can be created under Connect to My Database --> Connect to Internet Web Site Database. Once the profile has been created, it can be set to be the Master Profile under Settings --> Web Site Database --> Master Profile.

Note: If you are using a custom web database integration, it is important to correctly set the Variable Name that is the SQL Statement when you create your master profile. It is this variable that is substituted with the correct SQL statement when either of the two offline operations mentioned above are encountered.


For now, we have left the page "Web Site / DB Settings" in place, but we'll soon be removing this page from the interface completely.

Saturday, May 01, 2010

This blog has moved


This blog is now located at http://blog.jangomail.com/.
You will be automatically redirected in 30 seconds, or you may click here.

For feed subscribers, please update your feed subscriptions to
http://blog.jangomail.com/feeds/posts/default.

Tuesday, April 27, 2010

New Feature: Reset statistics for a Transactional Email Group

You now have the option to reset the statistics for any Transactional Group to all zeroes. This won't delete any of the data behind the statistics, but will just start counting all unsubscribes, bounces, opens, clicks, and complaints from zero again. So, you can still see all of the email address that unsubscribed, bounced, opened, clicked, and complained historically.



Why would you want to reset your statistics?

There are many reasons, but the most common one is if you're sending test emails as part of a Transactional Group, and you're ready to stop sending and start sending for real. You may not want the counts from the test emails counted in your official Transactional Group statistics.

Thursday, April 22, 2010

How to use the ASP.Net script file to integrate your web database with JangoMail

If your organization's web site and database platform is ASP.Net and SQL Server, JangoMail provides a file (w_5.aspx) which you may place on your web server, which allows JangoMail to pull email list data in real-time from your database, as well as update your database with recipient actions, like unsubscribes, bounces, opens, and clicks.

The steps are:
  1. Go to the Lists section and click on the Databases tab.
  2. Click Add New Item.
  3. Choose Internet Web Database and then choose the ASP.Net option.

  4. Retrieve the w_5.aspx file and place on your web server.

  5. Once you have the w_5.aspx file uploaded to your server, click Configure this connection.
  6. Fill in the variable names and values, including the SQL query to retrieve your email list data.

  7. Save the profile, and then click the Connect icon next to the profile name.

You may alter the w_5.aspx file as you see fit. For example, if your web site connects to SQL Server via ODBC instead of the default ASP.Net method, then you may modify the connection string in the w_5.aspx file.

Want to use this feature from the API?

Find out how in this blog post.

Further Reading

Detailed PDF Guide on Connecting to Internet Web Site Databases
Writing your own custom script file for any platform

Wednesday, April 21, 2010

How to write a custom web server script for JangoMail integration

JangoMail was one of the first and is one of the only email marketing service providers that can connect to a customer's web site database in real-time. Historically, we've supported and provided web server script files for 4 different scenarios:

Active Server Pages / ODBC Database -- w_1.asp
Active Server Pages / Microsoft SQL Server -- w_2.asp
Active Server Page / Microsoft Access -- w_3.asp
PHP / MySQL -- w_4.php

Recently, we added a fifth option:

ASP.Net page / Microsoft SQL Server - w_5.aspx

All five of these platforms and the five corresponding files are provided to you by JangoMail.

Still, many customers have web/database server that don't fit into one of these canned scenarios. Now, you have the ability to write your own web server script file, based on whatever platform you're running.

First, let's look at the screen in JangoMail where you plug in variable names and values that will be passed into your custom web server script.



Go to Lists --> Databases --> Add New Item




Select Internet Web Database and then ASP.net. 


Download the script file provided and upload it to your platform.
Then click Configure this connection.


Here you will enter your variable names and values.

There are seven variable names and values you may specify. You need not use all seven. For each variable name/value that you specify, your web server script file must be written to accept each variable as a FORM POST. The variable and its corresponding value will be passed to your script file. Note that the variable "action" will be passed always with the value "massmail". This informs your script file that the purpose of this call is to generate a set of data for a mass emailing (as opposed to a synchronization call which we'll cover later).

Once you've programmed your script to accept the variables and values via FORM POST, you must next program your script to generate data based on these variables. Example variables may be:

DatabaseName
DatabaseLogin
DatabasePassword
SQL

Based on your web/database platform, these four variables may be sufficient for your script to connect to your database and generate a set of email addresses and other corresponding data.

Regardless of the input parameters that your script takes, the script must generate your email list data in the following format:

FieldName1,FieldName2,FieldName3___ASDF---BREAKValue1WG0COLWG0Value2WG0COLWG0Value3WG0ROWWG0ValueAWG0COLWG0ValueBWG0COLWG0ValueCWG0ROWWG0WANGO-ENDOFDATASTREAM

Let's break this down and look at it more closely. The output the script should generate is:

1. The field names, separated by a comma.
2. Next, is a standard separator used by JangoMail to separate the field names from the field values: "___ASDF---BREAK"
3. Next comes the actual data, using a column separator of "WG0COLWG0" and a row separator of WG0ROWWG0 (and add an extra row delimiter at the end, before the "end of data stream" line).
4. Finally, at the end of the data string, end with "WANGO-ENDOFDATASTREAM"

For example, assuming you're passing in the correct parameters to connect to your database, and your SQL is:

select FirstName, LastName, EmailAddress from Users

and it returns two records, the output of the script should look like:

FirstName,LastName,EmailAddress___ASDF---BREAKJohnWG0COLWG0SmithWG0COLWG0johnsmith@yahoo.comWG0ROWWG0NateWG0COLWG0LakemanWG0COLWG0nlakeman@gmail.comWG0ROWWG0WANGO-ENDOFDATASTREAM

Therefore, using the example above with the four input variables, the screen would be filled in as follows:




This example assumes that I have called my script file JangoScript.do and that I've placed it in the root directory of www.browniekitchen.com. It also assumes that JangoScript.do is programmed to accept the five POST variables: action, DatabaseName, DatabaseLogin, DatabasePassword, SQL.


When you connect to that profile, JangoMail will connect to your JangoScript.do file, the script will output the data for the two records, and take you to this screen, where you can select your campaign to send to the two recipients:






Frequently Asked Questions
1. Do I have to pass in variables to my script file, or can I hard-code the values directly into my script file?

No, you don't have to pass in any variables to the script file, and you may hard-code them within the script file. The disadvantage to doing so are that a. This allows anyone that knows the script file exists to access it and have it output your email list data and b. It prevents JangoMail from synchronizing your database with unsubscribes, bounces, and other recipient actions, since the SQL query will be hard-coded within your script file, and the SQL query will be the query to retrieve email list data, not update it. A better solution may be to do a hybrid between the integration scenario presented above and hard-coding. For example, the database credentials could be hard-coded into the script file, while only the SQL query and a special password that is validated within the logic of the page is passed to the file by JangoMail.

2. Is this method of connecting to my data secure?

Yes. It is inherently secure if you opt to have JangoMail connect over https instead of http. It can be additionally secured by restricting the range of IP addresses allowed to connect to the custom script file. JangoMail's range of IP addresses are: 209.173.141.193 - 209.173.141.255

3. What is the purpose of the "action" variable name that is forced?

The action variable set to "massmail" tells the script file that this call is specifically to retrieve email list data for a mass emailing, as opposed to other possible actions, like those that synchronize the data with unsubscribe and bounce data.

4. Why does JangoMail need to know which of my variables represents the SQL string?

If you're only using the Web Database Connect feature to retrieve email list data via the web interface only (not the API), you can ignore this setting. This setting is only relevant if you wish to do one of the following:

a. Call the SendMassEmail API method and specify a SQL query in the ToWebDatabase input parameter.
b. Use any of the data synchronization options, like syncing unsubscribe and bounce data back to your database.

In both of these cases, a Master Web Database Profile must be set under Settings. And then, when JangoMail calls the SQL for either scenario a or b, the SQL for the scenario will be passed as the value of the variable rather than the value in the actual web database profile.

5. Where can I read more about this feature?

The following PDF was written when the Web Database Connectivity feature was first made available, and when it was only available on the first four platforms:

https://www.jangomail.com/documents/Public/JangoMail_Tutorial_Web_Database.pdf

Three Bug Fixes to SMTP Service

We've deployed three bug fixes to JangoMail's SMTP Server, relay.jangosmtp.net. These three bugs were detected by customers relaying emails with eccentric attributes through the SMTP server.

1. Emails containing MIME boundaries with parentheses will now be properly handled.

Previously, emails with parentheses in the MIME boundaries, such as a boundary like:

Content-Type: multipart/mixed; boundary="nqp=nb64=()BDXjw0yWx"

would cause the JangoSMTP parser to throw an error. This is now fixed.

2. Emails containing unrecognized Content-Transfer-Encoding types will now default to "7bit".

Previously, if an email message contained an unrecognized or misspelled encoding type, like:

Content-Transfer-Encoding: 7 bit

would cause the JangoSMTP parser to throw an error. This is now fixed.

3. Emails containing foreign characters encoded as ISO-8859-1 will be properly handled.

Previously, an email containing certain foreign characters would have those characters replaced with ? marks or garbled when passed through the relay. For example, a Subject like:

Subject: Confirmation d'Inscription à la Liste de Diffusion - Liste TEST ML

would not have its foreign characters preserved. This is now fixed.

Monday, April 19, 2010

New Feature: FTP your HTML email templates to your account

You can now FTP HTML email template files to client.jangomail.com, and then choose from these templates to compose an email campaign.

FTP to an email template file, such as a .htm or a .html file to client.jangomail.com/HTMLTemplates. Login to client.jangomail.com using your JangoMail username and password.

Command Line FTP Example

The above screenshot shows a command line FTP example of connecting to client.jangomail.com and uploading an HTML template file called BrownieMemorialDay.html.

You may use a friendlier FTP application like FileZilla or even Internet Explorer.

Once you have FTPd a template file, that file will show up after you click the +New Message button in the Messages section. Choose with an Uploaded Template to find your template.




What else can you do with FTP?


You can control several aspects of your JangoMail account via FTP. FTP to client.jangomail.com to:
  1. Upload images and other email content to client.jangomail.com/Images
  2. Upload file attachments that you wish to mass email to your recipients, to client.jangomail.com/Attachments.
  3. Upload email list files to client.jangomail.com/GroupImportsAutoFTP, and JangoMail will automatically turn your file into an Email List to which you can send an email campaign.

Saturday, March 27, 2010

SMTP Relay Server Enhancements

We've deployed a couple of enhancements and bug fixes to the SMTP service.

  1. MIME encoded Subject lines containing a Transactional Group are now handled properly.

    According to the SMTP MIME specification, certain email headers can be MIME encoded. It's called the encoded-word syntax. For example, the Subject of an email might actually look like:

    Subject: =?utf-8?Q?Savings_For_Today{Daily_Alert}?=

    This represents a subject that is character-encoded as UTF-8 and content-transfer-encoded as quoted-printable. This Subject, properly rendered by an email client would look like:

    Subject: Savings for Today{Daily Alert}

    For the purposes of the JangoMail SMTP Server, the subject can contain the Transactional Group that the message should be assigned to in curly brackets. So if this message was relayed through relay.jangosmtp.net, then the actual Subject would be "Savings for Today", and this message would be assigned to the Transactional Group "Daily Alert" in the user's account. Previously, our system was not decoding the Subject properly in order to determine the correct Transactional Group name to which to assign the email, but that has now been corrected in today's release.

  2. If the Sender header is specified in the original email, that header is now preserved.

    The Sender header, similar to the From header of an email, can be used to denote additional information about where the email originated. Most email messages do not contain a Sender header, but in some cases, a Sender header is inserted by an email system if the user is using a From Address not local to that particular email system. For example, GMail users who send "from" an address other than their gmail.com address will have a Sender header inserted into the email where the Sender header equals the gmail.com address and the From address equals the user's chosen From Address.

    On the receiving side, some email clients will show the Sender header as a phrase to the email recipient, saying "From [From Address] On Behalf Of [Sender Address]"

    Previously, if an email was relayed through the relay server that included a Sender header, the Sender header would be discarded by our system and not included in the final email message. Now, the system is preserving the Sender header.

Why you can't connect to the SMTP relay server

We often get inquiries from customers telling us that they're unable to relay emails through relay.jangosmtp.net. Here is a list of the most common reasons why it doesn't work.
  1. Your Internet Service Provider (ISP) is blocking access to external email servers. By default, the SMTP server listens on port 25, and many ISPs block connections on port 25 in order to prevent you from emailing through an external email server. For this reason, our SMTP server also listens on port 2525. You can test connectivity from a Command Prompt by typing:

    telnet relay.jangosmtp.net 25



    Successfully connecting to relay.jangosmtp.net


    If that doesn't work, try:

    telnet relay.jangosmtp.net 2525

    You should get a response from the server as shown in the screenshot above.

  2. You haven't setup a proper authentication method. In order to relay emails through relay.jangosmtp.net, you must login to your account, go to Settings --> SMTP Relay, and authenticate either by IP Address or SMTP Username/Password.
  3. You are connecting to the wrong server. We've had customers attempt to connect to relay.jangosmtp.com, relay.jangomail.com, and relay.jangomail.net, all of which are incorrect. The correct server is relay.jangosmtp.net.
  4. You are manually inputting SMTP commands in order to complete a SMTP transaction. Unfortunately, unless you manually input the data for a proper and well-formed email message, including a Subject and a Message, our system will discard it.
How do you know if your email goes through the relay server properly? You will see your email almost instantly in Reporting after you send it.

Tuesday, March 23, 2010

New Feature: Floating Buttons on Send Email page

We're always striving to improve our user interface, and today we've added an option that will make using the Send Email page much easier. This page has a lot of form fields on it, and every time you make a change to a field, if you want to send yourself a test email, you have to then scroll up or down to find the buttons. Not any more...now you can choose to have the buttons float at the bottom of your screen.

To set this option, go to Settings --> Send Email Page, and check the box to enable Floating Buttons.


The buttons on the Send Email page will now remain constant at the bottom of your page.



Please note that this feature will not work with Internet Explorer 6. It will work with Internet Explorer 7 and greater, and with Firefox, Safari, and Chrome.

Press Release: JangoMail Takes Lead in Delivering Runner Updates During NYC Half-Marathon

New York Road Runners again chose JangoMail to deliver race updates for last Sunday's Half-Marathon.

Read our press release to learn more about how JangoMail helped NYRR deliver race updates via email.

https://www.jangomail.com/JangoMail-Takes-Lead-In-Delivering-Race-Updates-For-NYC-Marathon.asp

Sunday, March 21, 2010

New Feature: Self Service Upgrades!

We've just launched a tool to allow you to upgrade your account without contacting Support. This feature is available only in our new no-frames interface. And we've only rolled it out to a portion of our accounts, to test it out. If you don't see the Upgrade Account button in your account yet, you soon will.


To upgrade your account click the Account Info link in the blue top area, and then you'll see the screen above. Then click the Upgrade Account button.



You'll then be taken to the Upgrade Account tool. From here you have several options:

  1. Upgrade the number of emails for just the current billing cycle.
  2. Upgrade the number of emails for both the current billing cycle and all future billing cycles (a permanent upgrade)
  3. Upgrade the number of data bytes for just the current billing cycle.
  4. Upgrade the number of data bytes permanently, for the current and all future billing cycles.