follow me on twitter Follow me on twitter

reasons why emails bounce back

by Heather Goff on February 10, 2011

in Tutorials,useful info

Several weeks ago I had a client call me in a panic. She said that her emails were bouncing back and could I fix it? It ended up that she had just sent a big mailing with attachments out and a handful of the emails bounced back. Her bounced emails inspired this blog post.

There are any number of reasons why emails might bounce back. What is certain, is that when they bounce back, the server that bounced them will give you a reason why they bounced, right at the top of the bounced message. Usually they bounce for benign reasons that have nothing to do with who hosts your email.

For example:

You may be sending the recipient an attachment that is too large for their mailbox capacity. If that happen, there will be some text that states that the message size exceeded the fixed maximum message size. (see image below).

It could be that the email address is no longer valid, or has a typo in it. If this is the case, you will get a message saying that the address was rejected or that the recipient is not their customer or doesn’t exist.

See the two examples below:

It could be that the mailbox of the recipient has reached its quota or is full.

Often, the receiving person’s mail server is down or has a very large queue. When that is the case you will receive a message at the top saying that the email hasn’t been delivered yet, but your server will try again.

If your mail server has been blacklisted for spamming, then your email might bounce back as well. In that case there will be a clear message stating so.

If I am hosting your email, and you get a message about RBL lists and black lists, then please DO contact me immediately, forward me the bounced email and I will put the wheels in motion to fix the situation.

Can you think of other reasons why emails bounce? and what the clues are in the returned mail heading?

{ 0 comments }

I build websites with custom content management systems, and I also set up custom WordPress blog sites for clients. Often my clients have videos produced and are at a loss on how to add them to their websites.

This tutorial is directed at videos that are hosted elsewhere and give you an embed code for adding them to your website. I took these screen shots when I was emailing directions to Barbara at Island Alpaca on how to add video to her website. Please check out her wonderful alpacas and alpaca products.

The first thing you need to do is find the video’s embed code. Often, when a movie that you are watching is over, it will give you the embed code at the end. For example, here is a screen shot of a video hosted by youtube.com. In this case, you would highlight all of the code in the embed field and copy it.

This screen shot below if from a video hosted by plumtv.com. Many of my local Martha’s Vineyard clients have videos produced by Plum TV that they want to put on their websites. On the screen shot below, the movie ends with the share tab open by default, but if you click to the right of it on the embed tab…

… it will open with the embed code that you can copy by clicking on the copy code button in the bottom right.

The screen shot below is showing the text editor that is used in the Island Alpaca content management system. What I suggested that Barbara do first, is to put a line of asterisks where she wants to place the embed code for the video – because once you switch to the code or source view, it is sometimes hard to tell where to put it if you don’t know HTML (and sometimes even if you do).

Next you need to switch to the code or source view of the editor.

In Barbara’s editor, you would click on the Source button in the top left.

If you were adding it to a blog post, you would click on the HTML tab in the top right.

And if you have the wysiwyg editor that many of my other content management systems use, you would click on the code icon < > on the bottom right.

All wysiwyg editors have some way of switching to view the source or code view. If you mouse over their icons, they will often tell you which one is for which.

Once you switch to the code view – look for those asterisks, and highlight them and replace them by pasting the embed code.

You may need to change the width and height of the video embed code so that it will fit in your website design. You can see in the pasted code where the width=”" and height=”" values are. Those numbers represent the number of pixels each attribute is allotted. Web pages show 72 pixels to the inch, and some websites layouts are pretty narrow, so you may need to adjust the width and height. For Barbara’s site I had her adjust the video from 640 pixels wide to 480 pixesl tall, to 420 pixels wide by 315 pixels tall. Embed code may have the width and height attributes in more than one place, so look at all of the code that you pasted.

Once you add the embed code and adjust it, save your changes and the video will display on your web page.

Not all wysiwyg or text editors will show that the video code is in place when not looking at it with the html or code view, and some of them will remove the code if you make subsequent changes to the page so make sure you keep a copy of the embed code for the video someplace handy, in case you need to replace it.

{ 0 comments }

This is a quick tutorial on how to start gathering keywords to use in optimizing your website for the search engines.

The first step is to brainstorm and jot down a list of what you think the phrases are that people are using who might want what your website offers. What are the phrases that people are typing into the search engine search boxes?  Keywords are a form of advertising. Make sure you only use keywords that match what your site offers. The search engines want to match people’s searches with websites that truly match those searches, so if you are selling affordable housing, don’t use the keyword phrase “ocean front villas”.  It is important to be honest.

