17 September, 2009
Filed under CiviMail, v2.2
There was a thread in the forum a few weeks ago about adding generic replacements for tokens that dont have a value for a specific contact. An example is where the first name field is blank and the organization would want to substitute friend or member instead of keeping it blank. The token engine does not provide this functionality by default, however implementing it via a hook is relatively trivial. We use the tokenValues hook to "modify" the token values substituted in any outgoing email. If a contact does not have a token value for a specific token, we just insert the default value. The below code assumes you have a drupal module called civiexample. for joomla change the function name to joomla__civicrm_tokenValues and to standalone_civicrm_tokenValues for standalone.
function civiexample_civicrm_tokenValues( &$values, &$contactIDs ) {
    if ( is_array( $contactIDs ) ) {
        $single = false;
    } else...
Read more
04 June, 2009
Filed under CiviMail, v2.3, CiviCRM

Greetings and Salutations :-)

As some of you may already know, the existing "Greeting Type" feature in CiviCRM is pretty broken. You can't use it to specify a greeting for either email or printed / postal communications (no token or export support). In addition, as described in Tony Guzman's recent blog on Better Household Management - it's not designed to support a number of key use cases. So... Tony and the folks at Dharmatech have been working with us to figure out a flexible WORKING solution which can handle the simple cases ("Dear Dave") as well as the more complex cases ("Dear Dave and Bob", "The Honorable Scout Conberg", etc.). If you haven't read Tony's blog yet - start with the Greetings and Salutations section there. Then, if this is... Read more
26 May, 2009
By rczamor
Filed under CiviMail, v2.2, CiviCRM, Drupal

Trellon has been working on a fairly large implementation of CiviCRM for an advocacy group based in DC that was seeking to implement a CRM system that will help them manage their online fundraising and email marketing program. Email marketing is a large part of the organization's outreach strategy, so having a mail system that can deliver their 50,000+ emails in a short amount of time was a necessity.

We explored methods for optimizing CiviMail and decided to follow recommendations made by Lobo on the CiviCRM wiki. We set up the client mail and database server on a dedicated server with an Intel 2 Quad Core 2Ghz processor, 16GB of RAM, and 70 GB of disk space. We wrote some custom scripts to batch emails over to the mail server on cron to increase delivery speeds as well.

We have been able to get some really good times on delivery...

Read more
10 March, 2009
By shot
Filed under CiviMail, v2.2, CiviCRM

The documentation for CiviCRM 2.2 is up and so are the new docs for CiviMail Installation, including a sub-page on CiviMail Processor.

Please do let us know how to improve these pages (or help even more by doing it yourself!).

06 March, 2009
By shot
Filed under CiviMail, v2.2, CiviCRM

Along with the introduction of CiviMail Processor as the new supported return email hander, we’ve made three changes that are relevant for third-party CiviMail developers in CiviCRM 2.2.

Unified email formats

From CiviCRM 2.2 on, we’ve unified the format of the ‘action’ email addresses used in CiviMail. The new format is a.1.2.1234567890123456, where a is a one-letter symbol for the action to be performed (b for bounce, c for confirm, e for resubscribe, o for opt-out, r for resubscribe and u for unsubscribe), followed by two ids relevant to the action, followed by the 16-digit hex hash – all separated by dots. This means that all CiviMail-bound emails might should now match (b|c|e|o|r|u)\.(\d+)\.(\d+)\.([0-9a-f]{16})@

Note 1: In the case of the subscribe action,...

Read more
12 January, 2009

We are excited to announce that the initial Alpha release of 2.2 is now available for download, AND to try out on our sandbox site. This release includes several major new features:

  • CiviCase - case management component with configurable workflows (learn more...).
  • Personal Campaign Pages - Allow constituents to create and promote their own personal fundraising pages in order to drive traffic to your organization's online contribution pages (learn more...).
  • Simplified CiviMail Requirements - PHP-based option to handle return channel (bounces, replies ...) - replaces AMAVIS and simplifies installation and...
Read more
21 October, 2008
By shot
Filed under CiviMail, v2.2, CiviCRM

I’m happy to report a PHP counterpart to imap2soap is coming in CiviCRM 2.2, so the handling of CiviMail’s return channel should be much easier in the future (ideally as simple as setting up a cronjob).

There are also other CiviMail improvements and changes in 2.2 (kudos to U.S. PIRG for their sponsorship!) which I plan to unveil in upcoming post(s), but let’s concentrate on the return channel for now.

The solution will be based on UI-configurable mail sources, and the idea is that every now-and-then – depending on your cron settings – the CiviMail processor will poll the source and take care of all the emails found there, either by processing them or ignoring. The processing will be done by using local API calls, so will also work on PHP installs lacking the SOAP support.

In the case of IMAP accounts, the emails from Inbox...

Read more
05 October, 2008
By xavier
Filed under CiviMail


On every new CiviCRM install, I've had the same question about the difference between CiviCRM (the mass mailing module) and the send mail feature (from and individual contact and a search result). The question is when to use one or the other.

I understand than historically, these two features comes from both end of the spectrum, CiviCRM was made to send newsletters and bulk emails, and the send email is a replacement of sending a mail from your mail client. However, you can have a mailing list of a handful of contacts, and you can send "individual" emails to several dozen contacts.

As Dave put it (http://forum.civicrm.org/index.php/topic,4889.0.html):

Send Email to Contact(s) - The model is basically the same as sending a simple / quick message to 1 or a few people from Outlook / my email client. However, it has the benefit of keeping a record of the communications inside the CRM....

Read more
29 August, 2007
By shane
Filed under CiviMail, v1.9, CiviCRM

Hi CCRM Friends,

My name is Shane Hill. Some of you may have read my name in a few places or on some lists. This post is meant to introduce me and give some background. I am with the organization The Urban Alliance For Sustainability. http://www.uas.coop and we use CiviCRM to manage our constituency and send email blasts. At first, I was just a volunteer with UAS as I believed in their mission (now my mission) and I wanted to lend my experience to what they were (are) doing. Then in time I inherited their web operations which eventually led to having to deal with CiviMail. :)

When I say I had to deal with CiviMail, do not get me wrong. I love CiviMail and CCRM, it's just that CiviMail comes with a high technical bar to entry and at times I felt a bit like a pole-vaulter using a soda straw (bio-degradable plastic) to get over the bar. So I changed a few things about the CiviMail implementation that we had going and ended up...

Read more
29 August, 2007
By shot
Filed under CiviMail, v1.9

Thanks to UAS’s Shane Hill’s impressive recent CiviMail improvements (currently, among others, an order of magnitute speed-up in email generation…) and the forthcoming changes for DA, we decided to make a separate CiviCRM release consisting of CiviCRM 1.8 and the improved CiviMail. The release will be called CiviCRM 1.9 and is developed on the v1.9 branch in our Subversion repository.

CiviCRM 1.9 will be strictly a CiviMail-improvement release, which means there will be no changes to core CiviCRM nor other CiviCRM components.

Now, the poll. One of the improvements we want to roll in this release is that all of the CiviMail actions that the users can now undertake over SMTP, like subscribe, unsubscribe, or opt-out, can also work over HTTP. This means that instead of, for example,...

Read more