WordPress.org

Support

Support » Plugins and Hacks » Contact Form 7 » [Plugin: Contact Form 7] Sending Attachments, Without User Upload

[Plugin: Contact Form 7] Sending Attachments, Without User Upload

  • Currently, the contact form sends me an email, as well as sends the user a confirmation email.

    Is it possible to include an attachment to the user? Specifically, if I were running a charity for an event, and they registered using Contact Form 7, would it be possible to send a pledge form and an informational pdf to them with the confirmation email?

    Note: This is unrelated to the file attachment tags, I am not trying to get people to upload an attachment to send to me, I am trying to send an attachment back to them.

    Thank you for your time, everyone! I hope to get this resolved soon.

    http://wordpress.org/extend/plugins/contact-form-7/

    Edit: Etiquette.

Viewing 15 replies - 1 through 15 (of 32 total)
  • I have the same problem. did you find a solution?

    I need a solution to this, as well. Does anyone know of another plugin we can use if this doesn’t work? CForms II doesn’t seem to support this, either.

    I’d really like a solution for this, can anyone help?

    Thanks
    Phil.

    Count me in! I want to be able to use the autoresponder to send an attachment.

    Count me in too ! This would be excellent !

    Did anyone found an alternative solution to this problem?

    What’s interesting, is the contact form page admin includes a “File Attachements” field in the Mail 2 area, logically leading us to believe that simply adding the URL to the attachment in the field it would automatically attach said item.

    If there are other tools available I guess I will have to use them as I can’t wait.

    I’m in the exact same situation. I have a form where a user can request a discount coupon, so I need to create a coupon (pdf file) on the fly with a unique serial number in it, attach the coupon and send it to the user via email.

    I’ve found a working solution, so here it is:

    1) I’ve created a form in the backend and setted all required field in MAIL section.

    2) In the file attachement field on MAIL I’ve inserted
    [coupon]
    N.B: it’s not necessary to really add this field to the form, just in the attchment field.

    3) I Hooked in cf7 via ‘wpcf7_before_send_mail‘ action

    add_action( 'wpcf7_before_send_mail', 'create_unique_coupon_and_send_it' );
    function create_unique_coupon_and_send_it( $cf7 ) {
    	//check if this is the right form
    	if ($cf7->id==741){
     		$uploads = wp_upload_dir();
    		//define some constants
    		define ('COUPON_UPLOAD_PATH',$uploads['path'].'/coupons');
    		// ...
    		// ...
    		if ($cf7->mail['use_html']==true)
    			$nl="<br/>";
    		else
    			$nl="\n";
    		//I omitted all the stuff used to create
    		//the pdf file, you have just to know that
    		//$pdf_filename contains the filename to attach
    		//Let'go to the file attachment!
    
    		$cf7->uploaded_files = array ( 'coupon' => COUPON_UPLOAD_PATH.'/'.$pdf_filename );
    
    		//append some text to the outgoing email
    		$message=$nl.$nl.'Blah blah blah.....'.$nl;
     		$message.='So Long, and Thanks for All the Fish!'.$nl;
    		$cf7->mail_2['body'].=$message;
    	}
    }

    Note that:
    1) you have to change the form id as needed (or avoid the check if you have only one form on your site)
    2) CF7 unlink (delete) the attached file after mail is sent for security reasons, so make a copy of it if you have to send the same file over and over.
    3) make sure the key of the item in this associative array
    array ( ‘coupon’ => COUPON_UPLOAD_PATH.’/’.$pdf_filename );
    matches the name inserted in the form settings, in the attachment file field (see point 2) above the code)
    4) If you are using (like me) the “to-db-extension” plugin, remember to add the action with a priority level lower than 10:
    add_action( ‘wpcf7_before_send_mail’, ‘create_unique_coupon_and_send_it’, 5 );

    to execute your code before the DB plugin gets form data and save them in the db. In the code example above, I can add a field to every record in the db, just altering the $cf7->posted_data array:

    //Add coupon file name in the database
    $cf7->posted_data['coupon_file']=$pdf_filename;

    Hope it can be useful.

    @mad_max it works very well! 🙂 Thank you!

    VeeBeeGlobal

    @veebeeglobal

    @mad_max I tried this, but it wont work.

    I put this code in my functions.php.

    Am on wp3.2.1 and the lastest version of CF7 3.x

    V

    @veebeeglobal
    1) Have you changed the $cf7->id check using YOUR form-id in code?
    2) Do you get some errors?
    3) Are you sure the file your trying to attach exists and that you are pointing to the right folder?
    2) can you paste the code you are using on pastebin or similar?

    bye

    oh, another tip to make some debugging with cf7 forms without getting crazy: use Firefox+Firebug
    HOW
    1) add FirePHP firebug extension to firebug:
    https://addons.mozilla.org/en-US/firefox/addon/6149/
    2) install this wp-firePHP plugin
    http://inchoo.net/wordpress/wordpress-firephp-plugin/
    (download version 0.2 and unzip to your wp plugins folder then activate it)
    3) now use
    fb($whathever_var_or_string);
    to output debugging info to firebug console, even structured one like arrays or objects. For example:
    fb($cf7);
    gives you a print_r like output with all data setted ans used by cf7.

    marshalp

    @marshalp

    @mad_max

    I’m a bit of a WordPress novice, I appreciate your time on this but I have a question.

    Where do I insert the code you have you have created?

    Thanks

    You have to insert the code in the functions.php file in your theme folder. If your theme doesn’t have one, create it and copy&paste the code in it (in this case, remeber to add open and close php tags to the code).

    @mad_max

    This works great overall!

    I have some issues though, like if ‘CF7 unlink (delete) the attached file after sending mail’ then how to retain the file by just copying it? Is there some way we can stop Cf7 from unlink the file?

    Anyways its been great help till now.
    Thanks again.

    @gangesh
    I think there’s no way to “persuade” cf7 not to unlink files after mails are sent. This is a security feature as it avoid someone can upload a scritp throug a form and then execute it on your server.
    But you can use the php copy command to make a copy of your file every time you send an email via cf7.

    Suppose you have uploaded a file in a subfolder of your WP uploads folder named master.pdf, and you wanna send a copy of it every time someone fills a form on your site.

    Just add some lines of code to my function above like this:

    add_action( 'wpcf7_before_send_mail', 'create_unique_coupon_and_send_it' );
    function create_unique_coupon_and_send_it( $cf7 ) {
    	//check if this is the right form
    	if ($cf7->id==741){
     		$uploads = wp_upload_dir();
    		//define some constants
    		define ('MY_FILE_PATH',$uploads['path'].'/myfile/');
    
    		//set filenames
    		$master_copy=MY_FILE_PATH.'master.pdf';
    		$copy_to_send=MY-FILE_PATH.'attachment.pdf';
    
    		if ($cf7->mail['use_html']==true)
    			$nl="<br/>";
    		else
    			$nl="\n";
    
    		//make a copy of the master file and attach it
    		if ( copy( $master_copy, $copy_to_send ) ){
    			//Let'go to the file attachment!
    			$cf7->uploaded_files = array ( 'coupon' => $copy_to_send );
    		}
    		//append some text to the outgoing email
    		$message=$nl.$nl.'Blah blah blah.....'.$nl;
     		$message.='So Long, and Thanks for All the Fish!'.$nl;
    		$cf7->mail_2['body'].=$message;
    	}
    }
Viewing 15 replies - 1 through 15 (of 32 total)
  • The topic ‘[Plugin: Contact Form 7] Sending Attachments, Without User Upload’ is closed to new replies.
Skip to toolbar