Mail issues with 7.1.1.x

Seems like there are some issues with mail and 7.1.1.x?

I’m trying to get the queryExecute() fix in 7.1.1.x (queryExecute() is stripping comments from queries - #5 by micstriit)

I pulled 7.1.1.3 and rebuilt my container. Discovered mail has been moved to an extension. Added that and rebuilt my dev container. App loads but there are weird issues:

/org/lucee/cfml/HelperBase.cfc:170
lucee.runtime.exp.CustomTypeException: not supported in 7.1 OOTB
	at lucee.runtime.tag.Throw._doStartTag(Throw.java:225)
	at lucee.runtime.tag.Throw.doStartTag(Throw.java:212)
	at org.lucee.cfml.helperbase_cfc$cf.udfCall1(/org/lucee/cfml/HelperBase.cfc:170)
	at org.lucee.cfml.helperbase_cfc$cf.udfCall(/org/lucee/cfml/HelperBase.cfc)
	at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:118)
	at lucee.runtime.type.UDFImpl._call(UDFImpl.java:370)
	at lucee.runtime.type.UDFImpl.call(UDFImpl.java:230)
	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:863)
	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:724)
	at lucee.runtime.SuperComponent.call(SuperComponent.java:83)
	at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:773)
	at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:2084)
	at org.lucee.cfml.mail_cfc$cf.udfCall(/org/lucee/cfml/Mail.cfc:6)
	at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:118)
	at

What’s odd is this doesn’t seem to get logged anywhere.

I also tried the 1.1.0.8-RC mail extension mentioned in this ticket but no change: Jira

1 Like

Jim, I’m getting the same behavior. I upgraded development to 7.1; learned that mail is now handled through an extension so installed that; CFMAIL now does nothing. And nothing gets logged. Worst of all, there’s no place in the admin where one can verify SMTP configuration settings. An obvious show-stopper for upgrading to 7.1 in production.

I opened ticket https://dev.lucee.org/t/administer-smtp-configuration-in-lucee-7-1/17510 but have heard nothing yet. Please let me know if you figure out how to make email work in 7.1.

FYI You can view the mail page by adding action=services.mail (found in Angel’s thread on Slack)

But even if you go there and send a test mail - it doesn’t go through.

I was about to upgrade all my servers to 7.1 but this is a show stopper.

And to be clear I’m running 7.1.0 which is considered a “stable” release. The Crypto extension for it looks promising, but you’re right, the inability of something as fundamental as email not working is a complete show-stopper.

I have discovered that by adding ‘async=“false”’ to the cfmail tag, the email is sent. It shouldn’t be necessary, but it does work for the interim and hopefully we’ll see some SMTP configuration restored to the administrator in the future.

1 Like

The async = “false” worked. Thanks

Thanks all — there are actually two separate problems in this thread, and they’re now split accordingly.

1. Async / spooled mail not sending — fixed.
This is the same root cause as the spooled-cfmail issue discussed in this thread, tracked as LDEV-6455. Since mail moved to an extension, the spooler wrote the task to disk but then couldn’t read it back (the task class lives in the extension, not core), so the mail was silently dropped — which is exactly why async="false" worked as a workaround (it sends synchronously and skips the spooler).

Fixed in Lucee 7.1.1.4-SNAPSHOT (core now resolves the extension’s task class on read), together with Mail Extension 1.1.0.8 (which fixes the serialization side). You need both; 1.1.0.8-RC on older 7.1.1.x still showed the problem because the core half wasn’t in yet. This is covered by test cases now so it won’t regress.

2. Mail admin UI / SMTP config missing — still open.
The disappearing “Mail” admin link, the failing test-send from action=services.mail, and the not supported in 7.1 OOTB error from HelperBase.cfc:170 are a different issue — the administrator’s mail service UI wasn’t fully restored after mail moved to the extension. That’s now tracked separately as LDEV-6458. Until it’s addressed, you can reach the page directly at lucee/admin/index.cfm?action=services.mail.

So: upgrade to 7.1.1.4-SNAPSHOT + Mail 1.1.0.8 for the sending fix; follow LDEV-6458 for the admin UI.

1 Like

Thanks for digging into this!!

The mail admin page part of this thread is fixed in 7.1.1.5-SNAPSHOT — tracked as LDEV-6458.

