Sending mail from the forum, question to @Milo (General)

by danielb987, Tuesday, May 30, 2017, 14:10 (2517 days ago) @ Auge

I compared the ancient version with the current version and the file "include/contact.inc.php" has been changed.

Ancient version, line 236 - 293:

   if(empty($errors))
    {
     $smarty->config_load($settings['language_file'],'emails');
     $lang = $smarty->get_config_vars();
 
     // send mail:
     $ip = $_SERVER["REMOTE_ADDR"];
 
     if(isset($_SESSION[$settings['session_prefix'].'user_name'])) $emailbody = str_replace("[user]", stripslashes($_SESSION[$settings['session_prefix'].'user_name']), $lang['contact_email_txt_user']);
     else $emailbody = $lang['contact_email_txt'];
     $emailbody = str_replace("[message]", stripslashes($text), $emailbody);
     $emailbody = str_replace("[forum_address]", $settings['forum_address'], $emailbody);
     $header  = "From: ".$sender_email."\n";
     $header .= "X-Mailer: PHP/" . phpversion(). "\n";
     $header .= "X-Sender-ip: ".$ip."\n";
     $header .= "Content-Type: text/plain; charset=".$lang['charset']."\n";
     $header .= "Content-transfer-encoding: 8bit\n";
     if($settings['mail_parameter']!='')
      {
       if(!@mail($recipient_email, stripslashes($subject), $emailbody, $header, $settings['mail_parameter'])) $errors[] = 'error_mailserver';
      }
     else
      {
       if(!@mail($recipient_email, stripslashes($subject), $emailbody, $header)) $errors[] = 'error_mailserver';
      }
    }
   if(isset($errors))
    {
     $smarty->assign('errors',$errors);
     if(isset($id)) $smarty->assign('id',$id);
     if(isset($user_id)) $smarty->assign('recipient_user_id',$user_id);
     if(isset($sender_email)) $smarty->assign('sender_email',htmlspecialchars(stripslashes($sender_email)));
     if(isset($text)) $smarty->assign('text',htmlspecialchars(stripslashes($text)));
     if(isset($subject)) $smarty->assign('subject',htmlspecialchars(stripslashes($subject)));
    } 
   else
    {
     $smarty->assign('sent',TRUE);
     // e-mail to sender:
     $emailsubject = str_replace("[subject]", stripslashes($subject), $lang['contact_notification_sj']);
     $emailbody = str_replace("[subject]", stripslashes($subject), $lang['contact_notification_txt']);
     $emailbody = str_replace("[message]", stripslashes($text), $emailbody);
     $emailbody = str_replace("[forum_address]", $settings['forum_address'], $emailbody);
     $emailbody = str_replace("[recipient]", $recipient_name, $emailbody);
     $header  = "From: ".$settings['forum_email']."\n";
     $header .= "X-Mailer: PHP/" . phpversion(). "\n";
     $header .= "X-Sender-ip: ".$ip."\n";
     $header .= "Content-Type: text/plain; charset=".$lang['charset']."\n";
     $header .= "Content-transfer-encoding: 8bit\n";
     if($settings['mail_parameter']!='')
      {
       @mail($sender_email, $emailsubject, $emailbody, $header, $settings['mail_parameter']);
      }
     else
      {
       @mail($sender_email, $emailsubject, $emailbody, $header);
      }
    }
 

Current version, line 275 - 299:

   if(empty($errors))
    {
     // load e-mail strings from default language file:
     $smarty->configLoad($settings['language_file'], 'emails');
     $lang = $smarty->getConfigVars();
     if(isset($_SESSION[$settings['session_prefix'].'user_name'])) $emailbody = str_replace("[user]", $_SESSION[$settings['session_prefix'].'user_name'], $lang['contact_email_txt_user']);
     else $emailbody = $lang['contact_email_txt'];
     $emailbody = str_replace("[message]", $text, $emailbody);
     $emailbody = str_replace("[forum_address]", $settings['forum_address'], $emailbody);
     if(!my_mail($recipient_email, $subject, $emailbody, $sender_email)) $errors[] = 'mail_error';
    }
   if(isset($errors))
    {
     $_SESSION[$settings['session_prefix'].'formtime'] = TIMESTAMP - 7; // 7 seconds credit (form already sent)
     $smarty->assign('errors',$errors);
     if(isset($id)) $smarty->assign('id',intval($id));
     if(isset($user_id)) $smarty->assign('recipient_user_id',intval($user_id));
     if(isset($sender_email)) $smarty->assign('sender_email',htmlspecialchars($sender_email));
     if(isset($text)) $smarty->assign('text',htmlspecialchars($text));
     if(isset($subject)) $smarty->assign('subject',htmlspecialchars($subject));
    }
   else
    {
     $smarty->assign('sent',TRUE);
    }
 

In the ancient version, the PHP function mail() is called twice, both for $recipient_email and $sender_email. In the current version, my_mail() is only called once, for $recipient_email.

It would be great if MyLittleForum would send a copy of the email to the sender as well.

If this for some reason is not desirable, then a setting would allow the forum owner to choose whenether or not to use it. Or, it could be an option for the user that sends the email. A checkbox in the form. If the user check the checkbox, he will receive a copy. If he doesn't check the checkbox, he will not.

Best regards,
Daniel


Complete thread:

 RSS Feed of thread