Reputation: 1
I have a webform page where user submits its query. On form submission a confirmation mail is sent to the user and admin. I have installed the Custom Webform Comment module through which user and admin both can comment and change the status in the form, now I want to send mail on each comment and status change to both admin and user.
I have tried using Webform Rules module but it is not working. The module is not sending mail
Is there any other way or module(s) through which I can send mail to the user?
Webform version 7.x-4.15
Thanks in advance :)
Upvotes: 0
Views: 1041
Reputation: 1
I resolved the above issue by inserting hook_mail code in my Custom Webform Comment module.
In case anyone else is facing the same issue here is the code which I inserted in the custom_webform_comments.module file.
/**
* Implements hook_mail().
*/
function custom_webform_comments_mail($key, &$message, $params) {
switch($key) {
case 'custom_webform_comments_email':
$message['subject'] = t('Submit Request Form update');
$message['body'][] = t('You have got a new comment and status update on your submitted form.',array('@site-name' => variable_get('site_name','example.com')));
$message['body'][] = t(variable_get('custom_webform_comments_email_text',''));
break;
}
}
After the above line of code put the following code after the database insert query inside the function custom_webform_comments_commentform_submit() to send mail after every comment update.
function custom_webform_comments_commentform_submit($form, $form_state) {
$fv = $form_state['values'];
$insert1 = db_insert('custom_webform_comments')
->fields(array(
'cid' => NULL,
'comment' => $fv['addnew']['comment'],
'subject' => $fv['addnew']['subject'],
'nid' => $fv['addnew']['nid'],
'sid' => $fv['addnew']['sid'],
'commenter_user_id' => $fv['addnew']['commenter_user_id'],
'comment_parent' => '0',
'ts' => date("Y-m-d H:i:s")
))->execute();
if($insert1)
{
global $user;
$params = array(
'body' => $message,
'subject' => 'Website Information Request',
'headers'=>'simple',
);
$message = drupal_mail('custom_webform_comments', 'custom_webform_comments_email', $user->mail, language_default(), $params, '[email protected]', TRUE);
if (!empty($message['result'])) {
watchdog('mail', 'Mail sent Successfully (from %from to %to) for comment update', array('%from' => $message['from'], '%to' => $message['to']), WATCHDOG_NOTICE);
//drupal_set_message("Mail sent!");
}
else{
watchdog('mail', 'Error sending e-mail (from %from to %to).', array('%from' => $message['from'], '%to' => $message['to']), WATCHDOG_ERROR);
drupal_set_message(t('Unable to send e-mail. Contact the site administrator if the problem persists.'), 'error');
}
}
return $insert1;
}
Similarly to get mail on every status update, update the following function.
function custom_webform_comments_status_dbupdater($data) {
global $user;
//Insert values into database
$insert = db_insert('custom_webform_submission_status')
->fields(array(
'id' => NULL,
'status' => $data['status'],
'submit_time' => date("Y-m-d H:i:s"),
'nid' => $data['nid'],
'sid' => $data['sid'],
'user' => serialize($user)
))->execute();
if($insert)
{
global $user;
$params = array(
'body' => $message,
'subject' => 'Website Information Request',
'headers'=>'simple',
);
$message = drupal_mail('custom_webform_comments', 'custom_webform_comments_email', $user->mail, language_default(), $params, '[email protected]', TRUE);
if (!empty($message['result'])) {
watchdog('mail', 'Mail sent Successfully (from %from to %to) for status update', array('%from' => $message['from'], '%to' => $message['to']), WATCHDOG_NOTICE);
//drupal_set_message("Mail sent!");
}
else{
watchdog('mail', 'Error sending e-mail (from %from to %to).', array('%from' => $message['from'], '%to' => $message['to']), WATCHDOG_ERROR);
drupal_set_message(t('Unable to send e-mail. Contact the site administrator if the problem persists.'), 'error');
}
}
return $insert;
}
Upvotes: 0
Reputation: 111
you can use hook_webform_submission_update in your custom form for send email or you can use action and triger for that
for that you have to add new custom module for that ou can refer this link :- https://www.drupal.org/docs/7/creating-custom-modules/getting-started
in your custom.module file add this code
refer this code
function <moduleName>_webform_submission_update($node, $submission)
{
// you can send mail like this
$message = 'New signup email address'; // Body of your email here.
//you can also set any form detail using $node,$submission variable
$params = array(
'body' => $message,
'subject' => 'Website Information Request',
'headers'=>'simple',
);
$to = "Your Email Address";
drupal_mail('contactform', 'send_link', $to, language_default(), $params, '[email protected]', TRUE);
}
Upvotes: 1