发送带附件的电子邮件

时间:2010-08-22 14:53:19

标签: email drupal drupal-modules

我有一个自定义表单(使用表单API创建),需要通过电子邮件发送上传的文件。当前表单提交处理程序使用drupal_mail()发送没有附件的电子邮件。

所以我正在寻找一个解决方案来正确发送带有Drupal附件的电子邮件。 Mime Mail似乎有点矫枉过正,因为不需要HTML邮件,模板和其他功能。但我看到的唯一其他选择是在我的hook_mail()实现中处理邮件时设置相应的标题并序列化邮件正文中的附件。

我错过了什么吗?是否有任何模块可以处理这个问题?

5 个答案:

答案 0 :(得分:3)

Mimemail是最简单的解决方案。无论是否过度杀伤,它都可以让你通过一个函数调用完成它。

如果您坚持,可能会将自制的attachment sender:base64编码为附件,将其添加到邮件正文中,添加正确的标题即可。

答案 1 :(得分:1)

您可以使用mime邮件并强制以纯文本格式发送邮件正文。以下是该模块自述文件的摘录:

USAGE     其他模块可能需要此模块,但不是很严重     有用的。安装后,任何模块都可以发送消息     调用mimemail()函数:

$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

关键是将$ plaintext参数设置为TRUE。现在你可以吃蛋糕了。

答案 2 :(得分:0)

Webform module允许您创建表单并具有可用作附件的文件选项。所有可用的表单组件都列在模块的manual page上。

安装完成后,Webform将显示​​为内容类型。保存基础知识后,例如标题和要发送的电子邮件地址,您将能够添加所需的表单组件。

添加“文件”类型的组件,确保勾选“电子邮件”(收件人)选项,然后您就可以自定义允许的文件类型,扩展名,大小和上传文件夹。

答案 3 :(得分:0)

您可以使用Zend Framework。

function sendEmail($params){
    ini_set('include_path', 'inc/');
    require_once ('inc/Zend/Mail.php');

    $mail = new Zend_Mail();

    $mail->setSubject( $params['subject'] );

    $mail->setBodyText( $params['bodyText'] );
    $mail->setBodyHtml( $params['bodyHtml'] );

    $mail->setFrom( $params['fromEmail'], $params['fromName'] );
    $mail->addTo( $params['toEmail'], $params['toName'] );

    // Finally, add an attachment

    assert( file_exists($params['attachFile']) );

    $at = $mail->addAttachment(file_get_contents($params['attachFile']));
    $at->type        = $params['attachType'];
    $at->disposition = Zend_Mime::DISPOSITION_ATTACHMENT;
    $at->filename    = $params['attachName'];

    $mail->send();
}

答案 4 :(得分:0)

您可以随时查看Swift Mailer模块,它可以发送HTML(MIME)电子邮件,带有内嵌图像的电子邮件和带附件的电子邮件。它还可以根据HTML电子邮件版本自动生成纯文本版本,最终将让用户的电子邮件客户端显示首选版本(HTML或纯文本)。

Swift Mailer模块可在http://drupal.org/project/swiftmailer上找到。

记录:我是该模块的作者和维护者。