CSS Compatibility Issue in Email

by sylviah 15. December 2011 11:55

Need to create a website-like email newsletter for your client’s campaign?

Or, an email report with specific layout?

Beware! Most email clients have far lower support for CSS and HTML than the web. Your beautiful design work might look great on one email client, but look undesirable on a different email client.

The best way to ensure your email looks great across all clients is to test on all of them. Unfortunately, it is a very time consuming process since there are over 30 email clients on the market. My suggestion is to pick a list of most popular email clients to test. You can narrow down the list by knowing which email clients your recipients will most likely to use.

Here are the top 10 most popular email clients (as of June 2011):

Outlook

iOS Devices (iPhone, iPad and iPod Touch)

Hotmail

Apple Mail

Yahoo! Mail

Gmail

Windows Mail

Android

AOL

Thunderbird

[From: http://www.campaignmonitor.com/stats/email-clients/]

My second suggestion is to code or design the email with the limitations in mind. There are some coding practices that will help creating a successful html email.

Use inline styles instead of external or embedded style sheets. Many email services cut everything above the body tag and disable external style sheets.

Never! I mean NEVER use JavaScript in an email. Your email will be marked as spam by most email services. Other elements that may not supported: HTML Forms, ActiveX components, Adobe Flash animations, animated GIFs.

Use table for layout instead of div. Tables are more consistently supported.

Declare width, cellpadding, and cellpsacing for all tables and table cells.

Do not use background images. Background colors are okay.

Do not use images for important content. Many email clients turn images off until it is allowed by the user.

Provide alt text and declare both width and height for all images.

Finally, test your email by sending samples to the selected email clients. To perform a more thorough test, check the samples on different operation systems.

If you want to learn more about this topic, website such as Campaign Monitor http://www.campaignmonitor.com/resources/) provides in-depth information and guides (see sample below) about CSS support in email. 

 

Other useful websites:

http://www.email-standards.org/clients/

References:

http://www.davidjrush.com/blog/2011/05/email-client-compatibility-html-friendly-emails/

http://assistenza.mailup.it/KB/a382/css-and-e-mail-clients-compatibility-issues.aspx

http://kb.mailchimp.com/article/how-to-code-html-emails

What I've Learned About the Importance of Accuracy

by Erin Piazza 6. December 2011 22:16

Over the past six years, in which I’ve worked full time in various marketing and advertising capacities, I’ve learned how important accuracy is—often through failure.

When I managed community events for the Seattle Seahawks, I learned how important it was to communicate accurately the specific time in which an event would take place—in case, perhaps, it was to be told to a news station who would then put it in the newspaper, which may have caused a few hundred people to show up late to an event.

As an account executive at a major global advertising agency, I learned that whatever my response was to a client needed to be extremely accurate; many times those answers were taken as absolute truth and expectations were set based on what I said. At the time I thought I was too junior for anyone to really take my opinions to heart—I learned quickly that client communications were not typically the place for opinion.

Across the different projects I work on at Exsilio, my respect for accuracy has only grown—handling client budgets, large campaigns with high public visibility, and growing the awareness of Exsilio.

So, why is it so hard to be accurate? I don’t think anyone tries to avoid accuracy; it’s just not often given enough attention. Accuracy is lost when time is not taken to obtain a correct answer instead of giving an opinion or guessing; it’s compromised when attention is not paid to the importance of a particular line item or email reply; it’s disregarded when the responsible party no longer has passion or interest for the topic and careless answers are given.

The consequences from not taking time to be accurate is far worse than dedicating an additional few steps or few minutes to be on point—ultimately, efficiencies can be gained from taking that extra time and getting it right the first time.

Tags:

General

Good-Better-Best: How to Propose Options that Hit the Mark

by Ruth 22. April 2011 10:19

Clients often come to us with a fixed timeline, budget, rough objectives in mind. It can be a challenge to respond to a customer who only has a vague idea of what their looking for, and wants a quick estimate. Offering good/better/best options can be a simple way to present a tiered range options, where one is more likely to meet the customer's needs and price point. It helps convey features and tradeoffs in a way that’s straightforward for your customer to understand, and narrows down options and scope to start a deeper conversation around one option. It also makes it easier for your customer to present and justify costs to a manager approving buget, which can often be the case.

Good: lowest price; standard features.
This option should always include your standard SLAs – if you have value-added services as part of your SLA, those should be included too!
 
Better: mid-tier price; added features and benefits included.
Present your standard option with some recommended features. Depending on the range between your “good”and “best” option, among other considerations, there are times where you'll actually want to avoid offering a “better” mid-tier option.
 
Best: highest price; has the most features and benefits included, plus add-ons that the client may not have thought of.
Even if you’re aware it’s beyond your customer’s budget, consider this as a chance to present your best recommendation. It’s an opportunity to inform and showcase your full capabilities, and exhibits thought leadership and creativity – the outcome of which can lead to prospective engagements (not now, but maybe next time… or, not now, but talk to this other person who may be interested).

In other words, make it easy for the customer to differentiate between the good, better, and best – in a way that the benefits vs. the tradeoffs of each are immediately recognizable and understandable. Make it an easy "yes" decision. And, most importantly, don’t gloss over the “best”. Don't just show them what they asked for, show them what they could have. I’m coming from the perspective of a vendor-to-client scenario, but this can also be applied in marketing and selling products to end customers. Products that come to mind are car service packages, mobile phone plans, restaurant prix fixe menus, booking hotels, super value meals.
 
Do you have a positive experience you can share as a customer, choosing between different levels of service? Or, as a business, offering your customer a choice of different levels of service?

SharePoint Deployment/Development Tips

by wenyuz 1. April 2011 17:15

When developing against SharePoint, sometimes you will encounter issues at deployment. Here is some info and tips that I found quite helpful.

  1. Always try to reset your IIS first. A lot of times, simply resetting IIS would resolve a lot of issues at deployment.
  2. If you are encountering error while doing a wsp deployment. Make sure that the SharePoint Administration service is running. You should probably set it as auto start.
  3. If you are getting the error stating that a deployment or retraction is already under way and it is not allowing you to redeploy. Most likely your previous deployment is hung, and you can cancel the job and re-deploy your solution by getting to the stsadm in your command line and then run the following two commands. Stsadm is located in The GUID JobID is provided by the first step.
    1. stsadm -o enumdeployments
    2. stsadm -o canceldeployment –id “GUID jobid”
  4. If you are seeing the general SharePoint error and not giving you any specifics on what the issue that you are having, and you do have access to the SharePoint site as admin. You can turn it off by going to web.config. Of course if you are in a production environment. Make sure to change it back after debugging.
    1. Debug=”true” instead of the default of Debug=”false”
    2. CallStack=”true” instead of the default of CallStack=”false”
    3. CustomErrors=”Off” instead of the default of CustomErrors=”On”
  5. At deployment, your usercontrols are deployed to C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\CONTROLTEMPLATES, so you can always double check to ensure that the deployment of your usercontrols are done correct. However, they are all read only, and cannot be updated unless by a new deployment.

Parameter Passing in SSIS

by JasonR 15. March 2011 14:50

I had to set up an SSIS package that inserted data into a log, grab that logID and pass it to all of the sub tasks so they can use that LogID.

I am new to SSIS packages and had to do a lot of reading to come up with how I was going to create an SSIS Package, Define a package variable, then pass that variable to a task. I set up a simple proof of concept to test my ideas.

First I Opened VS, and created a new Integrated Service Project. If you have a hard time finding it, it’s Project Types: Business Intelligence Project, you may need to install this from your SQL installation.

Next I Clicked on Tools->Other Windows->Variables. Making sure I have the SSIS Package I want to work with selected and in the open window I clicked on the icon for new variable. This was important because your variable scope can be pointed to a different project or at the task level if you aren’t paying attrition.

I gave it a common name, and set the Data Type to Object. This is set to object because I had an issue passing int32 values. I’ll talk about it below.

Now in my Control Flow I opened up my “toolbar” and dropped two Execute SQL tasks, I double clicked on the first one. Because this one will pass the ID to my variable I need to set the ResultSet to ‘single row’ then I am using an OLE DB connection, and put my localHost for the server.

Then I clicked on the SQL Statement ellipses and pasted in a very simple statement “select 8 as Test” this is just so I pass a value, in my real solution I had a bunch of sql code and ened it with “select IDENT_CURRENT('log.TaskRun') as TaskRunID” .

Now I have to bind “test” in my example or “TaskRunID” in my second example to the variable. I do this in the “Result Set” tab. I simply click “Add” (if you do not see add you did not set a value for “ResultSet”) For ResultName, this is where I put “Test” or “TaskRunID” for Varable Name it will look like User::<name>. Click ok and open the next Task.

For the second Execute sql task you will fill out the same information as before this time with a new SQL Statement.  For simple sake I put this
Declare @temp numeric
set @temp = ?
insert into log.taskrunlog (message) values (@temp)

Here I am jut inserting my value into the database, to show I did something.  Things to note is that I am declaring my temp as numeric, this was the only int style choice I could find. Also note the “?” this is used to denote variable in SSIS.  In my simple example I could replace @temp with the ? and only have one line of code, but if I wanted to reuse the ? I must put it in a variable. If I had 3 parameters then each ? will refer to a different parameter.

Next  lets click on the Parameter Mapping tab and click “add” from here you are going to select the variable name from the drop down user::<name> this is an input, data type is Numeric, next it very important Parameter Name is 0. If you have a list of them the next will be 1 etc. This allows the ? to work correctly.

From here you can right click and ‘execute task or f5 or click the green arrow. In my case I had to save it to the server first before I could execute my package, I can do that by file->save copy of testVarable.dtsx as…

From here I was able to create a task and execute it from sql, I’ll be showing that part next week.

Back to Basics in Visual Studio 2010

by johnb 10. March 2011 17:32

Have you ever wondered what those icons are on the top right of the toolbar? Don’t be afraid. Go ahead and click and see what happens. 

  

These icon’s are very helpful. For instance if you accidentally closed out “Solution Explorer” one of these icons can help you open it back up. To find out which one, point your cursor on top of the icon’s and wait a second. A help dialogue box pops up that states what the icon is. Plus it will give you short cut keys. 

 

Pretty cool, huh? After experimenting with the icons, now you can layout your custom workspace to maximize the efficiency of development work. 

 

TFS - Saving Time and Avoiding Headaches with Excel

by charlesd 8. March 2011 09:56

Whenever I need to add or edit items in Team Foundation Server, doing so in TFS itself can be a pain, especially if there are multiple items that need to be updated.  After working with TFS for a while, I’ve found a way to streamline my work by using the Excel feature. 

For me, I find it’s super helpful to see all items in an organized list and being able to edit fields on the fly in one spreadsheet makes working with TFS so much easier.

I have created a quick guide that goes through creating and editing TFS items in Excel:

                                                                                                       

Create New Items in Bulk

1.       Ensure you have Work Item Tracking selected in your toolbar by right-clicking in the toolbar and selecting Work Item Tracking.

2.       In the toolbar, click the New Work Item dropdown and select New Work Items with Microsoft Excel.

3.       A new Excel workbook will open with a standard blank table for you to enter field values.

4.       From here, every row is an item and you may add in as many as you’d like.

Note: You can select any variation of work item types (User Story, Task, Bug, etc.) in the Excel.  Even if a work item you selected isn’t associated to a field column, that column will not be editable for that specific row.

Add Field ColumnsIf you want to add more fields, you may do so by adding more columns

5.       Select the Team tab at the top so open the Ream ribbon.

6.       In the Work Items section, select Choose Columns.

7.       From here, you may select the desired fields you would like to display in the columns by moving the fields from the Available columns to the Selected columns.

8.       Click OK to add the columns.

Publish Work ItemsHere is where you will be saving your updates and complete create your work items in TFS

9.       In the Team ribbon, under Work Items, select Publish.

10.   All updates will be made and you will see the IDs are instantly created.

Edit Items in Bulk

11.   In your TFS query, select multiple items that you would like to make updates to.

12.   Right-click in the list and select Open Selection in Microsoft Excel.

13.   Just like going to create new items, this will take you directly into an Excel workbook where you can make updates to the work items you selected.

Are you still using that Spiral Bound Notebook?

by jaimem 7. March 2011 10:09

Do you find yourself flipping through the pages searching for that one detail you wrote down on the back of a page or ever misplaced your notebook for a period of time?
 
Try using Microsoft OneNote.  Once I converted, I realized how nice it is to have one place to gather, organize and share all of my work and personal information.  The application is very easy to use as it works just like a notebook would or even having a file cabinet full of notebooks, only it's lighter weight.
 
6 Reasons OneNote outsmarts your spiral notebook:
• OneNote provides one single place to collect all your ideas, information, photos, videos, screen clips and web links.  You never run out of blank pages or have to carry multiple notebooks.
• The search functionality makes finding a specific idea or action item quick and easy. 
• OneNote integrates with other Office 2010 applications such as Outlook and PowerPoint.   I particularly like being able to flag an item in my notes as a Task and having it appear in my Outlook Tasks.  Or opening a meeting invite on my calendar and clicking the OneNote icon to begin  a new page for meeting notes that is pre-populated with the meeting details such as meeting subject, date and attendees.  
• Share information easily through email.   After a meeting, click the E-mail page button under the Share tab and distribute your meeting notes without having to retype or cut & paste. 
• Record audio (if your laptop has a built in microphone) than search through the audio files later, especially useful for meetings and capturing items you may have missed (this is the one feature I use the most).
• Access your information from anywhere through a Windows-based Smartphone or web browser.  This really comes in handy if your job requires you to be on the move all the time.   
 
Check it out for yourself; there are lots of resources to get you started.  Here are a few good ones I found:  “A quick introduction to OneNote"Meet OneNote"

What's Taking Up All The Space On My Computer?

by Robert 3. March 2011 13:50

There are times when the hard drive on your computer is running low on space and you would like to know what is taking up the space.  A really good utility to help with this is WinDirStat

This program will list all of the folders and files on your computer and display their sizes.  You can then right-click on a folder or file and easily delete it.  It is simple to use, and best of all, the program is free.

 

Tags:

General

Quick Way to Generate Content

by ChrisR 2. March 2011 20:10

I can’t think of too many projects I’ve been involved with that didn’t interact with some type of content in one way or another. While it’s ideal to have the final content to use during development, that’s not always possible.  The content may not exist yet, or it may be confidential  - whatever the case may be I often  need to use sample content as a placeholder while developing.  While I could always copy and paste some text from a website to use as a placeholder there is a better way that gives me much more control and is just as quick and easy. 

In most Microsoft Office apps you can generate a block of sample content by typing =rand() and then pressing enter.   If you want more control over the content that is generated there are two parameters you can include.  The first parameter is the number of paragraphs to generate.  For example =rand(4) will spit out 4 paragraphs.   The second parameter is the number of sentences to include in each paragraph.  So =rand(2,5) will give you 2 paragraphs with 5 sentences in each.  

If you want to generate ‘lorem ipsum’ text you can use =lorem() instead.  With =lorem() you can also pass the two parameters control the number of paragraphs and sentences that are generated.

Tag cloud