If your website offers multiple things – homes for sale and vacation rentals, for example, put together a list for each facet of what you offer, so you would come up with one list for your home sales, and one list for your vacation rentals.

Keep in mind, also, that people might not be aware of your product name to search for it – so if you have a product with an obscure name that cures headaches – make sure your keywords include “headache cure”, “getting rid of headaches”, as opposed to the product name. Sometimes you need to optimize for the symptoms rather than the solution.

Then, go to the google keyword tool website: https://adwords.google.com/select/KeywordToolExternal

When you arrive there – click on the “Previous Interface” link in the top right of the page. (see image below)

Then, paste your list of keyword phrases into the field “Enter one keyword or phrase per line:” make sure that “Use synonyms” is checked, and then click on the button, “Get Keyword Ideas”. (see image below)

This will give you  your list of keyword phrases with how many times people use them to search.

To make the data easier to read, go to the show/hide columns drop down menu and HIDE the local search volume AND the advertiser competition. (see image below)

Make sure to select “Exact” from “match type” (see image below)

Then export your list to csv (for excel). Export a copy of the “Additional keywords to consider” as well that google lists under your list. (see image below)

Consolidate both excel files into one and then go through the keyphrases and eliminate any phrase that is not relevant to your website. Make sure that you only keep the keywords that are truly what your website is about.

The next step is to find out how competitive those keywords are. We do this by doing a google search for the keyword specifying that you want to see only websites that have that keyword in their title tag. If a website has the keyword in their title tag, then they are most likely your competition. You do this by typing

allintitle: “keyword”

make sure to put the keyword in quotes.

When you hit the Google Search button, the number of results will appear underneath the search bar. (see image below)

Add that result number next to your global monthly search volume in your excel sheet. In the image below I’ve named the allintitle results “competitors”. (see image below)

The keywords that are going to bring your site the most targeted traffic are the ones that have a low competitor number compared to the search volume number. You can certainly include some of the keywords that are not in the least competitive, if they are truly what your website is about, but also make sure to include the competitive search phrases. Also, make sure to include your business name in your keywords.

Where to put the keywords?

  • Put them in the content of your pages – the text
  • Put them in the content headings
  • Put them in the meta tags
  • Put them in alt tags of images and title tags of links

The more often the keyword is found on your site – or within links to your site – the better you will place in the search results for that keyword.

It is important to have the keyword not just in the metatags and not just in the page text, but in both places.

Include your keywords in  your page headings and in bold font – and also in internal text links that bring people from one page of your website to another.

META TAGS

Many of my content management systems give my clients an interface for adding and updating the meta tags on their website pages. The most important meta tag is the title tag. Make sure to include your best keyword phrases at the beginning of your title tag. Include your company name in the title tag as well – for your home page, about your company page and contact page.

Google will only show 60 – 70 characters of your title tag, but you can certainly make it longer.

The title tag of a page should include only keyword phrases that have to do with that specific page.

You should try to include 3 keyword phrases in your title tag:

Primary Keyword – Secondary Keyword 1, Secondary Keyword 2

Put your keywords in your keywords meta tag. List the keyword phrases that have to do with the specific page, the most important first, and separate them by commas. The keywords meta tag is the least important meta tag. According to google webmaster central, google at this time disregards it completely for its search results. However, other search engines do look at it, and since you have the keywords handy in your excel sheet, go ahead and copy and paste them into this meta tag – it can’t hurt.

Put the keywords in your description meta tag. The description tag is often what search engines will show under your page listing in their results, so make sure it describes what the page is about and is phrased in a way that will make people want to click to the page. Read what google webmaster central has to say about the meta description tag.

This is a start to researching and adding keywords to your website.

Make sure to optimize each page of your site specifically for the content on that page. Make sure your keywords are a good match to what you really offer.

If you have separate areas of your site, create separate lists of competitive keywords for each section.




{ 0 comments }

Distraction is not all bad

by Heather Goff on May 13, 2010

in Marketing

Sometimes, as a free lance web designer, I have so much on my punch list that I put on blinders, put my nose to the grindstone and don’t feel I can look up from my computer. People are counting on me to get their work done, and it would be irresponsible to let myself be distracted by twitter posts, or emails from friends, right?

I have found, though, that often, the time I take being sidetracked to an interesting website, or looking at something fun that a friend or colleague has sent me, has a great benefit to my productivity and work. Why? Because creativity, like fire, needs oxygen from the surrounding environment. The stimulation and things that we discover by looking up and around can add to the quality of our work.