When mail moved to an extension in 7.1, the “Mail” entry in the administrator was left commented out — so the mail service page still worked but had no link (which is why it “disappeared”, and where the not supported in 7.1 OOTB error came from). It now behaves like the classic scheduler: the Mail link appears in the administrator whenever the mail extension is installed, and is hidden when it isn’t. Until you upgrade you can still reach the page directly at lucee/admin/index.cfm?action=services.mail.

Reminder that the sending half of this thread — async/spooled mail being silently dropped — is the separate LDEV-6455, fixed in 7.1.1.4-SNAPSHOT + Mail Extension 1.1.0.8. So on 7.1.1.5-SNAPSHOT + Mail 1.1.0.8 both the sending and the admin UI are sorted.

3 Likes

Michael, thank you for your attention to this matter.

@micstriit I am still seeing some issues:

  • 7.1.1.5-SNAPSHOT
  • 1.1.0.8-RC Mail extension

Good

  • Mail link is back in Administrator

Bad

  • Sending test email from Administrator doesn’t work
  • Still seeing OOTB errors when running my unit tests

FWIW - This all works fine using 7.0.6.5.

(I triple checked this and still seeing these errors)

Confirmed this is still occurring - I just dumped a simple mail tag into one of our controllers:

function before() {
	new mail(
		to		= "foo@bar.com",
		from	= "bar@foo.com",
		subject	= "TEST",
		body	= "TESTING MAIL"
	).send();
}

not supported in 7.1 OOTB

Stack trace:

lucee.runtime.exp.CustomTypeException: not supported in 7.1 OOTB at lucee.runtime.tag.Throw._doStartTag(Throw.java:225) at lucee.runtime.tag.Throw.doStartTag(Throw.java:212) at org.lucee.cfml.helperbase_cfc$cf.udfCall1(/org/lucee/cfml/HelperBase.cfc:170) at org.lucee.cfml.helperbase_cfc$cf.udfCall(/org/lucee/cfml/HelperBase.cfc) at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:118) at lucee.runtime.type.UDFImpl._call(UDFImpl.java:370) at lucee.runtime.type.UDFImpl.call(UDFImpl.java:230) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:863) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:724) at lucee.runtime.SuperComponent.call(SuperComponent.java:83) at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:773) at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:2084) at org.lucee.cfml.mail_cfc$cf.udfCall(/org/lucee/cfml/Mail.cfc:6) at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:118) at lucee.runtime.type.UDFImpl._call(UDFImpl.java:370) at lucee.runtime.type.UDFImpl.call(UDFImpl.java:230) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:863) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:716) at lucee.runtime.ComponentImpl.call(ComponentImpl.java:2281) at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:773) at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:2084) at admin.controllers.signup_cfc$cf.udfCall(/admin/controllers/signup.cfc:16) at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:118) at lucee.runtime.type.UDFImpl._call(UDFImpl.java:370) at lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:220) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:864) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:716) at lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2300) at lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:896) at lucee.runtime.functions.dynamicEvaluation.Invoke.call(Invoke.java:54) at one_cfc$cf.udfCalla(/framework/one.cfc:1633) at one_cfc$cf.udfCall(/framework/one.cfc) at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:118) at lucee.runtime.type.UDFImpl._call(UDFImpl.java:370) at lucee.runtime.type.UDFImpl.call(UDFImpl.java:230) at lucee.runtime.type.scope.UndefinedImpl.call(UndefinedImpl.java:811) at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:773) at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:2084) at one_cfc$cf.udfCall6(/framework/one.cfc:891) at one_cfc$cf.udfCall(/framework/one.cfc) at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:118) at lucee.runtime.type.UDFImpl._call(UDFImpl.java:370) at lucee.runtime.type.UDFImpl.call(UDFImpl.java:230) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:863) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:716) at lucee.runtime.ComponentImpl.call(ComponentImpl.java:2281) at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:773) at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:2084) at application_cfc$cf.udfCall1(/Application.cfc:988) at application_cfc$cf.udfCall(/Application.cfc) at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:118) at lucee.runtime.type.UDFImpl._call(UDFImpl.java:370) at lucee.runtime.type.UDFImpl.call(UDFImpl.java:230) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:863) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:716) at lucee.runtime.ComponentImpl.call(ComponentImpl.java:2281) at lucee.runtime.listener.ModernAppListener.call(ModernAppListener.java:511) at lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:239) at lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:43) at lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2831) at lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2818) at lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2789) at lucee.runtime.engine.Request.exe(Request.java:45) at lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1252) at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1209) at lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:99) at lucee.loader.servlet.jakarta.CFMLServlet.service(CFMLServlet.java:41) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:77) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:654) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1778) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:946) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:480) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:57) at java.base/java.lang.Thread.run(Unknown Source)

