我有一个使用表单API创建的自定义表单,需要通过电子邮件发送上传的文件。当前的表单提交处理程序使用drupal_mail()发送不带附件的电子邮件。
因此,我正在寻找一种从Drupal中适当地发送带附件的电子邮件的解决方案。Mime Mail似乎过于复杂,因为不需要HTML邮件、模板和其它功能。但是我唯一能看到的另一种选择是在我的hook_mail()实现中处理邮件时设置适当的标头并将附加的文件序列化到邮件正文中。
我错过了什么吗?有没有处理这个问题的模块?
我有一个使用表单API创建的自定义表单,需要通过电子邮件发送上传的文件。当前的表单提交处理程序使用drupal_mail()发送不带附件的电子邮件。
因此,我正在寻找一种从Drupal中适当地发送带附件的电子邮件的解决方案。Mime Mail似乎过于复杂,因为不需要HTML邮件、模板和其它功能。但是我唯一能看到的另一种选择是在我的hook_mail()实现中处理邮件时设置适当的标头并将附加的文件序列化到邮件正文中。
我错过了什么吗?有没有处理这个问题的模块?
您可以使用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
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();
}
Webform 模块允许您创建一个表单,并具有可用作附件的文件选项。所有可用的表单组件都列在该模块的手册页面上。
安装 Webform 后,它将显示为一种内容类型。一旦您保存了基本信息,例如标题和电子邮件地址,您就可以添加所需的表单组件。
添加一个“文件”类型的组件,确保选中了“电子邮件”(发送给收件人)选项,然后您就可以自定义允许的文件类型、扩展名、大小和上传文件夹。