| Redirection Notice This page should redirect to http://www.adaptavist.com/display/Plugins/Form+Mail+NG. |
Contents
Description/Features
A completely re-engineered version of the Form Mail Plugin. Hold no preconceptions; this is one small step for plugins, one giant leap for Confluence mailing.
- Admin console
There is now an Administration console action where you can define multiple sets of configuration settings. This has the advantage of the end user having no way to gain your email address or even your username. You can also keep your public key out of sight if you like, and the success HTML that is shown. - Improved Security
In addition to the implicit security issues that the Admin console above adds, the complete overhaul of the code base has resolved a few potential exploitable flaws (although the cases where they could be exploited are admit idly rare). - Flexible Configuration
You can either define the configuration in the new Admin console action, or you can specify all the settings in the macros in the markup, or you can base your settings off a configuration and override certain fields in the markup; it's up to you! - Macro-Orientated Design
You now define a wrapping form, and lay out the form elements intermingled with standard wiki notation in a manner familiar to those who use the Scaffolding Plugin or the Advanced Search Plugin. This allows you to be far more creative in how you layout your fields, and gives you much more control of their configuration – more details ... - Special Field Names
With the new dynamically defined layout, comes a new way of passing through data for the special fields, such as from email address and subject. These all have defaults and none are required to be entered. All you have to do is name your field as "from", "from-name" or "subject" and it will get through. Special fields do not make it into the body, and in the case of multiple fields with the same special name, the last one wins out. - Validation
You can now specify a validator for each field as well as required flag to make sure that the field contains at least something – more details ... - Velocity Values
On most of the macros which take a value, you can now render it using Velocity in the vtlValue parameter (or using the render=velocity param on the {mail-textarea} macro). This allows you access to the standard context that Confluence provides, as well as adding a some extra variables, so that you can display sensible defaults for things like the user email address or pass the user's name as a hidden field – more details ... - PGP Encrypted Emails
Ever wanted to take credit card information or other sensitive details on your Confluence site, and have them securely transmitted back to their destination? Now you can, using OpenPGP's PKI infrastructure – more details ... - Data Handlers
Ever wanted to take the form data, and put it in a pseudo database instead of having it emailed to you? Now you can, using the Bandana Collector (it even supports data types for future expansion!) – more details ... - Multiple Forms
The original [Form Mail plugin] could only be used once on a page due to it's design, this limitation is no longer applicable as Form Mail NG has been written extensible from the ground up. It is no longer considered a throw away, quick-fire code base.
Usage
See the Examples if you want a quick start in to getting something up and running. This section serves as the macro usage documentation.
{mail-form}
This is the encompassing form within which all the other macros must be placed. The other macros will have undocumented behaviour in cases where they are placed outside of a {mail-form} macro. The form can either be linked to a configuration by id, have it's settings provided in parameters and encapsulated macros, or indeed both where the settings override that of the configuration.
| Parameter | Description | Type | Default | Required |
|---|---|---|---|---|
| id | The Form Mail configuration ID | string | none | |
| collector | The collector to use | string (email / bandana) | |
|
| destination | The destination to use, either the email address or bandana store, depending on collector used | string | none | (unless valid id provided) |
{mail-input}
This provides an input field synonymous to a HTML input field and has no body.
| Parameter | Description | Value | Default | Required |
|---|---|---|---|---|
| name | Name of Field (also used as HTML node name) | string | none | |
| id | HTML ID of Field (unused by FormMailNG) | string | none | |
| cssClass | HTML CSS Class value | string | none | |
| cssStyle | HTML CSS Style value | string | none | |
| dataType | reserved for future use | string (String/int/long/boolean/Boolean/Date) | String | |
| validation | Validation mode, see Validation | string | none | |
| required | Is this field require a value? | boolean | false | |
| disabled | Is this field disabled from user interaction? | boolean | false | |
| type | Type of Field | string (text / checkbox / radio / hidden) | none | |
| value | Initial value of the Field | string | none | |
| vtlValue | Velocity value (overrides the above), see Available Velocity Context | velocity template string | none | |
| checked | Inital State (only valid for type=checkbox/radio) | boolean | false | |
{mail-label}
This provides a label element synonymous to a HTML label element, its body is wiki rendered and is used as the label element's contents.
| Parameter | Description | Value | Default | Required |
|---|---|---|---|---|
| for | Field ID this label is for | string | empty | |
{mail-select}
This provides an select field (drop-down list) synonymous to a HTML select field, with options defined in it's body by the {mail-option} macro.
| Parameter | Description | Value | Default | Required |
|---|---|---|---|---|
| name | Name of Field (also used as HTML node name) | string | none | |
| id | HTML ID of Field (unused by FormMailNG) | string | none | |
| cssClass | HTML CSS Class value | string | none | |
| cssStyle | HTML CSS Style value | string | none | |
| dataType | reserved for future use | string (String/int/long/boolean/Boolean/Date) | String | |
| validation | Validation mode, see Validation | string | none | |
| required | Is this field require a value? | boolean | false | |
| disabled | Is this field disabled from user interaction? | boolean | false | |
| nullLabel | The label for the empty option at the head of the select list | string | none | |
{mail-option}
This provides an option field synonymous to a HTML option field, its body is wiki rendered and is the outputted label for the option.
| Parameter | Description | Value | Default | Required |
|---|---|---|---|---|
| value | Value of the Field | string | empty | |
| selected | Is this Option Selected | boolean | false | |
{mail-textarea}
This provides an textarea field synonymous to a HTML textarea field, with the unrendered body being it's value.
| Parameter | Description | Value | Default | Required |
|---|---|---|---|---|
| name | Name of Field (also used as HTML node name) | string | none | |
| id | HTML ID of Field (unused by FormMailNG) | string | none | |
| cssClass | HTML CSS Class value | string | none | |
| cssStyle | HTML CSS Style value | string | none | |
| dataType | reserved for future use | string (String/int/long/boolean/Boolean/Date) | String | |
| validation | Validation mode, see Validation | string | none | |
| required | Is this field require a value? | boolean | false | |
| disabled | Is this field disabled from user interaction? | boolean | false | |
{mail-submit}
This provides an submit button synonymous to a HTML submit button. While there is no requirement for a button to exist, there wouldn't be any other way for the user to submit the form.
| Parameter | Description | Value | Default | Required |
|---|---|---|---|---|
| default | Label for the Button | string | Submit | |
{mail-success}
This macro sets or overrides what is on successful submission. The body is rendered according to the render parameter, if there is no renderer specified then it is outputted as raw HTML.
| Parameter | Description | Value | Default | Required |
|---|---|---|---|---|
| render | method to use for rendering | string (wiki/velocity) | none | |
Examples
Here are 3 examples, which should get you whet your appetites for what is possible. Now that you can fit it into any design it is really only limited by your imagination.
The simplest valid usage would be:
{mail-form:destination=email@example.com} {mail-submit} {mail-form}
This is rather useless and I doubt there is any practical use for this. Technically you don't even need the submit macro, although without that the form would be utterly useless. Have a look through some of the example for starting points for a real world use of this plugin.
Basic Example

