Thursday, May 21, 2009

Bulk Senders GuidelinesPrint

We've received inquiries from bulk senders who'd like more information on best practices to ensure that their mail is delivered to Gmail users. The way Gmail classifies spam depends heavily on reports from our users. Gmail users can mark and unmark any message as spam, at any time. To increase the inbox delivery rate of your messages, make sure that all recipients on your distribution lists actually want to receive the mail. Visit the following sections for some tips on how to make sure your messages are welcomed by Gmail users.

Authentication & Identification Subscription  Unsubscribing  Format  Delivery  Third-Party Senders  Affiliate Marketing Programs 
Authentication & Identification

To ensure that Gmail can identify you:

  • Use a consistent IP address to send bulk mail.
  • Keep valid reverse DNS records for the IP address(es) from which you send mail, pointing to your domain.
  • Use the same address in the 'From:' header on every bulk mail you send.

We also recommend publishing an SPF record, and signing with DKIM or DomainKeys

Subscription

Each user on your distribution list should opt to receive messages from you in one of the following ways (opt-in):

  • Through an email asking to subscribe to your list.
  • By manually checking a box on a web form, or within a piece of software.

We also recommend that you verify each email address before subscribing them to your list.

The following methods of address collection are not considered 'opt-in' and are not recommended:

  • Using an email address list purchased from a third-party.
  • Setting a checkbox on a web form or within a piece of software to subscribe all users by default (requiring users to explicitly opt-out of mailings). 
Unsubscribing

A user must be able to unsubscribe from your mailing list through one of the following means:

  • A prominent link in the body of an email leading users to a page confirming his or her unsubscription (no input from the user, other than confirmation, should be required).
  • By replying to your email with an unsubscribe request.

To help ensure that your messages aren't flagged as spam, we also recommend that you:

  • Automatically unsubscribe users whose addresses bounce multiple pieces of mail.
  • Periodically send confirmation messages to users.
  • Include each mailing list they are signed up for, and offer the opportunity to unsubscribe from those in which they are no longer interested.
  • Provide a 'List-Unsubscribe' header which points to a web form or email address where the user can unsubscribe easily from future mailings (Note: This is not a substitute method for unsubscribing).

