• Resolved mikeecho

    (@mikeecho)


    I use an Uploads-to-Email Attachment snippet, but the Drop Zone files are not being picked up by the snippet.
    I tried Drop Zone via URL, Name, Absolute, but none of them are being picked up.
    Could you maybe see why that is happening?
    Here is the code snippet I use

    /**
     * Class Elementor_Form_Email_Attachments
     *
     * Send Elementor Form upload field as attachments to email
     */
    class Elementor_Form_Email_Attachments {
       // Set to true if you want the files to be removed from
       // the server after they are sent by email
       const DELETE_ATTACHMENT_FROM_SERVER = false;
       public $attachments_array = [];
    
       public function __construct() {
          add_action( 'elementor_pro/forms/process', [ $this, 'init_form_email_attachments' ], 11, 2 );
       }
    
       /**
        * @param \ElementorPro\Modules\Forms\Classes\Form_Record $record
        * @param \ElementorPro\Modules\Forms\Classes\Ajax_Handler $ajax_handler
        */
       public function init_form_email_attachments( $record, $ajax_handler ) {
          // check if we have attachments
          $files = $record->get( 'files' );
          if ( empty( $files ) ) {
             return;
          }
          // Store attachment in local var
          foreach ( $files as $id => $files_array ) {
             $this->attachments_array[] = $files_array['path'][0];
          }
    
          // if local var has attachments setup filter hook
          if ( 0 < count( $this->attachments_array ) ) {
             add_filter( 'wp_mail', [ $this, 'wp_mail' ] );
             add_action( 'elementor_pro/forms/new_record', [ $this, 'remove_wp_mail_filter' ], 5 );
          }
       }
    
       public function remove_wp_mail_filter() {
          if ( self::DELETE_ATTACHMENT_FROM_SERVER ) {
             foreach ( $this->attachments_array as $uploaded_file ) {
                unlink( $uploaded_file );
             }
          }
    
          $this->attachments_array = [];
          remove_filter( 'wp_mail', [ $this, 'wp_mail' ] );
       }
    
       public function wp_mail( $args ) {
          $args['attachments'] = $this->attachments_array;
          return $args;
       }
    }
    new Elementor_Form_Email_Attachments();
  • The topic ‘Form Image to Email Attachment issue’ is closed to new replies.