This is about as basic as it comes, it's just a message box with a submit button! The subject and the from details will be left to Confluence to decide.
h2. Send us a Message
{mail-form:destination=email@example.com}
*Message*
{mail-textarea:name=message|cssStyle=width: 500px; height: 100px}{mail-textarea}
{mail-submit}
{mail-form}
Once sent the default success HTML will be spat out, which is really just a thank you message.
Call Back Example
"OK – this looks a bit more practical."

You want to offer the user a form where they can ask your sales team for a callback. This time you don't want to show the email address in the wiki markup (as it's visible by anyone who can view the rendered page after all). Instead you want to use the email address of a confluence username, specifically salesUsername.
You also want to set the subject, ensure you get a phone number and default their name to the logged in user's full name (anonymous users should see the field empty). The form should contain a select box with 5 options ranging from "now" to "1 hour", with the latter being the default.
The submit button's text should read "Call me!", and on success it should display a "Callback Accepted" Confluence {tip} message box telling them that their request has been accepted and to expect the call.
{mail-form:destination=~salesUsername}
{mail-input:type=hidden|name=subject|value=Call Request}
{info:title=Call Request}
Your Phone Number
{mail-input:type=text|name=phoneNum|cssStyle=width: 200px|required=true}
Your Name
{mail-input:type=text|name=fullName|cssStyle=width: 200px|vtlValue=$!user.fullName}
Time
{mail-select:name=eta}
{mail-option:value=0|selected=true}Now!{mail-option}
{mail-option:value=5|selected=true}5 minutes{mail-option}
{mail-option:value=15|selected=true}5 minutes{mail-option}
{mail-option:value=30|selected=true}30 minutes{mail-option}
{mail-option:value=60|selected=true}1 hour{mail-option}
{mail-select}
{mail-submit:Call me!}
{info}
{mail-success:render=wiki}
{tip:title=Callback Accepted}Thank you for requesting a callback, please expect our call.{tip}
{mail-success}
{mail-form}
... and the plugin isn't breaking a sweat!
Credit Card Example
"Jeez! You're not suggesting I get customers to email me their credit card details?"
|
|
Why not? This plugin supports OpenPGP cryptography (CODEGEIST:as described here), and for this we'll be setting things up a little different. This time, we'll be setting up a FormMail configuration.
Note: You will need Confluence and your mail reader to be set up for PGP encryption, see the above link for more details.
Step 1: Create the Configuration
- Go through to the Administration console
- Select Form Mails
- Select Create Form Mail
- Set ID: orders
- Set Encryption Public Key: your public key
- Set Email: your email address
- Save by clicking OK
Step 2: Add the Wiki Notation
- Link the {mail-form} to the orders configuration by id.
- Add a hidden subject field, which will include the user's full name if logged in.
- Add a hidden confUser field containing the username if logged in.
- Add a hidden URL field containing the URL including query string if present.
- Add a required product select field, which has 2 options, and neither is selected initially with a message instead reading "-
- Select a Product -". - Add a required contactName text field, defaulting to the user's full name if logged in.
- Add a required contactEmail text field, defaulting to the user's email address if logged in, and is validated to be an email address.
- Add a required contactAddress text area.
- Add a required creditCard text field validated to be entirely numeric.
- All fields should appear in a standard confluence table, with CSS width settings set appropriately.
{mail-form:id=orders}
{mail-input:type=hidden|name=subject|vtlValue=Order#if($user) for $!user.fullName#end}
{mail-input:type=hidden|name=confUser|vtlValue=$!user.name}
{mail-input:type=hidden|name=URL|vtlValue=$req.requestURL#if($req.queryString)?$req.queryString#end}
|| Product | {mail-select:name=product|nullValue=--- Select a Product ---|required=true}
{mail-option:value=prodA}Option A{mail-option}
{mail-option:value=prodB}Option B{mail-option}
{mail-select} |
|| Contact Name | {mail-input:type=text|name=contactName|cssStyle=width: 170px|vtlValue=$!user.fullName|required=true} |
|| Contact Email | {mail-input:type=text|name=contactEmail|cssStyle=width: 100%|validation=email|vtlValue=$!user.email|required=true} |
|| Contact Address | {mail-textarea:name=contactAddress|cssStyle=width: 300px; height: 120px|required=true}{mail-textarea} |
|| Credit Card Number | {mail-input:type=text|name=creditCard|cssStyle=width: 100%|validation=num|required=true} |
{mail-submit:Purchase}
{mail-success:render=wiki}
{tip:title=Order Accepted}Thank you -- we will be in touch once we have processed your order.{tip}
{mail-success}
{mail-form}
Step 3: Sit back and Wait
Neat huh!
Documentation
If you are looking for more in depth documentation about the concepts and APIs that power this plugin, then here is the documentation which should set you off in the right direction.
Validation
| JavaScript Only The validation is all performed client side as if someone wants to hack their way around the interface and hook onto the API to circumvent validation they will. It's just not worth it, so if you have any automatic processing picking up the form data, then you will need to make sure you implement your own validation. You should be doing that anyway as you can never trust the input ... right? |
Most of the macros support validation, the most basic of which is the required=true parameter. This isn't technically a validator, it's just a flag to tell the validation subsystem that the field is only valid if there is a value (any value) in there. If this flag fails, then the validation for that field halts until there is a value.
The validation parameter for the {form-input}, {form-select} and {form-textarea} macros take the following values:
| Validator | Requirement | Invalid Message |
|---|---|---|
| alpha | a-z / A-Z | This field can only contain letters. |
| num | 0-9 | This field can only contain numbers. |
| alphanum | a-z / A-Z / 0-9 | This field can only contain letters and numbers. |
| Email Address | Invalid Email Address. |
If validation fails, the invalid CSS class is added to the offending field and, if attempting to submit, then a message box listing the errors and their corresponding field names is shown.
Please add issues for any validators that you need – if you can include JS code then that's even better.
Available Velocity Context
When rendering a VTL value (via the vtlValue parameter or when using render=velocity) you will want to know what context variables are available:
| Variable | Injected By | Value |
|---|---|---|
| $user | Form Mail NG | AuthenticatedUserThreadLocal.getUser() |
| $ceo | Form Mail NG | ((PageContext) renderContext).getEntity() |
| $req | Confluence | HTTPServletRequest |
There may be more, as the context is initialised with MacroUtils.getDefaultVelocityContext(), so please see the Confluence documentation for more information.
Data Handlers
These are called Collector Types in the code, and refer to the process that is applied when data is submitted.
Email Relay
This is what Form Mail is all about, and is the only collector which supports encryption at the moment. This will take the submission, convert it into a Mail object and hand it to Confluence to mail off to the recipient.
This handler has 3 special fields, and if multiple fields share the same special field name then the value from the last one is used. None of these special fields are required or validated on the server.
| Field Name | Description |
|---|---|
| subject | This becomes the Email's subject |
| from | This becomes the Email's from address |
| from-name | This becomes the Email's from name |
All remaining fields will go into the Email body in a "fieldName: fieldValue\n" layout.
Bandana Store
| In Progress This is new to Form Mail NG, and places the data (held in a MailShuttle) into a BandanaCollector store. The access for the Bandana Stores is somewhat primitive at the moment, but that is a work in progress. As such please treat this option as experimental. |
The idea is that instead of collecting information and sending to a mailbox, you can keep it on the server inside of Confluence. This has the advantages of being easy to access as well as potentially being accessible to extensions to the plugin for automatic processes.
One such extension might be to take details of evaluators of a product / service, the information for which is in the success HTML. You could write a nightly job to poke through the collector to email out a follow up message 1 month after registering for the evaluation.
PGP Cryptography
Java Cryptographic Extensions
| Limited Liability The following instructions are required by the Cryptix JCE provider and you follow them at your own risk. I hold no responsibility for the accuracy or reliability of these instructions. It should be strongly noted that the communication between the web browser and the server stands to be the weakest link, and in this case should always use SSL as if the data is worth encrypting on the server, it's worth encrypting on it's way there. Having said that, they've worked fine for me! |
There may be cases where you wish to store the data in an encrypted form using standard Public Key Infrastructure (PKI). This may be because you are asking the user to transmit credit card details, this may be because you are storing sensitive data which may be covered under a NDA. Whatever the reason, you are in need of an industry standard level of encryption.
In order to use the cryptographic functions of this plugin, you will need to do two things:
- Install the 4 cryptix jar files into confluence/WEB-INF/lib (1, 2, 3, 4)
- Install the "Unlimited Strength Jurisdiction Policy Files" from Sun (involves modifying the JRE)
When these have been performed you can place your public key into the form mail configuration. How this works depends on the collector you have chosen:
- Email Collector
This will cause all emails to be encrypted using that key. The whole email body is encrypted in this manner.
- Bandana Collector
Encryption with this collector is not yet supported, if there is demand a technical solution for it may be sought.
Email Decryption
Well this is a little outside of the scope of this documentation. I would suggest installing OpenPGP and Enigmail for Thunderbird. There is a good article here.
Your OpenPGP public key is what you should be pasting in to this plugin, and you will be using your private key to decrypt it. Keep your private key safe and secure!
Frequently Asked Questions
Here is a list of the most frequently asked questions covering all aspects of the plugin.
I am getting a RuntimeException with the highly descriptive message: NYI
If you are seeing the following error in the logs, then it this typically means you haven't successfully installed the Unlimited Strength Jurisdiction Policy Files in your JRE (CODEGEIST:see above). If you believe you have, make sure that if you have multiple JREs on your system that Confluence is using the right one.
java.lang.RuntimeException: NYI
at cryptix.jce.provider.elgamal.ElGamalCipher.engineGetParameters(ElGamalCipher.java:120)
at javax.crypto.Cipher.a(DashoA12275)
at javax.crypto.Cipher.init(DashoA12275)
at cryptix.openpgp.algorithm.PGPElGamal.encrypt(PGPElGamal.java:550)
at cryptix.openpgp.packet.PGPPubl



Comments (15)
Mar 04, 2010
David Grogan says:
Is there a way to use a form field as the destination address? Basically I want ...Is there a way to use a form field as the destination address? Basically I want the user to be automatically CCed with the form content. e.g. something like this:
{mail-form:destination=myaddress@here.com,~usersEmail} Your Email Address: {mail-input:type=text|name=usersEmail|cssStyle=width: 200px|required=true} Message or Question: {mail-textarea:name=message|required=true|cssStyle=width: 500px; height: 100px}{mail-textarea} {mail-form}Thanks.
Dec 20, 2010
Claus Vagner Pedersen says:
Is there some option to use this mail form together with some form of captcha?Is there some option to use this mail form together with some form of captcha?
Jan 09, 2011
John Mills says:
I agree. The mail form would be more useful for public confluence instances if i...I agree. The mail form would be more useful for public confluence instances if it had CAPTCHA support... just like this comment form has
Jan 13, 2011
Keith Brophy says:
Hi Claus, I have raised an issue for a review of integrating Captcha support wi...Hi Claus,
I have raised an issue for a review of integrating Captcha support within the plugin.
Regards,
Keith
Jan 09, 2011
John Mills says:
This plugin is really good. While using Firebug I noticed that there are 404 err...This plugin is really good. While using Firebug I noticed that there are 404 errors on a page that has the mail form. They are for the url - _http://confluence-server/plugins/servlet/form-mail-ng/dwr/engine.js_.
The mail form seems to work properly despite the errors. Any idea on why those would be showing up?
Jan 10, 2011
Keith Brophy says:
Hi John, I believe these errors are appearing due to the fact that the DWR modu...Hi John,
I believe these errors are appearing due to the fact that the DWR module has been deprecated and removed from the latest Confluence versions.
From From Mail NG 1.4.3 onward, any dependency on DWR elements should have been removed. Can you please confirm which version of the plugin you are encountering this error?
Cheers,
Keith
Jan 11, 2011
John Mills says:
It's version 1.4.3.2.It's version 1.4.3.2.
Jan 13, 2011
Keith Brophy says:
Thanks John - I have raised this issue internally for further review as and when...Thanks John - I have raised this issue internally for further review as and when time and other project commitments permit. Should you require a more timely response, please let me know if you would like to discuss our support service.
Feb 10, 2011
Jamie Muir says:
I have a question similar to David's on 04/03/10. Is it possible to have a form ...I have a question similar to David's on 04/03/10. Is it possible to have a form field in the subject?
{mail-input:type=hidden|name=subject|value=WLR3 PSTN Single Line Order Form - ~companyName}I'd be interested to know if it could work on the destination address too.
Thanks!
Feb 24, 2011
Akilan Ramesan says:
Hi, We are using Form Mail NG extensively. Is it possible to render the details...Hi,
We are using Form Mail NG extensively. Is it possible to render the details submitted in the form as a wiki page after the form is submitted to the destination mail ID? In this way we preserve the details submitted as page. It will help us to preserve the contents as wiki page after the information is sent through the e-mail
Thank you in advance
Akilan
Mar 25, 2011
Tim Mori says:
Is there any way to have the form mailed to multiple recipients?Is there any way to have the form mailed to multiple recipients?
Apr 11, 2011
Brett Francis says:
As I just went through a laborious round of wiki markup editing for our Form Mai...As I just went through a laborious round of wiki markup editing for our Form Mail NG based form, I wanted to help others keep from doing so. Here is the list of countries currently on the globe in Form Mail NG wiki markup. Enjoy.
{mail-select:name=country|cssStyle=width: 100%|nullLabel=- Select a Country -} {HTMLcomment}The country list was obtained from: http://openconcept.ca/blog/mgifford/text_list_all_countries -- thank you.{HTMLcomment} {mail-option:value=Afghanistan}Afghanistan{mail-option} {mail-option:value=Albania}Albania{mail-option} {mail-option:value=Algeria}Algeria{mail-option} {mail-option:value=Andorra}Andorra{mail-option} {mail-option:value=Angola}Angola{mail-option} {mail-option:value=Antigua and Deps}Antigua & Deps{mail-option} {mail-option:value=Argentina}Argentina{mail-option} {mail-option:value=Armenia}Armenia{mail-option} {mail-option:value=Australia}Australia{mail-option} {mail-option:value=Austria}Austria{mail-option} {mail-option:value=Azerbaijan}Azerbaijan{mail-option} {mail-option:value=Bahamas}Bahamas{mail-option} {mail-option:value=Bahrain}Bahrain{mail-option} {mail-option:value=Bangladesh}Bangladesh{mail-option} {mail-option:value=Barbados}Barbados{mail-option} {mail-option:value=Belarus}Belarus{mail-option} {mail-option:value=Belgium}Belgium{mail-option} {mail-option:value=Belize}Belize{mail-option} {mail-option:value=Benin}Benin{mail-option} {mail-option:value=Bhutan}Bhutan{mail-option} {mail-option:value=Bolivia}Bolivia{mail-option} {mail-option:value=Bosnia Herzegovina}Bosnia Herzegovina{mail-option} {mail-option:value=Botswana}Botswana{mail-option} {mail-option:value=Brazil}Brazil{mail-option} {mail-option:value=Brunei}Brunei{mail-option} {mail-option:value=Bulgaria}Bulgaria{mail-option} {mail-option:value=Burkina}Burkina{mail-option} {mail-option:value=Burundi}Burundi{mail-option} {mail-option:value=Cambodia}Cambodia{mail-option} {mail-option:value=Cameroon}Cameroon{mail-option} {mail-option:value=Canada}Canada{mail-option} {mail-option:value=Cape Verde}Cape Verde{mail-option} {mail-option:value=Central African Rep}Central African Rep{mail-option} {mail-option:value=Chad}Chad{mail-option} {mail-option:value=Chile}Chile{mail-option} {mail-option:value=China}China{mail-option} {mail-option:value=Colombia}Colombia{mail-option} {mail-option:value=Comoros}Comoros{mail-option} {mail-option:value=Congo}Congo{mail-option} {mail-option:value=Congo (Democratic Rep)}Congo (Democratic Rep){mail-option} {mail-option:value=Costa Rica}Costa Rica{mail-option} {mail-option:value=Croatia}Croatia{mail-option} {mail-option:value=Cuba}Cuba{mail-option} {mail-option:value=Cyprus}Cyprus{mail-option} {mail-option:value=Czech Republic}Czech Republic{mail-option} {mail-option:value=Denmark}Denmark{mail-option} {mail-option:value=Djibouti}Djibouti{mail-option} {mail-option:value=Dominica}Dominica{mail-option} {mail-option:value=Dominican Republic}Dominican Republic{mail-option} {mail-option:value=East Timor}East Timor{mail-option} {mail-option:value=Ecuador}Ecuador{mail-option} {mail-option:value=Egypt}Egypt{mail-option} {mail-option:value=El Salvador}El Salvador{mail-option} {mail-option:value=Equatorial Guinea}Equatorial Guinea{mail-option} {mail-option:value=Eritrea}Eritrea{mail-option} {mail-option:value=Estonia}Estonia{mail-option} {mail-option:value=Ethiopia}Ethiopia{mail-option} {mail-option:value=Fiji}Fiji{mail-option} {mail-option:value=Finland}Finland{mail-option} {mail-option:value=France}France{mail-option} {mail-option:value=Gabon}Gabon{mail-option} {mail-option:value=Gambia}Gambia{mail-option} {mail-option:value=Georgia}Georgia{mail-option} {mail-option:value=Germany}Germany{mail-option} {mail-option:value=Ghana}Ghana{mail-option} {mail-option:value=Greece}Greece{mail-option} {mail-option:value=Grenada}Grenada{mail-option} {mail-option:value=Guatemala}Guatemala{mail-option} {mail-option:value=Guinea}Guinea{mail-option} {mail-option:value=Guinea-Bissau}Guinea-Bissau{mail-option} {mail-option:value=Guyana}Guyana{mail-option} {mail-option:value=Haiti}Haiti{mail-option} {mail-option:value=Honduras}Honduras{mail-option} {mail-option:value=Hungary}Hungary{mail-option} {mail-option:value=Iceland}Iceland{mail-option} {mail-option:value=India}India{mail-option} {mail-option:value=Indonesia}Indonesia{mail-option} {mail-option:value=Iran}Iran{mail-option} {mail-option:value=Iraq}Iraq{mail-option} {mail-option:value=Ireland (Republic)}Ireland (Republic){mail-option} {mail-option:value=Israel}Israel{mail-option} {mail-option:value=Italy}Italy{mail-option} {mail-option:value=Ivory Coast}Ivory Coast{mail-option} {mail-option:value=Jamaica}Jamaica{mail-option} {mail-option:value=Japan}Japan{mail-option} {mail-option:value=Jordan}Jordan{mail-option} {mail-option:value=Kazakhstan}Kazakhstan{mail-option} {mail-option:value=Kenya}Kenya{mail-option} {mail-option:value=Kiribati}Kiribati{mail-option} {mail-option:value=Korea North}Korea North{mail-option} {mail-option:value=Korea South}Korea South{mail-option} {mail-option:value=Kosovo}Kosovo{mail-option} {mail-option:value=Kuwait}Kuwait{mail-option} {mail-option:value=Kyrgyzstan}Kyrgyzstan{mail-option} {mail-option:value=Laos}Laos{mail-option} {mail-option:value=Latvia}Latvia{mail-option} {mail-option:value=Lebanon}Lebanon{mail-option} {mail-option:value=Lesotho}Lesotho{mail-option} {mail-option:value=Liberia}Liberia{mail-option} {mail-option:value=Libya}Libya{mail-option} {mail-option:value=Liechtenstein}Liechtenstein{mail-option} {mail-option:value=Lithuania}Lithuania{mail-option} {mail-option:value=Luxembourg}Luxembourg{mail-option} {mail-option:value=Macedonia}Macedonia{mail-option} {mail-option:value=Madagascar}Madagascar{mail-option} {mail-option:value=Malawi}Malawi{mail-option} {mail-option:value=Malaysia}Malaysia{mail-option} {mail-option:value=Maldives}Maldives{mail-option} {mail-option:value=Mali}Mali{mail-option} {mail-option:value=Malta}Malta{mail-option} {mail-option:value=Marshall Islands}Marshall Islands{mail-option} {mail-option:value=Mauritania}Mauritania{mail-option} {mail-option:value=Mauritius}Mauritius{mail-option} {mail-option:value=Mexico}Mexico{mail-option} {mail-option:value=Micronesia}Micronesia{mail-option} {mail-option:value=Moldova}Moldova{mail-option} {mail-option:value=Monaco}Monaco{mail-option} {mail-option:value=Mongolia}Mongolia{mail-option} {mail-option:value=Montenegro}Montenegro{mail-option} {mail-option:value=Morocco}Morocco{mail-option} {mail-option:value=Mozambique}Mozambique{mail-option} {mail-option:value=Myanmar (Burma)}Myanmar (Burma){mail-option} {mail-option:value=Namibia}Namibia{mail-option} {mail-option:value=Nauru}Nauru{mail-option} {mail-option:value=Nepal}Nepal{mail-option} {mail-option:value=Netherlands}Netherlands{mail-option} {mail-option:value=New Zealand}New Zealand{mail-option} {mail-option:value=Nicaragua}Nicaragua{mail-option} {mail-option:value=Niger}Niger{mail-option} {mail-option:value=Nigeria}Nigeria{mail-option} {mail-option:value=Norway}Norway{mail-option} {mail-option:value=Oman}Oman{mail-option} {mail-option:value=Pakistan}Pakistan{mail-option} {mail-option:value=Palau{mail-option} {mail-option:value=Panama}Panama{mail-option} {mail-option:value=Papua New Guinea}Papua New Guinea{mail-option} {mail-option:value=Paraguay}Paraguay{mail-option} {mail-option:value=Peru}Peru{mail-option} {mail-option:value=Philippines}Philippines{mail-option} {mail-option:value=Poland}Poland{mail-option} {mail-option:value=Portugal}Portugal{mail-option} {mail-option:value=Qatar}Qatar{mail-option} {mail-option:value=Romania}Romania{mail-option} {mail-option:value=Russian Federation}Russian Federation{mail-option} {mail-option:value=Rwanda}Rwanda{mail-option} {mail-option:value=St Kitts & Nevis}St Kitts & Nevis{mail-option} {mail-option:value=St Lucia}St Lucia{mail-option} {mail-option:value=Saint Vincent and the Grenadines}Saint Vincent & the Grenadines{mail-option} {mail-option:value=Samoa}Samoa{mail-option} {mail-option:value=San Marino}San Marino{mail-option} {mail-option:value=Sao Tome & Principe}Sao Tome & Principe{mail-option} {mail-option:value=Saudi Arabia}Saudi Arabia{mail-option} {mail-option:value=Senegal}Senegal{mail-option} {mail-option:value=Serbia}Serbia{mail-option} {mail-option:value=Seychelles}Seychelles{mail-option} {mail-option:value=Sierra Leone}Sierra Leone{mail-option} {mail-option:value=Singapore}Singapore{mail-option} {mail-option:value=Slovakia}Slovakia{mail-option} {mail-option:value=Slovenia}Slovenia{mail-option} {mail-option:value=Solomon Islands}Solomon Islands{mail-option} {mail-option:value=Somalia}Somalia{mail-option} {mail-option:value=South Africa}South Africa{mail-option} {mail-option:value=Spain}Spain{mail-option} {mail-option:value=Sri Lanka}Sri Lanka{mail-option} {mail-option:value=Sudan}Sudan{mail-option} {mail-option:value=Suriname}Suriname{mail-option} {mail-option:value=Swaziland}Swaziland{mail-option} {mail-option:value=Sweden}Sweden{mail-option} {mail-option:value=Switzerland}Switzerland{mail-option} {mail-option:value=Syria}Syria{mail-option} {mail-option:value=Taiwan}Taiwan{mail-option} {mail-option:value=Tajikistan}Tajikistan{mail-option} {mail-option:value=Tanzania}Tanzania{mail-option} {mail-option:value=Thailand}Thailand{mail-option} {mail-option:value=Togo}Togo{mail-option} {mail-option:value=Tonga}Tonga{mail-option} {mail-option:value=Trinidad and Tobago}Trinidad & Tobago{mail-option} {mail-option:value=Tunisia}Tunisia{mail-option} {mail-option:value=Turkey}Turkey{mail-option} {mail-option:value=Turkmenistan}Turkmenistan{mail-option} {mail-option:value=Tuvalu}Tuvalu{mail-option} {mail-option:value=Uganda}Uganda{mail-option} {mail-option:value=Ukraine}Ukraine{mail-option} {mail-option:value=United Arab Emirates}United Arab Emirates{mail-option} {mail-option:value=United Kingdom}United Kingdom{mail-option} {mail-option:value=United States of America}United States of America{mail-option} {mail-option:value=Uruguay}Uruguay{mail-option} {mail-option:value=Uzbekistan}Uzbekistan{mail-option} {mail-option:value=Vanuatu}Vanuatu{mail-option} {mail-option:value=Vatican City}Vatican City{mail-option} {mail-option:value=Venezuela}Venezuela{mail-option} {mail-option:value=Vietnam}Vietnam{mail-option} {mail-option:value=Yemen}Yemen{mail-option} {mail-option:value=Zambia}Zambia{mail-option} {mail-option:value=Zimbabwe}Zimbabwe{mail-option} {mail-select}...and the interpreted pop-up list.
Apr 27, 2011
Stefan Schulte says:
heya is it possible to "spoof" the reply address? So far all the mails come fro...heya
is it possible to "spoof" the reply address? So far all the mails come from our intranet mail account, is it possible to change that email address to the address of the user who entered the form?
Guess not as the wiki is sending the mails, but thought I might ask nonetheless...
regards
Stefan
May 23, 2011
Richard Crane says:
A simple account request form has stopped working, with the following dialog: A...A simple account request form has stopped working, with the following dialog:
An error occurred
CaptchaId not found - invalid captcha
I initially set up the form about a month, tested it, and hadn't given it any more thought. Recently folks attempting to use report the problem. Any suggestions welcome.
Running Confluence 3.4, Form Mail NG 1.4.4
The log shows an error:
May 23, 2011 12:13:19 PM com.sun.jersey.server.impl.application.WebApplicationImpl onException
SEVERE: Internal server error
java.lang.RuntimeException: CaptchId not found - invalid captcha
at com.adaptavist.confluence.formMailNG.service.FormMailService.validateCaptcha(FormMailService.java:131)
at com.adaptavist.confluence.formMailNG.service.FormMailService.submitFormShuttle(FormMailService.java:103)
at sun.reflect.GeneratedMethodAccessor3589.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
....
May 25, 2011
Zack Levey says:
We're trying this out to see if it will perform as we need to for some forms in ...We're trying this out to see if it will perform as we need to for some forms in Confluence we're developing for our users. Right now, we're seeing that the "mail-success" macro isn't working for us (latest version of Form Mail NG downloaded into our Confluence 3.3.3 environment). So, when we hit "submit" we're not seeing a tool tip like is shown above. Referring to this code example from above:
{mail-success:render=wiki} {tip:title=Callback Accepted}Thank you for requesting a callback, please expect our call.{tip} {mail-success}We're seeing the default text shown in the form admin/creation section.
Thanks,
-Zack