It's possible that your users forward mail from other accounts, so we recommend that you:

  • Explicitly indicate the email address subscribed to your list.
  • Support a URL method of unsubscribing from your mailing list (this is beneficial if your mailing list manager can't tell who is unsubscribing based on the 'Reply-to:' address). 
Format
  • All bulk messages you send must be formatted according to RFC 2822 SMTP standards and, if using HTML, w3.org standards.
  • Messages should indicate that they are bulk mail, using the 'Precedence: bulk' header field.
  • Attempts to hide the true sender of the message or the true landing page for any web links in the message may result in non-delivery.
  • The subject of each message should be relevant to the body's content and not be misleading.
Delivery

While Gmail works hard to deliver all legitimate mail to a user's inbox, it's possible that some legitimate messages may be marked as spam. Gmail does not accept 'whitelisting' requests from bulk senders, and we can't guarantee that all of your messages will bypass our spam filters. To make sure our users receive all the mail they'd like to, we've provided them with a method for sending us feedback about messages flagged as spam -- users have the option of clicking a 'Not spam' button for each message flagged by our spam filters. We listen to users' reports, and correct problems in order to provide them with the best user experience. As long as our users don't consider your mail as spam, you shouldn't have inbox delivery problems.

There are two important factors that, under normal circumstances, help messages arrive in Gmail users' inboxes:

  • The 'From:' address is listed in the user's Contacts list.
  • A user clicks 'Not Spam' to alert Gmail that messages sent from that address are solicited.

If you send both promotional mail and transactional mail relating to your organization, we recommend separating mail by purpose as much as possible. You can do this by:

  • Using separate email addresses for each function.
  • Sending mail from different domains and/or IP addresses for each function.

Some senders include blank tracking pixels in their messages so they can tell when recipients have opened them. We strongly discourage the inclusion of such pixels for two reasons. First, Gmail does not display images by default, so tracking pixels will not accurately reflect whether users are reading your mail. Second, tracking pixels are often used by spammers, and using them can affect the spam classification of your messages.

By using these tips, it's more likely that the important transactional mail will be delivered to a user's inbox. Our guidelines are meant to help you build a good reputation within the Gmail system, resulting in continual delivery to Gmail inboxes. 

Third-Party Senders

If others use your service to send mail (for example: ISPs), you are responsible for monitoring your users and/or clients' behavior.  

  • You must have an email address available for users and/or clients to report abuse (abuse@yourdomain.com).
  • You must maintain up-to-date contact information in your WHOIS record, and on abuse.net.
  • You must terminate, in a timely fashion, all users and/or clients who use your service to send spam mail.
Affiliate Marketing Programs

Affiliate marketing programs reward third-parties for bringing visitors to your site. Unfortunately, these programs are attractive to hard-core spammers and can potentially do more harm than good. Please note the following:

  • If your brand becomes associated with affiliate marketing spam, it can affect the mail sent by you and your other affiliates.
  • It is your responsibility to monitor your affiliates and remove them if they send spam.

If you are sending mail in accordance with our guidelines and Gmail continues to mark your messages as spam,

www.seo-mama.com

Monday, May 11, 2009

THE CHANGE Associates

THE CHANGE Associates
We love developing Dubai and UAE people to be the best they can be. We are a team of coaches, trainers, consultants and business entrepreneurs in Dubai with a diversity of skills and knowledge – yet the same like-minded attitudes, principles and goals towards success – we help you to achieve your personal and professional goals, and we achieve ours.
http://www.changeassociates.ae/

Sunday, April 19, 2009

All Directory Site

www.searchurl4me.com  www.searchlink4me.com www.rajibroy.me www.openpayroll.info www.worldinmobile.mobi www.openpayroll.mobi www.seo-mama.info

Sunday, April 12, 2009

Photography Exhibition of Rajib Roy

Photography Exhibition of Rajib Roy

http://www.myphotoexhibition.info/

Monday, March 30, 2009

2010 fifa world cup

2010 fifa world cup

http://2010fifaworldcup.freeblog4me.com

Saturday, March 28, 2009

DLF IPL 2009 - IPL - Indian Premier League

DLF IPL 2009 - IPL - Indian Premier League

Thursday, March 5, 2009

MEBreaks.com :: Hotel offers dubai, Hotel offers abu dhabi, Hotel offers fujairah, Cheap hotels dubai, Weekend breaks dubai, Dubai hotels, Abu dhabi h

Looking for that perfect midweek or weekend getaway?  If so, MEBreaks.com is the perfect website for you.  With a wide range of quality hotels across the Middle East, you will be sure to find the perfect venue for your well earned break.
http://www.mebreaks.com

Welcome to Dubai Night Planner

Welcome to Dubai's FIRST Interactive E-mail Entertainment Guide! Dubai Night Planner is designed to provide Dubai's Residents and Visitors with a CONFUSION-FREE guide to whats on in the City. Receive exclusive offers and promotions in participating outlets allowing you to save money in your favourite Restaurants, Bars and Clubs. http://www.dubainightplanner.com

SEO-MAMA Website Search Engine Optimization, Free SEO, Dubai, UAE, UK , Canada, Australia, USA

SEO-MAMA Are a Specialist SEO Team Devoted to Search Engine Optimisation Also Known as Search Engine Optimization And Website Optimisation Techniques. It is based on Dubai, UAE and have branch worldwide http://www.seo-mama.com

:WVSS: Web design, Website design dubai, Web development dubai, Design, Websites, Graphic Design, Website hosting, Flash designs, Website creatiion

Based in the UAE, WVSS is a digital marketing company providing internet consultancy, web design, graphic design, online advertising, web application development, SMS broadcasting and integration and mobile marketing for clients all over the GCC http://www.wvss.net

Wednesday, November 5, 2008

ACCOUNTS INVENTORY PAYROLL SOFTWARE

http://accounts-inventory-payroll-software.com/

Friday, March 28, 2008

An Overview of the New Caching Features in ASP.NET 2.0

Introduction

Prior to ASP.NET 1.x, if you wanted to implement any sort of caching in your Web-based application, you were pretty much on your own. With ASP.NET 1.x, Microsoft provided many different caching options built right in. No longer were you forced to roll your own caching solutions. In many cases, implementing caching was now as simple as adding the OutputCache directive to the top of your ASP.NET Web page and letting .NET do the rest. Only in complex scenarios were developers required to write any code.

With ASP.NET 2.0, caching can still be implemented as simply as it was in ASP.NET 1.x, but Microsoft has added a number of features in order to make the caching support even more flexible and robust. In this article I'm going to give you a quick overview of the new caching features in ASP.NET 2.0 and show you how to use them. While the caching support in ASP.NET 1.x represented a good first step, with ASP.NET 2.0 caching support for Web applications built on the Microsoft platform takes a giant leap forward.

Please note that I'm not really going to cover the caching support which existed in ASP.NET 1.x and has been carried over to ASP.NET 2.0. In this article, I'm going to focus on the new caching features in ASP.NET 2.0. Therefore, if you're not already familiar with the caching support that ASP.NET 1.x offered, you may want to take a look at some of the following links:

There are four main new features that I'll be covering. They are:

  • SQL Cache Invalidation
  • Post-Cache Substitution
  • Fragment Caching API
  • Cache Configuration

SQL Cache Invalidation

I'll start with what was probably the most anticipated new feature in ASP.NET 2.0's caching support: SQL Cache Invalidation. Let's assume you've got a web page which queries data from a database. If this is data that doesn't change very often, then there's really no need to query the database for the data each time a user requests the web page, so we decide to cache the data. The problem then becomes, how long do we cache the data for? If we cache it for too short a period then we make our web server work harder then it needs to. In the larger scheme of things, this will increase our operating costs since the server won't be able to handle as many requests and we'll need to add another server sooner then we really should. If, on the other hand, we cache the data for too long a period then we risk users being presented with out of data information. How big a problem this is really depends on the actual application and the data being cached, but it's generally not good to be showing users out of data information.

So finding the optimal length of time for which to cache a certain piece of data is not an easy task. It depends on a lot of factors. Some of those include -- how quickly the application needs to respond to users, the amount of users it needs to support, how frequently the data in the database changes, how quickly those changes must be reflected in the web pages, and what are the potential consequences of displaying old data?

What if instead of us having to continually check to see if there have been any changes, we could simply ask the database to tell us when there's been a change made. This is where SQL cache invalidation comes in. Instead of just picking a length of time to cache our data for, with ASP.NET 2.0's SQL cache notification we can set it up so that when the data is changed in the database, the cached version of the data is automatically cleared.

There are two methods to implement SQL cache invalidation. The method you use depends mainly on what data source you are pulling data from. For SQL Server 2005 you'll want to use notification-based invalidation and for earlier versions of SQL Server (7.0 and 2000), you'll need to use polling-based invalidation.

I won't go into the details of how to set up SQL cache invalidation here, but you can find instructions in the ASP.NET 2.0 QuickStart which is installed with the .NET Framework SDK or hosted online on Microsoft's ASP.net web site: SQL Cache Invalidation

Post-Cache Substitution

Post-cache substitution is for that situation where most everything on a page can be cached except for one or two little exceptions that must be handled dynamically. In ASP.NET 1.x, the only way to handle this type of scenario was to split the page up into sections that could be cached and then make those into user controls. It worked, but it could be really confusing because you had to sort of reverse your thinking about the problem. It was no longer "let's cache everything but this one little section", but instead became "let's find everything we need to cache and turn it into a user control so we can cache it." All of a sudden your page is split up into ten different user controls and everything got complicated simply because we wanted to do something like put a current timestamp at the bottom of the page.

Post-cache substitution is exactly what it says it is. We take something that has been already been cached and simply substitute some dynamic data back into it. In effect, we are caching the whole page and then just executing the one little part that we didn't cache.

There are two ways to implement post-cache substitution. You can either use the Response.WriteSubstitution command or the control. I've used both in the sample page listing below.

postcachesub.aspx <%@ Page Language="VB" %> <%@ OutputCache Duration="60" VaryByParam="none" %> Post-Cache Substitution

Current time (Response.WriteSubstitution): <% Response.WriteSubstitution(New HttpResponseSubstitutionCallback(AddressOf GetTime)) %>

Current time (<asp:Substitution>):

This page was cached at: <%= DateTime.Now.ToString() %>

Fragment Caching API

The method used most often to cache sections of a page is called fragment caching. Fragment caching is what I described earlier where you move the sections to be cached into user controls and then set the OutputCache directive at the top of the control to cache it. This works fine in all versions of ASP.NET, but in ASP.NET 2.0, we now have access to the fragment caching API. This means that we are no longer stuck just choosing a finite number of minutes to cache the control. Now we can programmatically adjust the caching options.

Why would you want to do this? Let's say that we're building a control that displays some stock market data. During trading hours this control needs to be updated fairly regularly. After trading stops however, we'd be just as happy to cache the data until the next morning. There's no reason to hit the database for every request for the control when we know that the data can't possibly have changed.

Below are a simple web page and user control which show how you can easily change how long a control is cached.

fragmentapi.aspx <%@ Page Language="VB" %> <%@ Register TagPrefix="FragAPI" TagName="SampleControl" Src="fragmentapi.ascx" %> Fragment Caching API

This page was generated at: <%= DateTime.Now.ToString() %>

fragmentapi.ascx <%@ OutputCache Duration="60" VaryByControl="ddlSeconds" %> Seconds to cache this page fragment:

This page fragment was generated at: <%= DateTime.Now.ToString() %>

I simply take the value from a drop down list and use that to set how long the control is cached. Don't let that fool you though. Your logic can be as complex as you need it to be. You can vary caching of the control based on time, user input, data from a database, or really anything that makes sense for your situation.

Cache Configuration

The last thing I'm going to discuss is improvements that have been made in caching configuration in ASP.NET 2.0. There have been two main advances in this area: the ability to create and use cache profiles and to set cache properties via your application's configuration files.

Cache Profiles

In ASP.NET 1.x you needed to set the length of time for which a file should be cached via the OutputCache directive at the top of the file. This made changing caching configuration relatively difficult because in order to change the setting you had to modify the setting in each file which implemented caching.

In ASP.NET 2.0, you can define what are called cache profiles. This allows you to create named sets of settings which are defined in your web.config file. Then if you find you need to make a change to one of the profiles, all you need to do is edit the profile in the config file and the change is picked up by all the scripts using that profile.

web.config

cacheprofile.aspx <%@ Page Language="VB" %> <%@ OutputCache CacheProfile="ProductsCacheProfile" VaryByParam="none" %> Cache Profiles

This page was generated at: <%= DateTime.Now.ToString() %>

So, in the script above, all you'd need to do in order to change the length of time for which all the pages using the "ProductsCacheProfile" profile would be cached is to change the value in the web.config file. Similarly, in order to move a page from one profile to another, simply change the name of the profile referenced in the CacheProfile property of the OutputCache directive at the top of the page.

Cache Configuration via Config Files

I'm just briefly going to mention this next item because it's not something most developers will be messing with too much, but for those of you who need to, you can now modify caching parameters via ASP.NET's configuration files as well. You can enable or disable output and fragment caching, modify a number of parameters and even specify how much memory the system should allow caching to use. For those of you who will need to modify these settings the following links should be helpful:

Conclusion

After reading this article, I hope you'll agree that the caching support in ASP.NET 2.0 has come a long way. From simpler configuration and management to more flexible implementation and deployment, Microsoft has added a number of features which help make using ASP.NET caching in your application easier then ever. If you're not already using caching in your ASP.NET applications, isn't it about time you started?