AirNew Posted March 23, 2019 Share Posted March 23, 2019 I need help to send an email to the player using callRemote, my site is bvbserver.com I already have some more php files I do not know where it is wrong! RESOURCE ( X ) V - client.lua - V to = "[email protected]" from = "[email protected]" title = "TEST" body = "TESTMESSAGE" triggerServerEvent("sendMessage", getLocalPlayer(), to, from, title, body ) V - server.lua - V addEvent("sendMessage", true) addEventHandler("sendMessage", getRootElement(), function ( to, from, title, body ) local function callbackfnc(result, msg) outputDebugString("callbackfnc: " .. result .. " (" .. msg .. ")") end outputChatBox ( ""..to.." : "..from.." : "..title.." : "..body.."!", root ) callRemote("https://bvbserver.com/MTA/file.php", callbackfnc, to, from, title, body) end) --------------------------------- // --------------------------------- --------------------------------- // --------------------------------- --------------------------------- // --------------------------------- --------------------------------- // --------------------------------- V - file.php - V (bvbserver.com/MTA/file.php) <?php include("mta_sdk.php"); if ($_SERVER['SERVER_ADDR'] != $_SERVER['REMOTE_ADDR']) { mta::doReturn(-1, "Remote access not allowed"); exit; } $input = mta::getInput(); if ( isset($input[0]) && isset($input[1]) && isset($input[2]) && isset($input[3]) ) { $to = $input[0]; $from = $input[1]; $subject = $input[2]; $message = $input[3]; $headers = "From: " . $input[1]; mail($to, $subject, $message, $headers); mta::doReturn(0, "Success"); } else { mta::doReturn(-1, "Invalid input"); } ?> V - mta_sdk.php - V (bvbserver.com/MTA/mta_sdk.php) <?php /** ************************************ * MTA PHP SDK ************************************ * * @copyright Copyright (C) 2010, Multi Theft Auto * @author JackC, eAi, Sebas * @link http://www.mtasa.com * @version 0.4 */ class mta { private $useCurl = false; private $sockTimeout = 6; // seconds public $http_username = ''; public $http_password = ''; public $host = ''; public $port = ''; private $resources = array(); public function __construct( $host, $port, $username = "", $pass = "" ) { $this->host = $host; $this->port = $port; $this->http_username = $username; $this->http_password = $pass; } public function getResource ( $resourceName ) { foreach ( $this->resources as $resource ) { if ( $resource->getName == $resourceName ) return $resource; } $res = new Resource ( $resourceName, $this ); $this->resources[] = $res; return $res; } public static function getInput() { $out = mta::convertToObjects( json_decode( file_get_contents('php://input'), true ) ); return (is_array($out)) ? $out : false; } public static function doReturn() { $val = array(); for ( $i = 0; $i < func_num_args(); $i++ ) { $val[$i] = func_get_arg($i); } $val = mta::convertFromObjects($val); $json_output = json_encode($val); echo $json_output; } public function callFunction( $resourceName, $function, $args ) { if ( $args != null ) { $args = mta::convertFromObjects($args); $json_output = json_encode($args); } else { $json_output = ""; } $path = "/" . $resourceName . "/call/" . $function; $result = $this->do_post_request( $this->host, $this->port, $path, $json_output ); echo $json_output; $out = mta::convertToObjects( json_decode( $result, true ) ); return (is_array($out)) ? $out : false; } public static function convertToObjects( $item ) { if ( is_array($item) ) { foreach ( $item as &$value ) { $value = mta::convertToObjects( $value ); } } else if ( is_string($item) ) { if ( substr( $item, 0, 3 ) == "^E^" ) { $item = new Element( substr( $item, 3 ) ); } elseif ( substr( $item, 0, 3 ) == "^R^" ) { $item = $this->getResource( substr( $item, 3 ) ); } } return $item; } public static function convertFromObjects( $item ) { if ( is_array($item) ) { foreach ( $item as &$value ) { $value = mta::convertFromObjects($value); } } elseif ( is_object($item) ) { if ( get_class($item) == "Element" || get_class($item) == "Resource" ) { $item = $item->toString(); } } return $item; } function do_post_request( $host, $port, $path, $json_data ) { if ( $this->useCurl ) { $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, "http://{$host}:{$port}{$path}" ); curl_setopt( $ch, CURLOPT_POST, 1 ); curl_setopt( $ch, CURLOPT_POSTFIELDS, $json_data ); $result = curl_exec($ch); curl_close($ch); return $result; } else { if ( !$fp = @fsockopen( $host, $port, $errno, $errstr, $this->sockTimeout ) ) { throw new Exception( "Could not connect to {$host}:{$port}" ); } $out = "POST {$path} HTTP/1.0\r\n"; $out .= "Host: {$host}:{$port}\r\n"; if ( $this->http_username && $this->http_password ) { $out .= "Authorization: Basic " . base64_encode( "{$this->http_username}:{$this->http_password}" ) . "\r\n"; } $out .= "Content-Length: " . strlen($json_data) . "\r\n"; $out .= "Content-Type: application/x-www-form-urlencoded\r\n\r\n"; //$out .= "Connection: close\r\n\r\n"; $out .= $json_data . "\r\n\r\n"; if ( !fputs( $fp, $out ) ) { throw new Exception( "Unable to send request to {$host}:{$port}" ); } @stream_set_timeout( $fp, $this->sockTimeout ); $status = @socket_get_status($fp); $response = ''; while ( !feof($fp) && !$status['timed_out'] ) { $response .= fgets( $fp, 128 ); $status = socket_get_status($fp); } fclose( $fp ); $tmp = explode( "\r\n\r\n", $response, 2 ); $headers = $tmp[0]; $response = trim($tmp[1]); preg_match( "/HTTP\/1.(?:0|1)\s*([0-9]{3})/", $headers, $matches ); $statusCode = intval($matches[1]); if ( $statusCode != 200 ) { switch( $statusCode ) { case 401: throw new Exception( "Access Denied. This server requires authentication. Please ensure that a valid username and password combination is provided." ); break; case 404: throw new Exception( "There was a problem with the request. Ensure that the resource exists and that the name is spelled correctly." ); break; } } if ( preg_match( "/^error/i", $response ) ) { throw new Exception( ucwords( preg_replace("/^error:?\s*/i", "", $response ) ) ); } return $response; } } } class Element { var $id; function Element($id) { $this->id = $id; } function toString() { return "^E^" . $this->id; } } class Resource { var $name; private $server; function Resource($name, $server) { $this->name = $name; $this->server = $server; } function toString() { return "^R^" . $this->name; } public function getName() { return $this->name; } function call ( $function ) { $val = array(); for ( $i = 1; $i < func_num_args(); $i++ ) { $val[$i-1] = func_get_arg($i); } return $this->server->callFunction ( $this->name, $function, $val ); } } ?> HELP ME PLEASE, I NEED SEND A MESSAGE TO PLAYER MAIL Link to comment
XaskeL Posted March 23, 2019 Share Posted March 23, 2019 Example: https://community.multitheftauto.com/index.php?p=resources&s=details&id=11231 1 Link to comment
AirNewSCR Posted March 23, 2019 Share Posted March 23, 2019 2 minutes ago, XaskeL said: Example: https://community.multitheftauto.com/index.php?p=resources&s=details&id=11231 I try this resource, but not work Link to comment
XaskeL Posted March 23, 2019 Share Posted March 23, 2019 27 minutes ago, AirNewSCR said: Я пытаюсь этот ресурс, но не работает maybe the message is in spam? 1 Link to comment
AirNew Posted March 23, 2019 Author Share Posted March 23, 2019 7 minutes ago, XaskeL said: maybe the message is in spam? I looked everywhere in the email, even in the session "All emails" but I did not find anything! Link to comment
XaskeL Posted March 23, 2019 Share Posted March 23, 2019 4 minutes ago, AirNew said: Я посмотрел везде в электронном письме, даже в сеансе «Все электронные письма», но ничего не нашел! check if the php function is called - email 1 Link to comment
AirNew Posted March 23, 2019 Author Share Posted March 23, 2019 2 minutes ago, XaskeL said: check if the php function is called - email callRemote("https://bvbserver.com/MTA/file.php", callbackfnc, to, from, title, body) Wait, HTTPS://, WAIT WAIT WAIT Link to comment
XaskeL Posted March 23, 2019 Share Posted March 23, 2019 5 minutes ago, AirNew said: callRemote("https://bvbserver.com/MTA/file.php", callbackfnc, to, from, title, body) Wait, HTTPS://, WAIT WAIT WAIT do you have a discord? 1 Link to comment
AirNew Posted March 23, 2019 Author Share Posted March 23, 2019 (edited) 1 minute ago, XaskeL said: do you have a discord? i'm from BRAZIL, and not speak english (just write) Edited March 23, 2019 by AirNew Link to comment
XaskeL Posted March 23, 2019 Share Posted March 23, 2019 Just now, AirNew said: Я из Бразилии, и не говорю по-английски (просто напишите) what letter do you need to send? It is possible that your Hosting is blocking outgoing fetchRemote, or you forgot to issue admin rights to the resource to call fetchRemote 1 Link to comment
AirNew Posted March 24, 2019 Author Share Posted March 24, 2019 39 minutes ago, XaskeL said: what letter do you need to send? It is possible that your Hosting is blocking outgoing fetchRemote, or you forgot to issue admin rights to the resource to call fetchRemote Solved! thanks @XaskeL Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now