Question

When using drupal_mail to send an email, I get errors when display names (not emails) contain apostrophes in the "To" field.

For example, referring to drupal_mail() documentation, email addresses like "Another User <anotheruser@example.com>" are valid. "Another User <anotheruser@example.com>" validates perfectly, but "Another O'Neil <anotheroneil@example.com>" fails.

Do I need to change the last name to ONeil instead of O'Neil, or can escape it somehow?
I have also tried ""Another O'Neil" <anotheroneil@example.com>" without success.

  • Setup: Ubuntu 11.04 LTS
  • Drupal Version: 7.x
  • Mail Service: Amazon SES
  • Additional Mail Modules: "HTML Mail" and "Mail System"
Was it helpful?

Solution

I assume a few things:

  • You have no exotic mail transport installed, having Drupal fallback to phps' mail()
  • You deliver the mail trough a unix system. Windows deals differently with mail.

Digging into RFC2822 you will find about escaping " and some other characters.

The solution then presents itself as

$to = "\"Another O'Neil\" <anotheroneil@example.com>";
drupal_mail('contact', 'page_mail', $to, language_default(), $values, $from);

print $to; #=> "Another O'Neil" <anotheroneil@example.com>
Licensed under: CC-BY-SA with attribution
Not affiliated with drupal.stackexchange
scroll top