/**
* Notifies about an alarm by e-mail.
*
* @param array $alarm An alarm hash.
*
* @throws Horde_Alarm_Exception
*/
public function notify(array $alarm)
{
if (!empty($alarm['internal']['mail']['sent'])) {
return;
}
if (empty($alarm['params']['mail']['email'])) {
if (empty($alarm['user'])) {
return;
}
$email = $this->_identity->create($alarm['user'])->getDefaultFromAddress(true);
} else {
$email = $alarm['params']['mail']['email'];
}
try {
$mail = new Horde_Mime_Mail(array('Subject' => $alarm['title'], 'To' => $email, 'From' => $email, 'Auto-Submitted' => 'auto-generated', 'X-Horde-Alarm' => $alarm['title']));
if (isset($alarm['params']['mail']['mimepart'])) {
$mail->setBasePart($alarm['params']['mail']['mimepart']);
} elseif (empty($alarm['params']['mail']['body'])) {
$mail->setBody($alarm['text']);
} else {
$mail->setBody($alarm['params']['mail']['body']);
}
$mail->send($this->_mail);
} catch (Horde_Mime_Exception $e) {
throw new Horde_Alarm_Exception($e);
}
$alarm['internal']['mail']['sent'] = true;
$this->alarm->internal($alarm['id'], $alarm['user'], $alarm['internal']);
}