Upon Submit Cannot Send Email Notification in MIGXdb

You are missing all the code that actually sends the email. In addition you have to move the code to the else-clause of the if-statement or it will be executed even if files doesn’t change.

<?php
$modx->log(modX::LOG_LEVEL_ERROR,'aftersave-hook called');

$properties = $modx->getOption('scriptProperties',$scriptProperties,array());
$data = $modx->fromJson($properties['data']);
if ($data['files'] == $data['files_original']){
	$modx->log(modX::LOG_LEVEL_ERROR,'no changes!');
} else {
	$modx->log(modX::LOG_LEVEL_ERROR,'files has changed!');
	
	//create email message
	$object = & $scriptProperties['object'];
	$contractor = $object->get('contractor');
	$email = $object->get('mailadd');
	$message = 'Hi, a report has been uploaded: ' . $contractor . ' with email ' . $email . '.';
	$modx->log(modX::LOG_LEVEL_ERROR,'email message is: '.$message);

	//send email
	$modx->getService('mail', 'mail.modPHPMailer');
	$modx->mail->set(modMail::MAIL_BODY,$message);
	$modx->mail->set(modMail::MAIL_FROM,'myemail@website.com');
	$modx->mail->set(modMail::MAIL_FROM_NAME,'This Company');
	$modx->mail->set(modMail::MAIL_SENDER,'My Name');
	$modx->mail->set(modMail::MAIL_SUBJECT,'Document Uploaded');
	$modx->mail->address('to','me@website.com');
	$modx->mail->setHTML(true);
	if (!$modx->mail->send()) {
		$modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$err);
	}
	$modx->mail->reset();
}

Hi halftrainedharry,

I copied the above and just changed the mail FROM, FROM_NAME, SENDER & ‘to’ details.

The upload doc worked as normal and I got the following errors in the error log:

[2020-07-07 16:37:02] (ERROR @ /home/website/public_html/core/cache/includes/elements/modsnippet/66.include.cache.php : 2) aftersave-hook called
[2020-07-07 16:37:02] (ERROR @ /home/website/public_html/core/cache/includes/elements/modsnippet/66.include.cache.php : 9) files has changed!
[2020-07-07 16:37:02] (ERROR @ /home/website/public_html/core/cache/includes/elements/modsnippet/66.include.cache.php : 16) email message is: Hi, a report has been uploaded: Team Soon with email michael@website.com.
[2020-07-07 16:37:02] (ERROR @ /home/website/public_html/core/cache/includes/elements/modsnippet/66.include.cache.php : 28) An error occurred while trying to send the email: 

But no email was received (i did input a “from” server authorised email address and a “to” address to a legitimate email account)

The “from” address is the same as in the MODX manager settings.

I’m thinking the last error is the one I need to investigate. Is this where Bob Rays earlier mentioned extra may come in handy?

Not quite sure, but I think the problem is the line MAIL_SENDER. Set it to the same value as MAIL_FROM.
Or use this (reads the values from the system settings):

$modx->mail->set(modMail::MAIL_FROM,$modx->getOption('emailsender'));
$modx->mail->set(modMail::MAIL_FROM_NAME,$modx->getOption('site_name'));
$modx->mail->set(modMail::MAIL_SENDER,$modx->getOption('emailsender'));

@halftrainedharry @bruno17

That worked like a charm. Email received and no untoward errors in the log :smile:
Thank you so much for all your input.

The only dilemma I’m left with now is which post I should mark up as the definitive answer :thinking:

There were great suggestions in many posts that ultimately led to resolving a very interesting (well for me at least) issue.

Is it possible to mark multiple posts as the answer?