3 * Table Definition for core_notify_sender
5 class_exists('DB_DataObject') ? '' : require_once 'DB/DataObject.php';
7 class Pman_Core_DataObjects_Core_notify_sender extends DB_DataObject
10 /* the code below is auto generated do not remove the above tag */
12 public $__table = 'core_notify_sender'; // table name
13 public $id; // int(11) not_null primary_key auto_increment
21 function emailAddrToSender($from_addr , $notify)
24 $from = $from_addr->mailbox . '@' . $from_addr->host;
26 $ns = DB_DataObject::Factory($this->tableName());
29 'poolname' => $notify->tableName()
31 if (!$ns->find(true)) {
41 function emailToAddr($email)
43 require_once 'Mail/RFC822.php';
44 $parser = new Mail_RFC822();
45 $addresses = $parser->parseAddressList( $email['headers']['From'], 'localhost', false);
46 if (is_a($addresses, 'PEAR_Error')) {
50 //print_r($email['headers']['From']); print_R($from_addr);exit;
56 function filterEmail($email, $notify)
59 if (empty($email['headers']['From']) || empty($notify)) {
62 $bits = explode('@', $notify->to_email);
63 $to_dom = DB_DataObject::factory('core_domain')->loadOrCreate($bits[1]);
65 $from_addr = $this->emailToAddr($email);
67 $ns = $this->emailAddrToSender($from_addr, $notify);
72 $bl = DB_DAtaObject::Factory('core_notify_sender_blacklist');
74 'sender_id'=> $ns->id,
75 'domain_id' => $to_dom->id
81 // try finding alternative.
82 $bl = DB_DAtaObject::Factory('core_notify_sender_blacklist');
83 $bl->domain_id = $to_dom->id;
84 $bad_ids = $bl->fetchAll('sender_id');
86 $ns = DB_DataObject::Factory($this->tableName());
88 'poolname' => $notify->tableName(),
91 $ns->whereAddIn('!id', $bad_ids, 'int');
93 return $email; // no alternative available
97 $email['headers']['From'] = $from_addr->personal . ' <' . $ns->email .'>';
101 //check blacklist for
107 function checkSmtpResponse($email, $notify, $errmsg)
109 $bl = DB_DataObject::factory('core_notify_sender_blacklist');
110 if (!$bl->messageIsBlacklisted($errmsg)) {
115 $bits = explode('@', $notify->to_email);
116 $to_dom = DB_DataObject::factory('core_domain')->loadOrCreate($bits[1]);
120 $from_addr = $this->emailToAddr($email);
121 $ns = $this->emailAddrToSender($from_addr, $notify);
124 'sender_id' => $ns->id,
125 'domain_id' => $to_dom->id,
130 $bl->error_str = $errmsg;
131 $bl->added_dt = $bl->sqlValue('NOW()');