Posted in Slack but will also follow up here.

This may be a syntax issue. We use ‘new mail()’ - which is what is throwing the OOTB error. Replacing that code with ‘mail’ or ‘cfmail()’ works.

I’m assuming the Lucee tests aren’t testing ‘new mail()’ - hence they are passing.

Works in 7.0.6.5 - fails in 7.1.1.5 / 1.1.0.8-RC Mail   (OOTB error)
---------------------------------------
new mail(
	to		= "foo@bar.com",
	from	= "bar@foo.com",
	subject	= "TEST",
	body	= "TESTING MAIL"
).send();




works in 7.1.1.5  / 1.1.0.8-RC mail extension
---------------------------------------
mail to="foo@bar.com" from="bar@foo.com" subject="TEST" {
	writeOutput("TESTING MAIL");
}

cfmail(to="foo@bar.com", from="bar@foo.com", subject="TEST CFMAIL" )
{ WriteOutput( "TESTING MAIL" ); }

@Jim_Priest , while of course you’ll want to hear from @micstriit or someone else with an official answer, I’ll note that this seems to be a change made that’s inline with CF2025’s removal of such “tags as CFCs”, which had been implemented originally in CF9 (to allow use of “tags as script”).

Just like CF11 eventually changed to allowing use of new statements like that cfmail() you show, it wasn’t until CF2025 that Adobe finally pulled the plug on using new mail or other variants that were really loading a mail cfc.

Perhaps Lucee has now removed them as well, with 7.1. I was hoping that Michael might have been getting that when he talked about the “two separate problems” in his earlier reply here a couple of weeks ago. But he did not. That may be because he was focused more on the other two aspects of the original 7.1 mail issues being raised above.

FWIW, in Lucee, I believe these “tags as script” were referred to as “helper” objects. Note how the error you got (earlier here) is coming from Lucee’s helperbase.cfc. Folks can dig in more there. I just wanted to offer what I readily could here. And that said, I can’t find any indication of their removal in these places:

Let’s see who salutes at this flag you’ve run up the pole. :slight_smile:

1 Like

As usual - thanks for the insight Charlie! I haven’t looked at the newer CF versions so wasn’t aware they removed ‘new mail()’!

The Adobe docs seem outdated - they last mention ColdFusion 2018 (!)

But cfdocs mentions it:

“Script syntax using new mail(). Removed in ColdFusion 2025.”

So maybe I need to break down and update our code either way :slight_smile:

1 Like

Well, they didn’t document it on the doc page for the cfmail tag itself as it’s unchanged. They did document it in the page about that mail.cfc,, as well as in the doc page listing the other original “tags as script”, and of course on the page listing all depreciation and removals.

But I agree some folks might look for the details on the cfmail docs page. Anyway, the focus here is on Lucee, and I look forward to hearing I’d indeed this feature set is formally removed in 7.1–and if so, where might that be documented.

1 Like

Thanks Jim, and thanks Charlie for the CF2025 parallel.

I’ve logged this as Jira so we can make the official call: either restore new mail() through the mail extension or document its removal as a 7.1 breaking change. You’re right that the mail tests only cover mail { } / mailpart, not new mail().send(), which is why this didn’t show up there.

Until then, mail { } and cfmail(...) are the forms to use on 7.1.

1 Like

Quick follow-up: we’ve confirmed this is a bug, not an intentional removal. new mail(...).send() should keep working on 7.1 through the mail extension, and we’re tracking the fix (plus a test for that path) in Jira.

Until then, mail { } / cfmail(...) work as a workaround.

1 Like

I’m just looking for the quickest solution to get a stable 7.1.1.x release with the queryExecute/comments fix in it :slight_smile: