-
Notifications
You must be signed in to change notification settings - Fork 0
/
port25.php
107 lines (93 loc) · 3.15 KB
/
port25.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php
// found elements on a couple of posts in stackexchange - not my own code
// determine if an email address has an ms server that talks to the world
// intent is not to send email, but to have enough of a dialog with an SMTP server to determine
// if it will accept an email for an email address.
$publichost = 'btopenworld.com';
echo '<br />querying DNS for ' . $publichost;
$mxarray = dns_get_record($publichost , DNS_MX);
$mxhost=$mxarray[0]['target'];
echo '<br />trying ' . $mxhost . '<br />';
print_r($mxarray);
$port = 25; // open a client connection
$fp = fsockopen($mxhost, $port, $errno, $errstr);
if (!$fp) {
$result = "Error: could not open socket connection";
}
else { // get the welcome message fgets ($fp, 1024); // write the user string to the socket
fputs($fp, 'EHLO mx.bubba.com\r\n'); // get the result $result .= fgets ($fp, 1024); // close the connection
$result .= fgets($fp);
//fputs ($fp, "END");
fclose ($fp); // trim the result and remove the starting ?
$result = trim($result);
$result = substr($result, 2); // now print it to the browser
}
echo '<br />Server said: ' . $result;
?>
/*
if(isset($_POST['email']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
{
// Could get this from the php ini?
$from="xxxx@xxxx-int.net";
$to=$_POST['email'];
$subject="Test";
$message="Testing";
list($me,$mydomain) = split("@",$from);
// Now look up the mail exchangers for the recipient
list($user,$domain) = split("@",$to,2);
if(getmxrr($domain,$mx,$weight) == 0) return FALSE;
// Try them in order of lowest weight first
array_multisort($mx,$weight);
$success=0;
foreach($mx as $host) {
// Open an SMTP connection
$connection = fsockopen ($host, 25, $errno, $errstr, 1);
if (!$connection)
continue;
$res=fgets($connection);
echo $res;
if(substr($res,0,3) != "220") echo $res;
// Introduce ourselves
fputs($connection, "EHLO $mydomain\n");
$res=fgets($connection);
echo $res;
if(substr($res,0,3) != "250") echo $res;
// Envelope from
fputs($connection, "MAIL FROM: $from\n");
$res=fgets($connection);
echo $res;
if(substr($res,0,3) != "250") echo $res;
// Envelope to
fputs($connection, "RCPT TO: $to\n");
$res=fgets($connection);
echo $res;
if(substr($res,0,3) != "250") echo $res;
// The message
fputs($connection, "DATA\n");
$res=fgets($connection);
echo $res;
if(substr($res,0,3) != "354") echo $res;
// Send To:, From:, Subject:, other headers, blank line, message, and finish
// with a period on its own line.
fputs($connection, "To: $to\nFrom: $from\nSubject: $subject\n$message\n.\n");
$res=fgets($connection);
echo $res;
if(substr($res,0,3) != "250") echo $res;
// Say bye bye
fputs($connection,"QUIT\n");
$res=fgets($connection);
echo $res;
if(substr($res,0,3) != "221") echo $res;
// It worked! So break out of the loop which tries all the mail exchangers.
$success=1;
break;
}
// Debug for if we fall over - uncomment as desired
// print $success?"Mail sent":"Failure: $res\n";
if($connection) {
if($success==0) fputs($connection, "QUIT\n");
fclose ($connection);
}
return $success?TRUE:FALSE;
}
*/