Here is an example: I just reprogrammed an artist’s website, Beldan K. Radcliffe (beldankradcliffe.com). We were keeping the graphic design pretty much the same as her original site, but programming it with SEO friendly code, and adding a shopping cart and tile section. The last thing on my “to do” list for Beldan was to figure out how to create a page where shoppers could “play” with her tiles and arrange them to figure out which ones they want to purchase. She sells a set of four tiles at a discounted rate, and she commented that at her artisan shows, people spend hours picking out tiles and arranging them together to decide which they want to purchase. I had absolutely no idea how I would program that for her. So this final task stuck in the back of my brain as something I needed to get done, but wasn’t sure how to tackle.

One day soon after I was busy working on numerous things, and my friend and colleague, Kathleen Forsythe, shot me an email with a link to a website that she thought was inspired.  The subject of the email was “how cool is this..” and the link was to this page: http://www.curiousgenerationgroup.com/

I went to the link, and finding it inspiring, I looked at the source code to see if I could figure out how it was created. I noticed that one of the scripts that they use was located in a folder named scriptaculous, and doing a google search on that, I found this site: http://wiki.github.com/madrobby/scriptaculous/. The site explains that  script.aculo.us is a set of JavaScript libraries to enhance the user interface of web sites. (TRANSLATION:  free javascript code that, once installed on your server, lets you do all sorts of cool things)  AND one of those very cool functions was the ability to drag and drop items on a page. Suddenly I had a solution to my tile task for Beldan, and with the scriptaculous files, was able to get her new page up in under 1/2 hour.

I was rewarded for my exploration. Exploring is a way to self educate, to stimulate our creativity.

Not all distraction is bad. If I hadn’t taken 10 minutes to open that email, click on the link and look at the source code, I would still be stumped on how to create a page where customers can re-arrange items, and that unfinished task would still be rattling in the back of my brain.

Have you had similar experiences? Let me know by commenting below.

{ 2 comments }

Website programming is so different today compared to what it was even five years ago, that it is like comparing houses built of mud to houses built of brick, or a tricycle to a racing bike.

I am not talking about visual differences, though there are some – websites are designed for a higher screen resolution today than they were five years ago, for example. I am talking about the nuts and bolts programming of the site. The code that makes it work.

Today’s programming is designed to load faster, be easier to maintain and to be search engine friendly. Although each of my website projects  are programmed to the website standards and SEO standards of the time that they were built, and I take classes every year to stay at the top of the programming curve, I have been programming websites since 1997 and my portfolio contains some sites that are old school programming, because of their age.

I am mentioning this for several reasons, the first is that I had one of my favorite clients come to me, whose site I designed back in 2003 with a custom content management system, and they had hired an SEO consultant to look at it and give them suggestions. When the consultant looked at my code, I was embarrassed, and I felt like saying – wait, don’t judge my present skills on what I was programming seven years ago! It is like comparing the mud pies I was making at 10 to the apple pie that I cooked at 17.

I did agree with my client and the consultant that it was time to gut their site and reprogram it. It looks the same as before, but now it has SEO friendly code and URL’s, and the content management system has more SEO functionality programmed into it. The renovation was quickly done, because I knew the site inside and out and had programmed the custom content management system so was familiar with how to transition it for today’s needs.

This is a somewhat defensive and personal rant. I don’t want to eliminate my older sites from my portfolio, but the second reason I am writing about this topic, is that I’ve had them (my older sites) held up by my competition as examples of how I program today, and that is vastly unfair. I hope that when a potential client looks at examples of a web programmer’s work, they would ask to see the most current work that a programmer is doing. I want to reassure my clients and potential future clients that I do program as search engine friendly as any programmer available for hire.

I have gone back and re-programmed a handful of client sites this year, bringing the code up to date with today’s standards, and hopefully the majority of my clients will revisit my services so that we can renovate their sites as well.

After 5 years, it is really time to look at a site’s code and decide if it needs to be gutted, to look at the design and decide if it needs freshening up. To evaluate what was working and what isn’t working anymore. There is no reason why you can’t work with the original designer and programmer of your site to do this. They can probably do a more efficient renovation for you (translating to less money), because they already are familiar with your site and content management system (if you have one).

By the way, in my website portfolio, my most recent projects are at the top. : )

Are you a website programmer? Do you recommend removing old sites from one’s portfolio? Have you had old work held up by your competition as a reason not to hire you? Please share your experiences by commenting on this post.

{ 0 comments }

