发送带附件的电子邮件

问题描述 投票:5回答:5

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

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

我错过了什么吗?有没有可以处理这个的模块?

email drupal drupal-modules
5个回答
3
投票

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

如果你坚持,你可能有自制的attachment sender:base64编码你的附件,将它们添加到邮件正文,添加正确的标题,你就完成了。


1
投票

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

用法其他模块可能需要此模块,但本身并不十分有用。安装后,任何模块都可以通过调用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。现在你可以吃蛋糕了。


0
投票

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

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

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


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();
}

0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.