Easy HTML form without PHP or JavaScript

Overview

This repository is no longer active. If you're looking for a simple and powerful hosted form API, please check out https://formspree.io. If you are interested in self-hosting the code in this repository, you may do so while complying with the LICENSE file. However, Formspree can't offer support.

FORMSPREE.IO

Functional HTML forms. Hosted at https://formspree.io.

Just send your form to our URL and we'll forward it to your email. No PHP, Javascript or sign up required — perfect for static sites! Example:

<form action="https://formspree.io/[email protected]">
    <input type="text" name="name">
    <input type="email" name="_replyto">
    <input type="submit" value="Send">
</form>

Setting it up is easy and free. Here's how:

You don't even have to register.

1. Setup the HTML form

Change your form's action-attribute to this and replace [email protected] with your own email.

2. Submit the form and confirm your email address

Go to your website and submit the form once. This will send you an email asking to confirm your email address, so that no one can start sending you spam from random websites.

3. All set, receive emails

From now on, when someone submits that form, we'll forward you the data as email.

Advanced features:

Form inputs can have specially named name-attributes, which alter functionality. They are all prefixed with an underscore.

_replyto

This value is used for the email's Reply-To field. This way you can directly "Reply" to the email to respond to the person who originally submitted the form.

_next

By default, after submitting a form the user is shown the Formspree "Thank You" page. You can provide an alternative URL for that page.

_subject

This value is used for the email's subject, so that you can quickly reply to submissions without having to edit the subject line each time.

_cc

This value is used for the email's CC Field. This lets you send a copy of each submission to another email address. If you want to cc multiple emails, simply make the cc field a list of emails each separated by a comma.

_gotcha

Add this "honeypot" field to avoid spam by fooling scrapers. If a value is provided, the submission will be silently ignored. The input should be hidden with CSS.

Using AJAX

Formspree Gold users can submit forms via AJAX. This even works cross-origin. The trick is to set the Accept header to application/json. If you're using jQuery this can be done like so:

$.ajax({
    url: "https://formspree.io/FORM_ID",
    method: "POST",
    data: {message: "hello!"},
    dataType: "json"
});

If you are experiencing issues, please take a look at the FAQ in the wiki

Running your own copy of Formspree

Running on localhost

You'll need a SendGrid account, PostgreSQL, Redis and Python 2.7 and should install pip, and create a virtual environment for the server.

Once your environment is setup, create a postgresql database, clone the source and cd into the root of the Formspree repository. Then run:

pip install -r requirements.txt

then create a .env file with your configuration like the following:

API_ROOT='http://127.0.0.1:5000'
CONTACT_EMAIL='[email protected]'
DATABASE_URL='postgresql://<username>@127.0.0.1:5432/formspree'
DEBUG='True'
DEFAULT_SENDER='[email protected]'
LOG_LEVEL='debug'
MONTHLY_SUBMISSIONS_LIMIT='100'
NONCE_SECRET='y0ur_n0nc3_s3cr3t'
HASHIDS_SALT='a salt'
REDISTOGO_URL='127.0.0.1:6379'
SECRET_KEY='y0ur_s3cr3t_k3y'
SENDGRID_PASSWORD='<password>'
SENDGRID_USERNAME='<username>'
SERVICE_NAME='LocalFormspree'
SERVICE_URL='http://127.0.0.1:5000'
TEST_DATABASE_URL='postgresql://<username>@127.0.0.1:5432/formspree-test'

Tell the Flask CLI about the application by typing export FLASK_APP=manage.py or if using a virtualenv you can add it to the activate script

Make sure you have a postgresql database called formspree and create the necessary tables by running:

flask db upgrade

And you are ready to run the server:

flask run

Running tests

REDISTOGO_URL='0.0.0.0:6379' \
TEST_DATABASE_URL=postgresql://<username>@127.0.0.1:5432/formspree-test \
NONCE_SECRET='y0ur_n0nc3_s3cr3t' \
HASHIDS_SALT='a salt' \
SECRET_KEY='y0ur_s3cr3t_k3y' \
STRIPE_TEST_PUBLISHABLE_KEY='<STRIPE PUBLISHABLE>' \
STRIPE_TEST_SECRET_KEY='<STRIPE SECRET>' \
python -m unittest discover

Make sure that you do NOT use your actual formspree database when running tests. Doing so will cause you to lose all data located in your formspree database. Instead create a new database called formspree-test.

You can also use Foreman to automate running tests. After installing, run foreman run venv/bin/python -m unittest discover to run the entire test suite. To run a single test file, run foreman run venv/bin/python -m unittest tests.test_users. In this case, it will run only tests/test_users.py.

Running on Heroku

You will need to install the Heroku toolbelt.

Once your environment is setup, clone the source and cd into the root of the Formspree repository. Then run:

heroku apps:create [your project name]

then

git push heroku

Your new project will be running at [your project name].herokuapp.com.

Dependencies

Formspree requires a PostgreSQL database and uses SendGrid to send emails. If you're deploying to Heroku you can get a free Heroku Postgres database and a SendGrid account by running

heroku addons:create heroku-postgresql:hobby-dev
heroku addons:create sendgrid

