drupal_mail() and names with apostrophes
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"
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