Hi,

I've been working with the job module for awhile and have managed to put a simple implementation together. My question is about the automatic email. When an applicant applies for a job I would like an email to be sent to the applicant and the job creator (which happens automatically) and another email address that has been added in a job post cck field.

What is the best way to have the extra email sent?

Thanks

Comments

luke76’s picture

Would also like to know if this is possible. In my project the administrator will be adding the jobs on behalf of the employers. So they would like to receive the email application (as happens automatically) but it should also go to a specified (CCK field) email address for each job, ideally. This saves them the trouble of forwarding them on.

EDIT: think I have cracked this with the following code. Sends to both the user who posted the job (in my case, always the site admin), and also an email address specified in a CCK Email field.

function job_send_email($job_nid, $resume_nid) {
  global $user;

  $params['job_node']    = $job_node = node_load(array('nid' => $job_nid));
  $params['job_user']    = $job_user = user_load(array('uid' => $job_node->uid));
  $params['resume_node'] = $resume_node = node_load(array('nid' => $resume_nid));
  $params['resume_user'] = $resume_user = user_load(array('uid' => $resume_node->uid));
  
  $contactEmail = $job_node->field_contact_email[0]['email'];
  
  $from = $resume_user->mail;
  $language = user_preferred_language($user);
  
  $to = "$job_user->mail, $contactEmail";	

  drupal_mail('job', 'job_apply', $to, $language, $params, $from);

  watchdog('job', t("%name applied for job $job_node->nid.",
    array('%name' => theme('placeholder', $resume_user->name . " <$from>"))));
}
Pentacor’s picture

This is a slight variation on luke76's code, this will send an email to the admin & the user who applied without using any extra fields (i.e. just using the user's account email address).

I have also modified the email text to read better if either role gets the email, if anyone knows a good way to do separate emails for them please let me know!


function job_send_email($job_nid, $resume_nid) {
  global $user;

  $params['job_node']    = $job_node = node_load(array('nid' => $job_nid));
  $params['job_user']    = $job_user = user_load(array('uid' => $job_node->uid));
  $params['resume_node'] = $resume_node = node_load(array('nid' => $resume_nid));
  $params['resume_user'] = $resume_user = user_load(array('uid' => $resume_node->uid));
  
  $contactEmail = $resume_user->mail;
  
  $from = $resume_user->mail;
  $language = user_preferred_language($user);
  
  $to = "$job_user->mail";	

  drupal_mail('job', 'job_apply', $to, $language, $params, $from);
  drupal_mail('job', 'job_apply', $contactEmail, $language, $params, $from);

  watchdog('job', t("%name applied for job $job_node->nid.",
    array('%name' => theme('placeholder', $resume_user->name . " <$from>"))));
}


function theme_job_mail($job_node, $job_user, $resume_node, $resume_user) {
  global $base_url;
  
  $site = variable_get('site_name', 'drupal site');
  $subject = t("$site Job application for $job_node->title");
  $body  = t("Thank you for applying for the following job:\n");
  $body .= t("\nJob: @title",                          array('@title'  => $job_node->title));
  $body .= t("\nPersonal Details:\n");
  $body .= t("\nApplicant name: @name",                array('@name'   => $resume_user->name));
  $body .= t("\nApplicant email: @email",              array('@email'  => $resume_user->mail));
  $body .= t("\nCV: @title",                       array('@title'  => $resume_node->title));
  
  // send link to files, if attached
  if (variable_get("job_email_files", 0)) {
    $file_links = array();
    
    // first, try to include files from any filefields
    if (module_exists('filefield') && $fields = filefield_get_field_list($resume_node->type)) {
      foreach ($fields as $field) {
        $files = $resume_node->$field['field_name'];
        foreach ($files as $file) {
          $file_links[] = $base_url . url($file['filepath']);
        }
      }
    }
    
    // next, check for file attachments from the core upload.module
    if (is_array($resume_node->files) && count($resume_node->files)) {   
	  foreach ($resume_node->files as $file_obj) {
		// if this file is not "listed", skip it
		if (empty($file_obj->list)) {
		  continue;
		}
		
		// NOTE: for an HTML email, uncomment the following line and comment out the latter instead
		$file_links[] = l($file_obj->description, $base_url . url($file_obj->filepath));
		// $file_links[] = $base_url . url($file_obj->filepath);
	  }
    }
    
    if (count($file_links)) {
	  $body .= t("\n\nDownload CV:\n"). implode($file_links, "/n");
    }
  }

  return(array(
    'subject' => $subject,
    'body'    => $body,
    ));
}

goldoak jp’s picture

Could this code work for drupal 5?

xamount’s picture

Issue summary: View changes
Status: Active » Fixed

Yes it can work for drupal 5 but 5 is not supported anymore. Closing this issue as a solution has been provided.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.