J'essaie de créer un fichier CSV à partir d'une soumission de formulaire et de l'envoyer automatiquement par courrier électronique à un utilisateur spécifique. L'envoi lui-même est correct, mais je n'arrive pas à obtenir la pièce jointe. Est-il possible de créer une pièce jointe sans d'abord enregistrer le fichier sur le serveur?
function create_csv() {
$fd = fopen('php://temp/', 'w');
if($fd === FALSE) {
die('Failed to open temporary file');
}
$records = array( array('dummy', 'data', 'found', 'here') );
fputcsv($fd, $headers);
foreach($records as $record) {
fputcsv($fd, $record);
}
rewind($fd);
$csv = stream_get_contents($fd);
fclose($fd);
return $csv;
}
$to = $email;
$subject = 'Subject';
$message = 'Message';
$headers = 'From: ' . $other_email;
$attachment = create_csv();
$sent = wp_mail($to, $subject, $message, $headers, $attachment);
C'est parce que wp_mail s'attend à ce que la pièce jointe soit un nom de fichier (chemin du fichier) qu'il peut attach et envoyer. Vous fournissez une chaîne contenant le contenu du fichier:
function create_csv() {
$filepath = '/path/to/the/file.csv';
$fd = fopen($filepath, 'w');
if($fd === FALSE) {
die('Failed to open temporary file');
}
$records = array( array('dummy', 'data', 'found', 'here') );
fputcsv($fd, $headers);
foreach($records as $record) {
fputcsv($fd, $record);
}
rewind($fd);
fclose($fd);
return $filepath;
}
va résoudre votre problème. Voir http://codex.wordpress.org/Function_Reference/wp_mail