It might be helpful to see the form code that's submitting to the page with the CFMAIL tag. However, it could be that the form field 'submit' is not part of the process. You can test this by dumping the FORM structure/scope on the template with the CFMAIL: <cfdump var="#form#" />. This will output all submitted form fields and their values and allow you to confirm that there is, in fact, a submit key in the form structure.
Question: does the CFMAIL tag work (i.e., sends out the email) without the CFIF block surrounding it? Just want to clarify that CFMAIL works in general.
If this CFMAIL does indeed work outside this CFIF block, my initial guess would be that your variable Form.submit does not exist/was not submitted. Bear in mind that for this (Form.submit) to exist, "submit" would have to be the value for the attribute id (or name) in a form element: <input type="submit" name="submit" id="submit" value="Go" />.
BKBK's answer will certainly work... my guess as to why your example didn't work as written is that perhaps your Submit button is not actually named name="submit" Try <input type="Submit" name="submit" value="Submit form" /> or similar
Also I read somewhere long ago that structKeyExists() executes more quickly than isDefined() and so ever since I've always used code like
<cfif structKeyExists(form,"Submit"> Process form </cfif>
York U CA
I troubleshoot if/else logic like this:
no, then output or dump something