protected function _prepareHeaders($headers, array $opts = array())
{
$ob = new Horde_Mime_Headers();
$ob->addHeaderOb(Horde_Mime_Headers_Date::create());
$ob->addHeaderOb(Horde_Mime_Headers_MessageId::create());
$hdrs = array('From' => 'from', 'To' => 'to', 'Cc' => 'cc', 'Bcc' => 'bcc', 'Subject' => 'subject');
foreach ($hdrs as $key => $val) {
if (isset($headers[$val]) && (is_object($headers[$val]) || strlen($headers[$val]))) {
$ob->addHeader($key, $headers[$val]);
}
}
if ($this->replyType(true) == self::REPLY) {
if ($refs = $this->getMetadata('references')) {
$ob->addHeader('References', implode(' ', $refs));
}
if ($this->getMetadata('in_reply_to')) {
$ob->addHeader('In-Reply-To', $this->getMetadata('in_reply_to'));
}
}
/* Add priority header, if requested. */
if (!empty($opts['priority'])) {
switch ($opts['priority']) {
case 'high':
$ob->addHeader('Importance', 'High');
$ob->addHeader('X-Priority', '1 (Highest)');
break;
case 'low':
$ob->addHeader('Importance', 'Low');
$ob->addHeader('X-Priority', '5 (Lowest)');
break;
}
}
/* Add Return Receipt Headers. */
if (!empty($opts['readreceipt']) && ($h = $ob['from'])) {
$from = $h->getAddressList(true);
if (is_null($from->host)) {
$from->host = $GLOBALS['injector']->getInstance('IMP_Factory_Imap')->create()->config->maildomain;
}
$mdn = new Horde_Mime_Mdn($ob);
$mdn->addMdnRequestHeaders($from);
}
return $ob;
}