Как программно добавить файлы к письму в Contact Form 7 на Wordpress?

Как я могу изменить код ниже для прикрепления нескольких файлов к письму, если они генерируются? Когда я добавляю более одного файла, письмо не отправляется. Мой текущий код для прикрепления файлов к письму выглядт так: <br/><br/><pre><code class="php">add_action('wpcf7_before_send_mail', 'custom_attach_files_to_email');
function custom_attach_files_to_email($contact_form) {
    $submission = WPCF7_Submission::get_instance();
    if ($submission) {
        $uploaded_files = $submission-&gt;uploaded_files();
        $attachments = array();
        
        foreach ($uploaded_files as $uploaded_file) {
            $attachments[] = $uploaded_file;
        }
        
        $attachments[] = WP_CONTENT_DIR . '/uploads/files/file.txt';
        //$attachments[] = WP_CONTENT_DIR . '/uploads/files/file_2.txt';
        
        $mail = $contact_form-&gt;prop('mail');
        $mail['attachments'] = implode(',', $attachments);
        $contact_form-&gt;set_properties(array('mail' =&gt; $mail));
    }
}</code></pre><br/><br/>
Почему мой код не работает для прикрепления нескольких файлов к письму? Он работает только для одного файла.
  • 22 июля 2024 г. 13:22
Ответы на вопрос 2
Для того чтобы ваш код корректно прикреплял несколько файлов к письму в Contact Form 7 на WordPress, вам нужно изменить способ объединения файлов в переменную $attachments. Вместо использования implode(), используйте просто добавление файлов к массиву $attachments. 

Вот как вы можете изменить ваш код:

```php
add_action('wpcf7_before_send_mail', 'custom_attach_files_to_email');
function custom_attach_files_to_email($contact_form) {
    $submission = WPCF7_Submission::get_instance();
    if ($submission) {
        $uploaded_files = $submission->uploaded_files();
        $attachments = array();
        
        foreach ($uploaded_files as $uploaded_file) {
            $attachments[] = $uploaded_file;
        }
        
        // Добавляем дополнительные файлы
        $attachments[] = WP_CONTENT_DIR . '/uploads/files/file.txt';
        $attachments[] = WP_CONTENT_DIR . '/uploads/files/file_2.txt';
        
        $mail = $contact_form->prop('mail');
        $mail['attachments'] = $attachments;
        $contact_form->set_properties(array('mail' => $mail));
    }
}
```

Этот код должен корректно добавить все файлы к письму в Contact Form 7. Вам также необходимо убедиться, что у вас правильные пути к файлам и что они существуют на сервере. Если у вас по-прежнему возникают проблемы с отправкой писем, может быть разумно добавить проверки на ошибки в коде для лучшего понимания, что именно не работает.
$mail = $contact_form->prop( 'mail' );
$mail['attachments'] = $mail['attachments'] . "\n" . WP_CONTENT_DIR . '/uploads/files/file.txt';

$contact_form->set_properties([
    "mail" => $mail
]);
// Файл будет удален
$submission->add_extra_attachments( WP_CONTENT_DIR . '/uploads/files/file.txt' );
Похожие вопросы