Contact Form 7 - ¿Enviar archivo adjunto al remitente?
He instalado el plugin Contact Form 7 en mi instancia de WP 3.2.1.
He configurado un formulario de contacto para que los usuarios soliciten evaluaciones.
Todo está funcionando bien, pero esperaba que cuando envíen una solicitud, pudiera enviarles un correo electrónico con un folleto de producto adjunto.
Actualmente lo tengo configurado así:
He intentado usar [file-691] donde 691 es el ID del archivo subido en la galería de medios.
Ninguna de las dos formas parece funcionar.
¿Cuál es la forma correcta de lograr esto?

Por lo que sé, la función que estás intentando usar no está diseñada para utilizarse de esta manera. De hecho, está pensada para darle al remitente la opción de subir un archivo que se envía junto con su mensaje de correo.
No creo que esta característica esté disponible en Contact Form 7

Prueba el plugin email-before-download utilizado junto con el plugin download monitor. Estos se integran perfectamente con CF7 y todo lo que necesitas hacer es seleccionar el ARCHIVO ADJUNTO para que se envíe por correo en lugar de un enlace de descarga directa. Funciona de maravilla.

Disculpa por mi mal inglés y mis aún peores habilidades en PHP.
Puedes usar email-before-download pero... no conseguí que funcionara como quería.
Intenté un poco de código y creo que esto funciona. No es la forma más elegante, pero puedes usar el enlace al archivo dentro del campo de adjuntos en la interfaz de administración. Simplemente ingresa allí algo como "wp-content/uploads/2013/05/Archivo.pdf" (sin las comillas) en lugar de "[file-1234]" y coloca el siguiente código en tu functions.php
function mycustom_cf_before_action(&$wpcf7_data) {
global $mailcounter;
$mailcounter = 0;
if ((!empty($wpcf7_data->mail['attachments'])) and (!(0 === strpos($wpcf7_data->mail['attachments'], '['))) ) {
global $cmail1;
$cmail1 = '';
$cmail1 = $wpcf7_data->mail['attachments'];
}
if ((!empty($wpcf7_data->mail_2['attachments'])) and (!(0 === strpos($wpcf7_data->mail_2['attachments'], '['))) ) {
global $cmail2;
$cmail2 = '';
$cmail2 = $wpcf7_data->mail_2['attachments'];
}
}
add_action('wpcf7_before_send_mail', 'mycustom_cf_before_action',1);
function mycustom_wpcf7_mail_components($components){
global $cmail1;
global $cmail2;
global $mailcounter;
if (($mailcounter == 0) and (!empty($cmail1)) and (empty($components['attachments']))) {
$components['attachments'][] = $cmail1;
}
if (($mailcounter == 1) and (!empty($cmail2)) and (empty($components['attachments']))) {
$components['attachments'][] = $cmail2;
}
$mailcounter = $mailcounter + 1;
return $components;
}
add_filter( 'wpcf7_mail_components', 'mycustom_wpcf7_mail_components' );
La primera función verifica si hay adjuntos "estáticos". Es decir, cualquier cosa que no empiece con [
o esté vacío.
La segunda función agrega el adjunto estático al enviar. Intenté usar "uploaded_files" pero luego los adjuntos se eliminaban. Como la parte de Components es la misma para mail1 y mail2, tienes que contar de alguna manera. Por eso está $mailcounter
. $cmail1
y $cmail2
son para llevar los enlaces a los adjuntos a la parte de components. CF7 ya no se preocupa por los datos originales del formulario de contacto en este punto, así que esta fue la única solución que vi.

Creo que este es el plugin al que se refiere: https://wordpress.org/plugins/email-before-download/
