'); function get_from_ldap($username, $domain) { $from = $username; $ldap_conn = null; try { $ldap_conn = ldap_connect(IMAP_FROM_LDAP_SERVER, IMAP_FROM_LDAP_SERVER_PORT); if ($ldap_conn) { printf("Connected to LDAP"); ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); $ldap_bind = ldap_bind($ldap_conn, IMAP_FROM_LDAP_USER, IMAP_FROM_LDAP_PASSWORD); if ($ldap_bind) { printf("Authenticated in LDAP"); $filter = str_replace('#username', $username, str_replace('#domain', $domain, IMAP_FROM_LDAP_QUERY)); printf("Searching From with filter: %s", $filter); $search = ldap_search($ldap_conn, IMAP_FROM_LDAP_BASE, $filter, unserialize(IMAP_FROM_LDAP_FIELDS)); $items = ldap_get_entries($ldap_conn, $search); if ($items['count'] > 0) { printf("Found entry in LDAP. Generating From"); $from = IMAP_FROM_LDAP_FROM; // We get the first object. It's your responsability to make the query unique foreach (unserialize(IMAP_FROM_LDAP_FIELDS) as $field) { $from = str_replace('#'.$field, $items[0][$field][0], $from); } } else { printf("No entry found in LDAP"); } } else { printf("Not authenticated in LDAP server"); } } else { printf("Not connected to LDAP server"); } } catch(Exception $ex) { printf("Error getting From value from LDAP server: %s", $ex); } ldap_close($ldap_conn); return $from; } $from = get_from_ldap('fmbiete', 'zpush.org'); printf("%s\n", $from); define('IMAP_FROM_SQL_DSN', 'mysql:host=xxxxxxx;port=3306;dbname=xxxxxxx'); define('IMAP_FROM_SQL_USER', 'xxxxxxx'); define('IMAP_FROM_SQL_PASSWORD', 'xxxxxxx'); define('IMAP_FROM_SQL_OPTIONS', serialize(array(PDO::ATTR_PERSISTENT => false))); define('IMAP_FROM_SQL_QUERY', 'select role, sede, email from usuarios where email = "#username@#domain"'); define('IMAP_FROM_SQL_FIELDS', serialize(array('role', 'sede', 'email'))); define('IMAP_FROM_SQL_FROM', '#role #sede <#email>'); function get_from_sql($username, $domain) { $from = $username; $dbh = $sth = $record = null; try { $dbh = new PDO(IMAP_FROM_SQL_DSN, IMAP_FROM_SQL_USER, IMAP_FROM_SQL_PASSWORD, unserialize(IMAP_FROM_SQL_OPTIONS)); printf("Connected to SQL Database"); $sql = str_replace('#username', $username, str_replace('#domain', $domain, IMAP_FROM_SQL_QUERY)); printf("Searching From with filter: %s", $sql); $sth = $dbh->prepare($sql); $sth->execute(); $record = $sth->fetch(PDO::FETCH_ASSOC); if ($record) { printf("Found entry in SQL Database. Generating From"); $from = IMAP_FROM_SQL_FROM; foreach (unserialize(IMAP_FROM_SQL_FIELDS) as $field) { $from = str_replace('#'.$field, $record[$field], $from); } } else { printf("No entry found in SQL Database"); } } catch(PDOException $ex) { printf("Error getting From value from SQL Database: %s", $ex); } $dbh = $sth = $record = null; return $from; } function encoding_from($from) { $items = explode("<", $from); $name = trim($items[0]); return "=?UTF-8?B?" . base64_encode($name) . "?= <" . $items[1]; } $from = get_from_sql('fmbiete', 'zpush.org'); printf("%s\n", $from); $from = "Francisco Miguel Biete Bañón "; $encoded_from = encoding_from($from); printf("%s\n", $encoded_from); function parseAddr($ad) { $addr_string = ""; if (isset($ad) && is_array($ad)) { foreach($ad as $addr) { if ($addr_string) $addr_string .= ","; $addr_string .= $addr->mailbox . "@" . $addr->host; } } return $addr_string; } include_once('include/z_RFC822.php'); $Mail_RFC822 = new Mail_RFC822(); $fromaddr = parseAddr($Mail_RFC822->parseAddressList($encoded_from)); printf("%s\n", $fromaddr); ?>