我有一个自定义表单(使用表单API创建),需要通过电子邮件发送上传的文件。当前表单提交处理程序使用drupal_mail()发送没有附件的电子邮件。
所以我正在寻找一个解决方案来正确发送带有Drupal附件的电子邮件。 Mime Mail似乎有点矫枉过正,因为不需要HTML邮件,模板和其他功能。但我看到的唯一其他选择是在我的hook_mail()实现中处理邮件时设置相应的标题并序列化邮件正文中的附件。
我错过了什么吗?是否有任何模块可以处理这个问题?
答案 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上找到。
记录:我是该模块的作者和维护者。