'checkbox', '#title' => t('Enable rerouting'), '#default_value' => variable_get(REROUTE_EMAIL_ENABLE, 0), '#description' => t('Check this box if you want to enable email rerouting. Uncheck to disable rerouting.'), ); $form[REROUTE_EMAIL_ADDRESS] = array( '#type' => 'textfield', '#title' => t('Email addresses'), '#default_value' => variable_get(REROUTE_EMAIL_ADDRESS, variable_get('site_mail', ini_get('sendmail_from'))), '#description' => t('Provide a space, comma, or semicolon-delimited list of email addresses to pass through. Every destination email address which is not on this list will be rerouted to the first address on the list.'), '#states' => array( 'visible' => array(':input[name=reroute_email_enable]' => array('checked' => TRUE)), ), ); $form[REROUTE_EMAIL_ENABLE_MESSAGE] = array( '#type' => 'checkbox', '#title' => t('Show rerouting description in mail body'), '#default_value' => variable_get(REROUTE_EMAIL_ENABLE_MESSAGE, 1), '#description' => t('Check this box if you want a message to be inserted into the email body when the mail is being rerouted. Otherwise, SMTP headers will be used to describe the rerouting. If sending rich-text email, leave this unchecked so that the body of the email will not be disturbed.'), '#states' => array( 'visible' => array(':input[name=reroute_email_enable]' => array('checked' => TRUE)), ), ); return system_settings_form($form); } /** * Validation callback for reroute_email_settings() form. */ function reroute_email_settings_validate($form, $form_state) { if ($form_state['values']['reroute_email_enable'] == TRUE) { // Allow splitting emails by space, comma, semicolon. $addresslist = preg_split(REROUTE_EMAIL_EMAIL_SPLIT_RE, $form_state['values']['reroute_email_address'], -1, PREG_SPLIT_NO_EMPTY); foreach ($addresslist as $address) { if (!valid_email_address($address)) { form_set_error('reroute_email_address', t('@address is not a valid email address', array('@address' => $address))); } } } } /** * Form for sending test messages. */ function reroute_email_test_email_form() { return array( 'addresses' => array( '#type' => 'fieldset', '#description' => t('Email addresses are not validated: any valid or invalid email address format could be submitted.'), 'to' => array( '#type' => 'textfield', '#title' => t('To'), '#required' => TRUE, ), 'cc' => array( '#type' => 'textfield', '#title' => t('Cc'), ), 'bcc' => array( '#type' => 'textfield', '#title' => t('Bcc'), ), ), 'subject' => array( '#type' => 'textfield', '#title' => t('Subject'), '#default_value' => t('Reroute Email Test'), ), 'body' => array( '#type' => 'textarea', '#title' => t('Body'), ), 'submit' => array( '#type' => 'submit', '#value' => t('Send email'), ), ); } /** * Submit handler for email test. */ function reroute_email_test_email_form_submit(&$form, &$form_state) { $to = $form_state['values']['to']; $param_keys = array('cc', 'bcc', 'subject', 'body'); $params = array_intersect_key($form_state['values'], array_flip($param_keys)); $message = drupal_mail('reroute_email', 'test_email_form', $to, language_default(), $params); if (!empty($message['result'])) { drupal_set_message(t("Test email submitted for delivery.")); } }