Here is some great geeky information given by network solutions customer service to one of my clients, who passed it on to me. Since my servers have similar security standards, I frequently refer to the code examples and solutions illustrated below.

For security reasons (to prevent “PHP include” hacker attacks),  some servers set the allow_url_fopen and allow_url_include PHP directives to off. If you see errors similar to the following on your website, then your website (or software you have installed on your website) uses insecure PHP calls.

Common Errors

Warning: fopen() [function.fopen]: URL file-access is disabled in the server configuration in /……../ on line (..)

Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in in /……../ on line (..)

Warning: include() [function.include]: URL file-access is disabled in the server configuration in /……../ on line (..)

Warning: getimagesize() [function.getimagesize]: URL file-access is disabled in the server configuration in in /……../ on line (..)

Warning: readfile() [function.readfile]: URL file-access is disabled in the server configuration in in /……../ on line (..)

Solution

WordPress / Joomla / Drupal Software: These applications do not use functions that require allow_url_fopen or allow_url_include to be turned on. However, certain third party plugins may require changes. If you see any of the errors above, try to isolate which plugin is causing the issue and replace it with an alternative plugin. You should also consider reporting the issue to the plugin developer so that they may fix it in an upcoming release. Alternatively, you can check out some of the examples below and attempt to fix the errors yourself.

Note: Do not attempt to fix issues yourself if you do not have prior software development experience. If the below does not make sense, you should consult with your web professional.

The errors above manifest themselves when your website is attempting to retrieve outside web URLs. The solution is to use the PHP Curl library to do so instead, which is more secure. How you use PHP ‘s Curl library to circumvent this issue depends on which warning you’ve received.

Example 1: Warning: fopen() [function.fopen]:

$file = “http://news.google.com/news?ned=us&topic=h&output=rss”;

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, “startElement”, “endElement”);
xml_set_character_data_handler($xml_parser, “characterData”);

if (!($fp = fopen($file, “r”))) {
die(“could not open XML input”);
}

while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf(“XML error: %s at line %d”,
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}

In the above example, an attempt to open a Google RSS feed is being made. The fopen() call will fail because $file is an outside web site, and the rest of the code will not be executed. To properly load the RSS feed and parse, this snipit of code would need to be rewritten as follows:

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, “startElement”, “endElement”);
xml_set_character_data_handler($xml_parser, “characterData”);

$file = “http://news.google.com/news?ned=us&topic=h&output=rss”;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $file);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xmldata = curl_exec($ch);
curl_close($ch);

$xmldata = split(“\n”,$xmldata);

foreach ($xmldata as $data) {
if (!xml_parse($xml_parser, $data)) {
die(sprintf(“XML error: %s at line %d”,
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}

Example 2: Warning: file_get_contents() [function.file-get-contents]:

<?php

$contents = file_get_contents(‘http://www.cnn.com/’);

echo $contents;

?>

In the above example, the file_get_contents function is used to retrieve the content of the CNN website. You can accomplish the same thing safely using CURL as follows:

<?php

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, ‘http://www.cnn.com’);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);

// display file
echo $contents;
?>

Example 3: Warning: include() [function.include]:

Including files from web hosts is not allowed.

<? php include(“http://www.example.com/new.php”); ?>

If the file that you are trying to include is local, use relative paths instead , not the web URL. Otherwise, use the following:

<?php

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, ‘http://www.example.com/mew.php’);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);

// display file
echo $file_contents;
?>

Example 4: Warning: getimagesize() [function.getimagesize]:

getimagesize() allows you to get the height, width and size of an image file. To use getimagesize() safely, CURL can be used to get the remote file, the data can be saved to a local temporary image file and getimagesize() can be used on the local version.

<php

$filename = “http://www.example.com/example.jpg”;

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $filename);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

$contents = curl_exec($ch);
curl_close($ch);

$new_image = ImageCreateFromString($contents);
imagejpeg($new_image, “temp.jpg”,100);

$size = getimagesize(“temp.jpg”);

// width and height

$width = $size[0];
$height = $size[1];

Example 5: Warning: readfile() [function.readfile]:

<?php

$contents = readfile(‘http://www.example.com/some.txt’);

echo $contents;

?>

In the above example, the readfile function is used to retrieve the content of a remote text file. You can accomplish the same thing safely using CURL as follows:

<?php

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, ‘http://www.example.com/some.txt’);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);

// display file
echo $contents;
?>

The above examples are not guaranteed to run without changes, they are strictly guidance to illustrate how to safely retrieve off-site content.

Related Posts with Thumbnails

{ 4 comments }