1. Declaring/initializing your query name is a best practice. Do a google search about why setting vars in CFC functions is a good idea for a better answer or maybe somebody else can chime in on this one?
2. I missed that you would need to return a boolean in the catch, so thanks to the CF server for the reminder to both of us, but I would return a false, since it means that the email did not get sent. As to the cfmail mechanics and why the try is catching an error, are you 100% certain you are not blowing up with any syntax errors in the try portion of your code? What does the catch message your writing out say? Also, test cfmail with a simple test case where the email address is hard-coded to your own address and watch the spool folder. You can do a quick copy and paste from the cf spool folder to your desktop, tamper with it in a text editor in some way that will prevent the cf server from successfully sending the email, save the file, and paste it back to the cf spool folder - this should test your third-party respooler. Once you're convinced it works, delete the intentionally mangled email file you created. All of this said, is to ensure that cfmail and your third-party tool are talking to each other. Back to your cfmail tag in your CFC function... double-check that your db query is returning the data you think it is by trying the query outside the function - something as innocent-appearing as a misnamed columm name could be wreaking havoc. Is email the column name? I'm not looking at your code as I type this, but maybe your queryname.recordcount eliminates that possibility, but the bottomline is the try is failing, so as I mentioned what you capture in your catch section should help - you can play with the type of catch and say 'all' so u see what type of error you are getting. Finally on the Flex-side of things my suggested code was to help get rid of the null object exception - by passing true or false from your CFC function, you will get one of your alerts (now that you pass a boolean in your catch block too - return a false though if the try fails. Hope this helps some. Mike > -------- Original Message -------- > Subject: Re: [AFFUG Discuss] Newbie questions on Flex for email > notification and form review > From: Chris H <[email protected]> > Date: Thu, June 03, 2010 8:19 am > To: [email protected] > > > Hi Michael, > Thanks for the reply. > Two points I did not > understand. > 1. Why did we need a <cfset > var accountCheck=""> on the > CF side when there was a query > named accountcheck as > <cfquery > datasource="#Application.ds#" > name="accountCheck"> > SELECT > email, fname, lname, password > FROM > user_accounts > WHERE > email = > '#form_data.email#<cfif > form_data.email does not > contain > '@domain.com'>@domain.com</cfi > f>' > </cfquery> > What was the reason for adding > a variable accountCheck? > Because in the if block in the > CF side we are testing <cfif > accountCheck.recordcount> > which was based on the result > of above query so is there any > reason/purpose for setting > accountCheck to empty string? > 2. On the CF side cfmail is > failing in the try block as > there is no mail server so it > was going to the catch block > where no true/false was being > returned so I got the message > "Unable to invoke CFC > recoverPassword as the return > type is not boolean. I added a > <cfreturn true /> in the > catch part and the error > message disappeared. > Since in the recoverPassword > on the Flex side, the > eventObj.result is not being > modified in CFC > recoverPassword it has value > false and so we go into the > else part where I get the > message Alert.show(''The email > address that you supplied was > not found in our records.", > 'Email Not Found'); > I saw nothing was present in > SpoolMail to. My intent was to > test if the cfmail > functionality works and if so > the undelivered mails should > be displayed using a > SpoolMail, but they are not. > How do I know now if the > cfmail worked properly or not? > Can you please clarify? > Sorry, if my questions are > naive, but I am pretty new to > ColdFusion/Flex. > Thanks > _________________________ > From: Michael Givens > <[email protected]> > To: [email protected] > Sent: Wed, June 2, 2010 > 6:48:32 PM > Subject: Re: [AFFUG Discuss] > Newbie questions on Flex for > email notification and form > review > Try this on the Flex-side (the > modified CFC function [see > below] returns a Boolean): > public function > recoverPassword(eventObj:Resul > tEvent):void{ > if > (eventObj.result){ > Alert.show(''Your credentials > have been sent to the email > address on file.', 'Password > Recovery Confirmation'); > currentState = ''; > } else { > Alert.show(''The email address > that you supplied was not > found in our records.', 'Email > Not Found'); > } > } > On the CF-side: > <!--- Password Retrieval > ---> > <cffunction > name="recoverPassword" > access="remote" > returntype="boolean"> > <cfargument > name="form_data" > type="struct"> > <cfset var > accountCheck=""> > <cftry> > <cfquery > datasource="#Application.ds#" > name="accountCheck"> > SELECT > email, fname, lname, password > FROM > user_accounts > WHERE > email = > '#form_data.email#<cfif > form_data.email does not > contain > '@domain.com'>@domain.com</cfi > f>' > </cfquery> > <cfif > accountCheck.recordcount> > <cfmail > from="[email protected]" > to="#accountCheck.email#" > subject="Credentials Request" > type="html"> > Dear > #accountCheck.fname# > #accountCheck.lname#, <br > /><br /> > You > have requested that we send > your login credentials for the > system on #DateFormat(now(), > 'MMMM DD,YYYY')#. > <br > /><br /> > Your > log-in information:<br /> > <b>Email address:</b> > #accountCheck.email#<br /> > <b>Password:</b> > #accountCheck.password# > <br > /><br /> > If you > did not request your login > credentials, please contact us > immediately at <a > href="mailto:[email protected]" > >[email protected]</a>: > <br > /><br /> > <span > style="color:red; > font-weight:bold; > font-style:italic;">Please do > not reply to this email</span> > </cfmail> > <cfreturn > true /> > <cfelse> > <cfreturn > false/> > </cfif> > > <cfcatch> > <cfsavecontent > variable="contentSaver"> > > <cfdump var="#cfcatch#"> > </cfsavecontent> > <cffile > action="write" > file="#ExpandPath('.')#\debug. > html" output="#contentSaver#"> > </cfcatch> > </cftry> > </cffunction> > ----- Original Message ----- > From: Chris H > To: [email protected] > Sent: Thursday, June 03, 2010 > 3:19 AM > Subject: Re: [AFFUG Discuss] > Newbie questions on Flex for > email notification and form > review > Tom, > Whenever my application tries > to send a mail using the > CFMAIL functionality it either > crashes or no mails show up in > SpoolMail. > Before I installed SpoolMail, > my Coldfusion/Flex application > was crashing due to reference > to a null object eventObj > which made me think that since > I have no mail server > installed, it is occurring > when CFMAIL tries to send an > email and posted here on May > 26. > The application has a > functionality something like > the below for Recovering > password function. > User clicks a button in the > Flex front end, enters his > mail address, after which a > function called > recoverPassword is called in > the "login.mxml" file which > has code as > public function > recoverPassword(eventObj:Resul > tEvent):void{ > > if(eventObj.result.status == > 'true'){ > Alert.show(eventObj.result.sta > tusMsg, 'Password Recovery > Confirmation'); > currentState = ''; > } > else{ > Alert.show(eventObj.result.err > Msg, 'Email Not Found'); > } > } > In the ColdFusion component > file, there is a function > <!--- Password Retrieval > ---> > <cffunction > name="recoverPassword" > access="remote" > returntype="any"> > <cfargument > name="form_data" > type="struct"> > <cftry> > <cfquery > datasource="#Application.ds#" > name="accountCheck"> > SELECT * > FROM > user_accounts > WHERE > email = > '#form_data.email#<cfif > form_data.email does not > contain > '@domain.com'>@domain.com</cfi > f>' > </cfquery> > <cfif > accountCheck.recordcount> > <cfmail > from="[email protected]" > to="#accountCheck.email#" > subject="Credentials Request" > type="html"> > Dear > #accountCheck.fname# > #accountCheck.lname#, <br > /><br /> > You > have requested that we send > your login credentials for the > system on #DateFormat(now(), > 'MMMM DD,YYYY')#. > <br > /><br /> > Your > log-in information:<br /> > <b>Email address:</b> > #accountCheck.email#<br /> > <b>Password:</b> > #accountCheck.password# > <br > /><br /> > If you > did not request your login > credentials, please contact us > immediately at <a > href="mailto:[email protected]" > >[email protected]</a>: > <br > /><br /> > <span > style="color:red; > font-weight:bold; > font-style:italic;">Please do > not reply to this email</span> > </cfmail> > <cfset > result['status'] = true> > <cfset > result['statusMsg'] = 'Your > credentials have been sent to > the following email address: > #accountCheck.email#'> > <cfelse> > <cfset > result['errMsg'] = 'The email > address that you supplied was > not found in our records.'> > <cfset > result['status'] = false> > </cfif> > > <cfreturn result> > <cfcatch> > <cfsavecontent > variable="contentSaver"> > > <cfdump var="#cfcatch#"> > </cfsavecontent> > <cffile > action="write" > file="#ExpandPath('.')#\debug. > html" output="#contentSaver#"> > </cfcatch> > </cftry> > </cffunction> > Before I installed SpoolMail > the application crashed at > public function > recoverPassword(eventObj:Resul > tEvent):void as the eventObj > was null so trying to access > eventObj.result.status > resulted in an access > violation. > After I installed SpoolMail it > is still crashing and nothing > shows up in SpoolMail. I > commented out the function > public function > recoverPassword(eventObj:Resul > tEvent):void, but still > nothing shows up in SpoolMail. > Am I missing something? > Any advice would be > appreciated? > Thanks > _________________________ > From: Tom McNeer > <[email protected]> > To: [email protected] > Sent: Wed, May 26, 2010 > 4:53:39 PM > Subject: Re: [AFFUG Discuss] > Newbie questions on Flex for > email notification and form > review > Chris, > On Wed, May 26, 2010 at 4:10 > PM, Chris H > <[email protected]> wrote: > I tried Spoolmail, but could > not see any section named > Custom Extensions in the > ColdFusion Administrator in my > browser(Firefox 3.6) after I > copied the Spoolmail files > into the web root at: > /CFIDE/admistrator and > creating the > extensionscustom.cfm as > explained in the install.doc > file. > I'm afraid I have no way of > knowing the problem. If the > files are in the correct > place, the "Custom Extensions" > menu choice should be > available at the bottom of the > left-hand menu in CF Admin. > Clicking it will reveal the > SpoolMail link. > In extensions section in the > Coldfusion administrator, all > I see is Java Applets, CFX > Tags, Custom Tag Paths, CORBA > Connectors > Yep. But that's the wrong > place. The "Custom Extensions" > choice is separate from > "Extensions." It's probably > the last choice in the > left-hand menu. > If you're certain that all > files are correct, and in the > correct place, I guess you > could try restarting the CF > service. The SpoolMail docs > don't mention it, and I can't > imagine why it should be > necessary, but you could try > it. > I've installed SpoolMail on > several machines. If it's set > up correctly, it always works. > Next, Spoolmail is used for > reading mail only meaning an > email server is required for > testing and Spoolmail will be > helpful in reading it? > Or, is no mail server required > if using Spoolmail? > You don't need a mail server. > The actual mail message is > created and formatted properly > by the CFMAIL functionality. > If ColdFusion cannot connect > to a mail server, it places > the message in its > "undelivered" folder. You can > find it at > {CFInstallDirectory}/Mail/Unde > livr. > SpoolMail just looks into this > directory and displays what's > there. > -- > Thanks, > Tom > Tom McNeer > MediumCool > http://www.mediumcool.com > 1735 Johnson Road NE > Atlanta, GA 30306 > 404.589.0560 > --------------------------- > --------------------------- > ------- > To unsubscribe from this > list, simply email the list > with unsubscribe in the > subject line > For more info, see > http://www.affug.com > Archive @ > http://www.mail-archive.com > /discussion%40affug.com/ > List hosted by FusionLink > --------------------------- > --------------------------- > ------- > ------------------------------ > ------------------------------ > - > To unsubscribe from this list, > simply email the list with > unsubscribe in the subject > line > For more info, see > http://www.affug.com > Archive @ > http://www.mail-archive.com/di > scussion%40affug.com/ > List hosted by FusionLink > ------------------------------ > ------------------------------ > - > ------------------------------ > ------------------------------ > - > To unsubscribe from this list, > simply email the list with > unsubscribe in the subject > line > For more info, see > http://www.affug.com > Archive @ > http://www.mail-archive.com/di > scussion%40affug.com/ > List hosted by FusionLink > ------------------------------ > ------------------------------ > - ------------------------------------------------------------- To unsubscribe from this list, simply email the list with unsubscribe in the subject line For more info, see http://www.affug.com Archive @ http://www.mail-archive.com/discussion%40affug.com/ List hosted by http://www.fusionlink.com -------------------------------------------------------------