Configuring Formspree

Take a look at the formspree/settings.py file for a list of environment variables that should be set in order for Formspree to work correctly.

Contributing

Formspree is an open source project managed on GitHub. We welcome all contributions from the community, but please be sure to take a look at the contributor guidelines before opening an issue or pull request.

Owner
Formspree
The form solution for any developer
Formspree
Mail hosting made simple

Modoboa Modoboa is a mail hosting and management platform including a modern and simplified Web User Interface. It provides useful components such as

Modoboa 2.4k Jan 05, 2023
Easy HTML form without PHP or JavaScript

This repository is no longer active. If you're looking for a simple and powerful hosted form API, please check out https://formspree.io. If you are in

Formspree 2.8k Dec 22, 2022
A wiki system with complex functionality for simple integration and a superb interface. Store your knowledge with style: Use django models.

django-wiki Django support The below table explains which Django versions are supported. Release Django Upgrade from 0.7.x 2.2, 3.0, 3.1 0.5 or 0.6 0.

django-wiki 1.6k Dec 28, 2022
Askbot is a Django/Python Q&A forum. **Contributors README**: https://github.com/ASKBOT/askbot-devel#how-to-contribute. Commercial hosting of Askbot and support are available at https://askbot.com

ATTENTION: master branch is experimental, please read below Askbot - a Django Q&A forum platform This is Askbot project - open source Q&A system, like

ASKBOT 1.5k Dec 28, 2022
Zulip server and webapp - powerful open source team chat

Zulip overview Zulip is a powerful, open source group chat application that combines the immediacy of real-time chat with the productivity benefits of

Zulip 17k Jan 07, 2023
Main repo for Inboxen.org

Inboxen This is the complete system with everything you need to set up Inboxen. The current maintainer of this repo is Matt Molyneaux GPG keys GPG key

Inboxen 249 Nov 13, 2022
the first third-party instant messaging client for Google Hangouts

hangups hangups is the first third-party instant messaging client for Google Hangouts. It includes both a Python library and a reference client with a

Tom Dryer 1.7k Dec 25, 2022
Build SMS applications with Python

RapidSMS RapidSMS is a free and open source framework for building interactive SMS applications, which integrates tightly with Django to provide a ric

RapidSMS 622 Dec 31, 2022
Generate links that users can use to submit messages encrypted with your public key.

Hawkpost Hawkpost lets you create unique links that you can share with the person that desires to send you important information but doesn't know how

Whitesmith 901 Dec 27, 2022
Easy-to-use and powerful offline translation tool

Introduction Virtaal is a graphical program for doing translation. It is meant to be easy to use and powerful at the same time. Although the initial f

Translate 271 Nov 22, 2022
Online translation tool

Pootle Docs | Changes | Issues | Community Support | Contributing | Development Channel Pootle is an online translation and localization tool. It work

Translate 1.4k Jan 06, 2023
PyZMQ: Python bindings for zeromq

PyZMQ: Python bindings for ØMQ This package contains Python bindings for ØMQ. ØMQ is a lightweight and fast messaging implementation. PyZMQ should wor

The ZeroMQ project 3.2k Jan 02, 2023
Indico - A feature-rich event management system, made @ CERN, the place where the Web was born.

Indico Indico is: 🗓 a general-purpose event management tool; 🌍 fully web-based; 🧩 feature-rich but also extensible through the use of plugins; ⚖️ O

Indico 1.4k Dec 31, 2022
MoinMoin Wiki Development (2.0+), unstable, for production please use 1.9.x.

MoinMoin - a wiki engine in Python MoinMoin is an easy to use, full-featured and extensible wiki software package written in Python. It can fulfill a

MoinMoin Wiki Engine 240 Dec 22, 2022
Securely and anonymously share files, host websites, and chat with friends using the Tor network

OnionShare OnionShare is an open source tool that lets you securely and anonymously share files, host websites, and chat with friends using the Tor ne

Micah Lee 5.4k Jan 02, 2023
ProPublica's collaborative tip-gathering framework. Import and manage CSV, Google Sheets and Screendoor data with ease.

Collaborate This is a web application for managing and building stories based on tips solicited from the public. This project is meant to be easy to s

ProPublica 86 Oct 18, 2022
Conference planning tool: CfP, scheduling, speaker management

pretalx is a conference planning tool focused on providing the best experience for organisers, speakers, reviewers, and attendees alike. It handles th

496 Dec 31, 2022
get things from one computer to another, safely

Magic Wormhole Get things from one computer to another, safely. This package provides a library and a command-line tool named wormhole, which makes it

15.4k Jan 01, 2023
Web based localization tool with tight version control integration.

Weblate is a copylefted libre software web-based continuous localization system, used by over 1150 libre projects and companies in more than 115 count

Weblate 3.3k Jan 02, 2023
GlobaLeaks is free, open source software enabling anyone to easily set up and maintain a secure whistleblowing platform.

GlobaLeaks is free, open souce software enabling anyone to easily set up and maintain a secure whistleblowing platform. Continous Integration and Test

GlobaLeaks 995 Jan 01, 2023