summaryrefslogtreecommitdiff
path: root/Postman/Postman-Configuration/PostmanSmtpDiscovery.php
diff options
context:
space:
mode:
Diffstat (limited to 'Postman/Postman-Configuration/PostmanSmtpDiscovery.php')
-rw-r--r--Postman/Postman-Configuration/PostmanSmtpDiscovery.php237
1 files changed, 0 insertions, 237 deletions
diff --git a/Postman/Postman-Configuration/PostmanSmtpDiscovery.php b/Postman/Postman-Configuration/PostmanSmtpDiscovery.php
deleted file mode 100644
index 67a58b3..0000000
--- a/Postman/Postman-Configuration/PostmanSmtpDiscovery.php
+++ /dev/null
@@ -1,237 +0,0 @@
-<?php
-if ( ! defined( 'ABSPATH' ) ) {
- exit; // Exit if accessed directly
-}
-
-if (! class_exists ( 'PostmanSmtpMappings' )) {
- class PostmanSmtpMappings {
- // if an email is in this domain array, it is a known smtp server (easy lookup)
- private static $emailDomain = array (
- // from http://www.serversmtp.com/en/outgoing-mail-server-hostname
- '1and1.com' => 'smtp.1and1.com',
- 'airmail.net' => 'smtp.airmail.net',
- 'aol.com' => 'smtp.aol.com',
- 'Bluewin.ch' => 'Smtpauths.bluewin.ch',
- 'Comcast.net' => 'Smtp.comcast.net',
- 'Earthlink.net' => 'Smtpauth.earthlink.net',
- 'gmail.com' => 'smtp.gmail.com',
- 'Gmx.com' => 'mail.gmx.com',
- 'Gmx.net' => 'mail.gmx.com',
- 'Gmx.us' => 'mail.gmx.com',
- 'hotmail.com' => 'smtp.live.com',
- 'icloud.com' => 'smtp.mail.me.com',
- 'mail.com' => 'smtp.mail.com',
- 'ntlworld.com' => 'smtp.ntlworld.com',
- 'rocketmail.com' => 'plus.smtp.mail.yahoo.com',
- 'rogers.com' => 'smtp.broadband.rogers.com',
- 'yahoo.ca' => 'smtp.mail.yahoo.ca',
- 'yahoo.co.id' => 'smtp.mail.yahoo.co.id',
- 'yahoo.co.in' => 'smtp.mail.yahoo.co.in',
- 'yahoo.co.kr' => 'smtp.mail.yahoo.com',
- 'yahoo.com' => 'smtp.mail.yahoo.com',
- 'yahoo.com.ar' => 'smtp.mail.yahoo.com.ar',
- 'yahoo.com.au' => 'smtp.mail.yahoo.com.au',
- 'yahoo.com.br' => 'smtp.mail.yahoo.com.br',
- 'yahoo.com.cn' => 'smtp.mail.yahoo.com.cn',
- 'yahoo.com.hk' => 'smtp.mail.yahoo.com.hk',
- 'yahoo.com.mx' => 'smtp.mail.yahoo.com',
- 'yahoo.com.my' => 'smtp.mail.yahoo.com.my',
- 'yahoo.com.ph' => 'smtp.mail.yahoo.com.ph',
- 'yahoo.com.sg' => 'smtp.mail.yahoo.com.sg',
- 'yahoo.com.tw' => 'smtp.mail.yahoo.com.tw',
- 'yahoo.com.vn' => 'smtp.mail.yahoo.com.vn',
- 'yahoo.co.nz' => 'smtp.mail.yahoo.com.au',
- 'yahoo.co.th' => 'smtp.mail.yahoo.co.th',
- 'yahoo.co.uk' => 'smtp.mail.yahoo.co.uk',
- 'yahoo.de' => 'smtp.mail.yahoo.de',
- 'yahoo.es' => 'smtp.correo.yahoo.es',
- 'yahoo.fr' => 'smtp.mail.yahoo.fr',
- 'yahoo.ie' => 'smtp.mail.yahoo.co.uk',
- 'yahoo.it' => 'smtp.mail.yahoo.it',
- 'zoho.com' => 'smtp.zoho.com',
- // from http://www.att.com/esupport/article.jsp?sid=KB401570&cv=801
- 'ameritech.net' => 'outbound.att.net',
- 'att.net' => 'outbound.att.net',
- 'bellsouth.net' => 'outbound.att.net',
- 'flash.net' => 'outbound.att.net',
- 'nvbell.net' => 'outbound.att.net',
- 'pacbell.net' => 'outbound.att.net',
- 'prodigy.net' => 'outbound.att.net',
- 'sbcglobal.net' => 'outbound.att.net',
- 'snet.net' => 'outbound.att.net',
- 'swbell.net' => 'outbound.att.net',
- 'wans.net' => 'outbound.att.net'
- );
- // if an email's mx is in this domain array, it is a known smtp server (dns lookup)
- // useful for custom domains that map to a mail service
- private static $mxMappings = array (
- '1and1help.com' => 'smtp.1and1.com',
- 'google.com' => 'smtp.gmail.com',
- 'Gmx.net' => 'mail.gmx.com',
- 'icloud.com' => 'smtp.mail.me.com',
- 'hotmail.com' => 'smtp.live.com',
- 'mx-eu.mail.am0.yahoodns.net' => 'smtp.mail.yahoo.com',
- // 'mail.protection.outlook.com' => 'smtp.office365.com',
- // 'mail.eo.outlook.com' => 'smtp.office365.com',
- 'outlook.com' => 'smtp.office365.com',
- 'biz.mail.am0.yahoodns.net' => 'smtp.bizmail.yahoo.com',
- 'BIZ.MAIL.YAHOO.com' => 'smtp.bizmail.yahoo.com',
- 'hushmail.com' => 'smtp.hushmail.com',
- 'gmx.net' => 'mail.gmx.com',
- 'mandrillapp.com' => 'smtp.mandrillapp.com',
- 'smtp.secureserver.net' => 'relay-hosting.secureserver.net',
- 'presmtp.ex1.secureserver.net' => 'smtp.ex1.secureserver.net',
- 'presmtp.ex2.secureserver.net' => 'smtp.ex2.secureserver.net',
- 'presmtp.ex3.secureserver.net' => 'smtp.ex2.secureserver.net',
- 'presmtp.ex4.secureserver.net' => 'smtp.ex2.secureserver.net',
- 'htvhosting.com' => 'mail.htvhosting.com'
- );
- public static function getSmtpFromEmail($hostname) {
- reset ( PostmanSmtpMappings::$emailDomain );
- foreach ( PostmanSmtpMappings::$emailDomain as $domain => $smtp ) {
- if (strcasecmp ( $hostname, $domain ) == 0) {
- return $smtp;
- }
- }
- return false;
- }
- public static function getSmtpFromMx($mx) {
- reset ( PostmanSmtpMappings::$mxMappings );
- foreach ( PostmanSmtpMappings::$mxMappings as $domain => $smtp ) {
- if (PostmanUtils::endswith ( $mx, $domain )) {
- return $smtp;
- }
- }
- return false;
- }
- }
-}
-if (! class_exists ( 'PostmanSmtpDiscovery' )) {
- class PostmanSmtpDiscovery {
-
- // private instance variables
- public $isGoogle;
- public $isGoDaddy;
- public $isWellKnownDomain;
- private $smtpServer;
- private $primaryMx;
- private $email;
- private $domain;
-
- /**
- * Constructor
- *
- * @param mixed $email
- */
- public function __construct($email) {
- $this->email = $email;
- $this->determineSmtpServer ( $email );
- $this->isGoogle = $this->smtpServer == 'smtp.gmail.com';
- $this->isGoDaddy = $this->smtpServer == 'relay-hosting.secureserver.net';
- }
- /**
- * The SMTP server we suggest to use - this is determined
- * by looking up the MX hosts for the domain.
- */
- public function getSmtpServer() {
- return $this->smtpServer;
- }
- public function getPrimaryMx() {
- return $this->primaryMx;
- }
- /**
- *
- * @param mixed $email
- * @return string|bool
- */
- private function validateEmail($email) {
- return PostmanUtils::validateEmail ( $email );
- }
- private function determineSmtpServer($email) {
- $hostname = substr ( strrchr ( $email, "@" ), 1 );
- $this->domain = $hostname;
- $smtp = PostmanSmtpMappings::getSmtpFromEmail ( $hostname );
- if ($smtp) {
- $this->smtpServer = $smtp;
- $this->isWellKnownDomain = true;
- return true;
- } else {
- $host = strtolower ( $this->findMxHostViaDns ( $hostname ) );
- if ($host) {
- $this->primaryMx = $host;
- $smtp = PostmanSmtpMappings::getSmtpFromMx ( $host );
- if ($smtp) {
- $this->smtpServer = $smtp;
- return true;
- } else {
- return false;
- }
- } else {
- return false;
- }
- }
- }
-
- /**
- * Uses getmxrr to retrieve the MX records of a hostname
- *
- * @param mixed $hostname
- * @return mixed|boolean
- */
- private function findMxHostViaDns($hostname) {
- if (function_exists ( 'getmxrr' )) {
- $b_mx_avail = getmxrr ( $hostname, $mx_records, $mx_weight );
- } else {
- $b_mx_avail = $this->getmxrr ( $hostname, $mx_records, $mx_weight );
- }
- if ($b_mx_avail && sizeof ( $mx_records ) > 0) {
- // copy mx records and weight into array $mxs
- $mxs = array ();
-
- for($i = 0; $i < count ( $mx_records ); $i ++) {
- $mxs [$mx_weight [$i]] = $mx_records [$i];
- }
-
- // sort array mxs to get servers with highest prio
- ksort ( $mxs, SORT_NUMERIC );
- reset ( $mxs );
- $mxs_vals = array_values ( $mxs );
- return array_shift ( $mxs_vals );
- } else {
- return false;
- }
- }
- /**
- * This is a custom implementation of mxrr for Windows PHP installations
- * which don't have this method natively.
- *
- * @param mixed $hostname
- * @param mixed $mxhosts
- * @param mixed $mxweight
- * @return boolean
- */
- function getmxrr($hostname, &$mxhosts, &$mxweight) {
- if (! is_array ( $mxhosts )) {
- $mxhosts = array ();
- }
- $hostname = escapeshellarg ( $hostname );
- if (! empty ( $hostname )) {
- $output = "";
- @exec ( "nslookup.exe -type=MX $hostname.", $output );
- $imx = - 1;
-
- foreach ( $output as $line ) {
- $imx ++;
- $parts = "";
- if (preg_match ( "/^$hostname\tMX preference = ([0-9]+), mail exchanger = (.*)$/", $line, $parts )) {
- $mxweight [$imx] = $parts [1];
- $mxhosts [$imx] = $parts [2];
- }
- }
- return ($imx != - 1);
- }
- return false;
- }
- }
-}
-