J'ai un formulaire Web où un utilisateur peut télécharger un fichier; Je souhaite que ce fichier soit joint à l'e-mail envoyé au responsable du site.
Quelle est la meilleure pratique pour le faire? J'ai essayé de trouver un module d'assistance, mais je n'en ai pas trouvé.
Ou vous pouvez utiliser les modules Mail System et Mime Mail. Une case "Inclure les fichiers en tant que pièces jointes" apparaîtra dans la configuration de Webform E-Mails.
Vous pouvez utiliser le module Mimemail pour envoyer un fichier en pièce jointe dans le formulaire Web, et vous pouvez également choisir les types de fichiers.
Mimemail:
Notez qu'il existe de sérieuses limitations que vous devez prendre en considération lors de la création de mises en page d'e-mails, voir Email Standard Project pour plus d'informations.
Collez d'abord ce code dans votre fichier Template.php de thème actuel
function yourthemename_webform_mail_headers($node, $submission, $email) {
$attach_bool = false;
foreach ($node->webform['components'] as $item) {
if ($item['type'] = 'file') {
$attach_bool = true; // found a file component!
break;
}
}
$headers = array(
'X-Mailer' => 'Drupal Webform (PHP/' . phpversion() . ')',
);
if ($attach_bool) {
$hash = md5('randomstring'); // remember you can change randomstring to anything you want, just make sure it's consistent w/ part 2
$headers['Content-Type'] = "multipart/mixed; boundary=\"".$hash."\"";
}
return $headers;
}
N'oubliez pas de changer le nom des jeunes avec le nom de votre thème
2) Maintenant, créez webform-mail.tpl.php dans votre répertoire de thème actuel et collez ce code.
<?php
// $Id: webform-mail.tpl.php,v 1.3.2.2 2010/03/25 02:07:29 quicksketch Exp $
/**
* @file
* Customize the e-mails sent by Webform after successful submission.
*
* This file may be renamed "webform-mail-[nid].tpl.php" to target a
* specific webform e-mail on your site. Or you can leave it
* "webform-mail.tpl.php" to affect all webform e-mails on your site.
*
* Available variables:
* - $node: The node object for this webform.
* - $submission: The webform submission.
* - $email: The entire e-mail configuration settings.
* - $user: The current user submitting the form.
* - $ip_address: The IP address of the user submitting the form.
*
* The $email['email'] variable can be used to send different e-mails to different users
* when using the "default" e-mail template.
*/
?>
<?php
$hash = md5('randomstring'); // refer to part 1
$attachments = '';
foreach ($node->webform['components'] as $item) { // loop through each webform component
if ($item['type'] == 'file') { // is it a file?
if ($submission->data[$item['cid']]) { // did the user attach a file?
$result = db_query_range('SELECT f.filename, f.filepath, f.filemime FROM {files} f WHERE f.fid = ' . $submission->data[$item['cid']]['value'][0], 0, 1);
// query the database for the file information
$file = db_fetch_array($result);
$attachments[] = array(
'mime' => $file['filemime'],
'path' => $file['filepath'],
'name' => $file['filename'],
'data' => chunk_split(base64_encode(file_get_contents($file['filepath']))));
}
ob_start();
}
}
if (is_array($attachments)) {
print "--".$hash."\n"
."Content-Type: text/plain; charset=ISO-8859-1\n";
}
?>
<?php print t('Submitted on %date'); ?>
<?php if ($user->uid): ?>
<?php print t('Submitted by user: %username'); ?>
<?php else: ?>
<?php print t('Submitted by anonymous user: [%ip_address]'); ?>
<?php endif; ?>
<?php print t('Submitted values are') ?>:
%email_values
<?php print t('The results of this submission may be viewed at:') ?>
%submission_url
<?php
if (is_array($attachments)) { // let's attach the files now
foreach ($attachments as $attachment) {
print "--".$hash."\n"
."Content-Type: ".$attachments['mime']."; name=".$attachment['name']."\n"
."Content-Disposition: attachment; filename=".$attachment['name']."\n"
."Content-Transfer-Encoding: base64\n\n"
.$attachment['data']."\n";
}
print "--".$hash."--";
}
print(ob_get_clean());
?>
Maintenant, videz le cache et faites et récupérez de cela source et je ne l'ai jamais utilisé auparavant.
Je pense que le module webform_multifile est utile pour ce que vous voulez.