You have been redirected from an outdated version of the article. Below is the content available on this topic. To view the old article click here.

Advanced Mail Functions

Advanced e-mail functionality is provided by the Advanced Mail module.

The Advanced Mail module allows a much more fine-grained control of how emails are generated and what content is sent. Below the examples the available mail functions are listed.

Note

  • The mail context is only available in the current scripting context
  • When calling the mail_begin() function, any previously supplied mail configuration is cleared
  • The minimum required parameters to send a mail are fromAddress, subject, htmlContent and at least one recipient

Example

The following example creates an email from “support@structr.com” with three recipients, a reply-to address, a bounce address and five attachments. It also sets a custom header X-Mailer: Structr. The contents of the dynamic files are shown below.

${
	(
		mail_begin('support@structr.com', 'Structr Support', 'Support Mail', '<b>HTML Content</b>', 'Text Content'),
		
		mail_add_to('member1@structr.com', 'Structr Member 1'),
		mail_add_cc('member2@structr.com'),
		mail_add_bcc('member3@structr.com'),
		
		mail_add_reply_to('reply-to@structr.com', 'Reply-To'),

		mail_set_bounce_address('bounce@structr.com'),
		
		mail_add_attachment(first(find('File', 'name', 'static-file.txt'))),

		mail_add_attachment(first(find('File', 'name', 'static-file.txt')), 'renamed-static-file.txt'),
		
		mail_add_header('X-Mailer', 'Structr'),

		store('parameter1', 'Hello'),
		mail_add_attachment(first(find('File', 'name', 'dynamic-file.txt'))),
		
		each(
			merge('User', 'Page'),
			(
				store('fileType', data),
				mail_add_attachment(first(find('File', 'name', 'typeListing.xlsx')), concat(data, '-table.xlsx')),
			)
		),

		mail_send()
	)
}

Important: If you are prototyping your mail in a page environment make sure to conditionally send emails only if empty(request.edit) - otherwise dynamic files will not be interpreted because we are operating in edit-mode which always shows the source code. Simply use the following snippet and open the page itself in its own browser window/tab to send your mail.

	if (
		empty(request.edit),
		mail_send(),
		'not sending mail as we are in preview mode'
	)

dynamic-file.txt

${retrieve('parameter1')} World!

typeListing.xlsx (the usual settings for excel files are used - refer to to_excel() for more information)

${to_excel(find(retrieve('fileType')), 'public')}

Search results for "Advanced Mail Functions"

We could not find anything matching "Advanced Mail Functions" in our documentation. Please rephrase your search.

You can also ask your questions in the Structr Google Group or create a free account in the Structr Support Portal.
Click here to send feedback to the Structr team.