Skip to content

Release Notes

Information

Releases use the following numbering system: {major}.{minor}.{incremental}

  • major: Major refactoring or rewrite - make sure you read and test very carefully!
  • minor: Breaking change in some circumstances, or a new feature. Read carefully and make sure you understand the impact of the change.
  • incremental: A "safe" change / improvement. Should always be safe to upgrade.

[BC]: Items marked with [BC] indicate a breaking change that will require updates to your code if you are using that code in your extension.

Release 1.5.0 (2026-08-28)

  • !34 Reject an access key or secret that is demonstrably corrupt when it is saved, naming the cause - leading/trailing whitespace, an SES SMTP password pasted in place of the IAM secret access key, or a value that has been HTML- or percent-encoded on its way in. Previously any of these saved silently and then failed every send with an InvalidSignatureException that named neither credential. The two field descriptions now say what each credential is, rather than "usually a 20-ish / 40-ish character alphanumeric key".
  • !35 Test the credentials against Amazon SES when the settings are saved, and report the result on the settings page. Also warns when suppression list removal is enabled but the IAM policy does not allow ses:DeleteSuppressedDestination - that combination was previously silent, leaving contacts taken off hold still suppressed at SES and their mail still dropped.

Release 1.4.2 (2026-08-26)

  • !31 Fix bounces and complaints being dropped for transactional emails on sites that have a localpart configured on their mail account - the transactional return-path was built without the localpart that CiviCRM core prefixes to every bulk-mailing VERP, so the webhook could not recover the job/queue/hash from it. Sites with an empty localpart were unaffected.
  • !32 Implement hook_civicrm_idsException for the webhook route so SNS notifications are not intercepted by CiviCRM's intrusion-detection filter. The endpoint is still gated by SNS signature verification.

Release 1.4.1 (2026-08-06)

  • !27 Fix bounce/complaint handling for sub-addressed (plus-addressed) recipients - verify_email_address() was stripping everything up to the last +, so e.g. user+tag@example.org matched against the wrong contact or failed to match the queue row at all.
  • !28 Fix webhook fataling on SNS notifications that carry no mail payload (e.g. the "Successfully validated SNS topic" notification sent when pointing an identity's Bounce/Complaint feedback at a topic) - these are now logged and ignored instead of causing a fatal and a 5xx response that SNS retries forever.

Release 1.4.0 (2026-08-04)

  • !19 Harden SNS webhook signature verification against SSRF - only fetch the signing cert from a fixed AWS-owned host and verify the TopicArn matches before trusting a notification.
  • Add a full PHPUnit test suite covering the webhook, suppression list and mail sending code.
  • Fix complaint handling to opt out all complained recipients, not just a single (undefined) email address.
  • Fix SES throttling retry logic so retries are actually exhausted (giving a PEAR_Error) instead of retrying forever.
  • !24 Fix fatal error recovering the VERP from the X-CiviMail-Bounce header fallback (SES sends mail.headers as a list of objects, not associative arrays).
  • Set up documentation publishing to docs.civicrm.org.

Release 1.3.16 (2026-08-03)

  • Use SES APIv2 for larger message size limits.
  • Add account-level suppression list removal when contacts are taken off hold.
  • Bump minimum CiviCRM version to 6.14 and declare PHP 8.1-8.5 compatibility.
  • Fix coding standards issues.

Release 1.3.15 (2026-02-19)

  • !16 Fix missing 's' from variable.
  • !15 Add detailed config docs.

Release 1.3.14 (2025-12-03)

  • !14 Deal with possibility of the reuturnPath key being set in the bounce account and always try to put complaint email address contacts on hold even if no verp items found.
  • !13 Resolve #8 in similar way to #6 given that the format of the complaint email address may be a full name and email not just the email address.

Release 1.3.13 (2025-08-29)

  • Add check for raw message delivery on subscription (it needs to be disabled otherwise signature verification will fail).
  • Don't fatal error if you try to load webhook page via browser (return empty doc instead).

Releaes 1.3.12 (2025-08-25)

  • Improve docs, add extra logging on error.

Release 1.3.11 (2025-08-12)

  • !12 Fix SES throttling handling.

Release 1.3.10 (2025-08-07)

  • !10 Tweak delivery retry logic as per AWS recommendations.
  • !11 Fix typo.

Release 1.3.9 (2025-08-02)

  • !9 Allow Extension to install when CiviMail Extension/Component has been disabled.

Release 1.3.8 (2025-07-22)

  • Fix menu permission (Amazon SES menu item did not appear on Standalone).

Release 1.3.7 (2025-06-10)

  • #6 Fix for the fix.

Release 1.3.6 (2025-06-10)

  • #6 Filter for Email Address in Webhook. If the email address contains displayname we need to remove that before matching on email in CiviCRM.

Release 1.3.5 (2025-03-17)

  • !5 Retry and delay delivery when SES sending rate exceeded.

Release 1.3.4 (2025-02-26)

  • !4 Use singleton SesClient class for performance improvements.

Release 1.3.3 (2025-02-10)

  • Improve log message when transactional email info could not be added.
  • Fix email comparison for bounces. Add in testEmail context for transactional.

Release 1.3.2 (2025-02-10)

  • Add "SES" mail protocol so that you can set the bounce processing mailbox to protocol=SES. It does not actually make any difference but it means you can select a "correct" option instead of a fake option like "IMAP".
  • Improve some log messages.

Release 1.3.1 (2025-02-07)

  • Multiple fixes for transactional email bounces and bug fixes.

Release 1.3.0 (2025-01-30)

  • Record bounces for transactional mail.
  • Fix sending Bcc email when sending via SES API.

Release 1.2.8 (2024-11-01)

  • Fix "Send test email" crash in CiviCRM 5.78+

Release 1.2.7 (2024-02-09)

  • Use setting_admin mixin for settings.

Release 1.2.6 (2024-02-09)

Do not use - use 1.2.7 instead There was a bug in the mgd file which caused a crash on cache clear.

  • Remove code to handle multi-domain in navigation menu managed entity. It was causing problems with classloader on some sites.

Release 1.2.5 (2024-01-29)

  • Return expected PEAR_Error on failure.

Release 1.2.4 (2024-01-20)

  • Fix CIVICRM_MAIL_LOG.

Release 1.2.3 (2024-01-11)

  • Fix PHP notice.

Release 1.2.2 (2023-01-10)

  • Fallback to mail() if SES not configured for API sending.

Release 1.2.1 (2023-01-10)

  • Fix issues with composer dependencies causing 500 error on some sites.

Release 1.2 (2023-01-08)

  • Support SES API for sending email.