<div dir="ltr"><span>I&#39;m personally a fan of using the smtp_library configuration option to hijack the mail sending process. I normally use something along the lines of the following...<br><br>file: db_smtp.inc<br>==================================<br>
/**<br>* Log the mails in db instead of mailing.<br>*/<br>function drupal_mail_wrapper($mailkey, $to, $subject, $body, $from, $headers) {<br>&nbsp; $mimeheaders = array();<br>&nbsp; foreach ($headers as $name =&gt; $value) {<br>&nbsp;&nbsp;&nbsp; // the check_plain nicely encodes &lt;&gt; chars for web presentation<br>
&nbsp;&nbsp;&nbsp; $mimeheaders[] = check_plain($name .&#39;: &#39;. mime_header_encode($value));<br>&nbsp; }<br>&nbsp; db_query(&quot;INSERT INTO {db_smtp_mail} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (mailkey, mail_to, mail_from, subject, body, headers) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUES (&#39;%s&#39;, &#39;%s&#39;, &#39;%s&#39;, &#39;%s&#39;, &#39;%s&#39;, &#39;%s&#39;)&quot;, <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $mailkey, $to, $subject, $body, $from, implode(&quot;\n &quot;, $mimeheaders));<br>&nbsp; return mysql_insert_id();<br>}<br><br>In my simple tests I just grab global $conf; and set $conf[&#39;smtp_library&#39;] = &#39;path/to/db_smtp.inc&#39;. This breaks if drupal_mail_wrapper is defined else where. I really wish it were strip_extension($conf[&#39;smtp_library&#39;]) .&#39;_mail_wrapper() that was invoked instead of drupal_mail_wrapper, or $conf[&#39;smtp_library&#39;] referenced a module with the default being drupal.<br>
</span><br></div>