Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sending email with attachment

I've a custom form (created with form API) that need send an uploaded file by email. The current form submit handler sends the email without attachment using drupal_mail().

So I'm looking for a solution to properly send email with attachment from Drupal. Mime Mail seems an overkill because HTML mail, templating and its other features are not required. But the only other alternative I see is to set the appropriate headers and serialize the attached file in the mail body when processing the mail in my hook_mail() implementation.

Did I miss anything? Is there any module to handle this?

like image 560
Pierre Buyle Avatar asked Aug 22 '10 14:08

Pierre Buyle


2 Answers

Mimemail is the easiest solution here. Be it an overkill or not, it will allow you to get it done with a single function call.

If you insist, you may have your homemade attachment sender: base64 encode your attachment(s), add them to the mail body, add the correct headers and you're done.

like image 79
Omar Ali Avatar answered Oct 05 '22 23:10

Omar Ali


You can use mime mail and force the message body to be sent in plaintext format. Here is an excerpt from the module's readme file:

USAGE This module may be required by other modules, but is not terribly useful by itself. Once installed, any module can send messages by calling the mimemail() function:

$sender - a user object, text email address or an array with name, mail
$recipient - a user object, text email address or an array with name, mail
$subject - subject line
$body - body text in HTML format
$plaintext - boolean, whether to send messages in plaintext-only (default FALSE)
$headers - a keyed array with headers (optional)
$text - plaintext portion of a multipart e-mail (optional)
$attachments - array of arrays with the file's path, MIME type (optional)
$mailkey - message identifier

return - an array containing the MIME encoded message

The key thing being to set the $plaintext argument to TRUE. Now you can have your cake and eat it too.

like image 27
Kevin Mathis Avatar answered Oct 05 '22 23:10

Kevin Mathis