I am using phpmailer to send e-mails and had some problems with sending on my hosting when I need to connect to remote mail server. I got info from tech support that I need to bind my server ip with remote server. It's the first time I am messing with sockets ever.
Unfortunately phpmailer uses fsocketopen, so this is how I changed it:
//my replacement code
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$conn = socket_connect($socket, $host, $port);
if($conn) {
$this->smtp_conn = $socket;
} else {
throw new Exception("Failed to connect to server: ".socket_last_error($socket));
}
//original phpmailer code
/**
$this->smtp_conn = @fsockopen($host, // the host of the server
$port, // the port to use
$errno, // error number if any
$errstr, // error message if any
$tval); // give up after ? secs
*/
But after that change I receive warnings:
Warning: fputs(): supplied resource is not a valid stream resource
Warning: socket_get_status(): supplied resource is not a valid stream resource
How can I create resource that would be compatible with resource returned from fsockopen? Using var_dump it says those two vars are both sockets. But I still get warnings for resource created usign socket_create.