Ich muss E-Mails senden von mit Proxies IP-Adressen, weiß ich, dass ich dazu die fsockopen-Funktion verwenden muss, damit ich eine Verbindung mit dem SMTP-Konto kann Ich weiß, wenn ich eine Verbindung zum Proxy herstellen muss, muss ich die Funktion fsockopen erneut verwenden. Aber es in einem anderen fsockopen fsockopen ist nicht machbar.Senden von E-Mails von PHPMailer mit Proxies IP-Adressen
Ich habe transparenten Proxy und erfordern keine Authentifizierung. Ich muss dies an einen entfernten SMTP-Server eines externen E-Mail-Dienstanbieters senden.
Der Code, den ich versucht habe:
<?php
//SMTP params
$server = 'smtp.espdomain.com';
$server_port = '25';
$username = 'smtp_login';
$password = 'smtp_pass';
//Proxy
$proxy = '1.1.1.1';
$proxy_port = 1111;
//Open connection
$socket = fsockopen($proxy, $proxy_port);
//Send command to proxy
fputs($socket, "CONNECT $server:$server_port HTTP/1.0\r\nHost: $proxy\r\n\r\n");
fgets($socket, 334);
//SMTP authorization
fputs($socket, "AUTH LOGIN\r\n");
fgets($socket, 334);
fputs($socket, base64_encode($username)."\r\n");
fgets($socket, 334);
fputs($socket, base64_encode($password)."\r\n");
$output = fgets($socket, 235);
fputs($socket, "HELO $server \r\n");
$output = fgets($socket, 515);
?>
Und es funktioniert nicht ich, warum bin nicht sicher?
Können socat
Befehle in dieser Situation helfen oder gibt es eine Lösung oder alternative Lösung, um das zu erreichen?
Dank @Synchro für Ihre schnelle Wiederholung, nicht sicher, wie ich SOL in dieser Situation verwenden könnte, fügen Sie bitte ein Beispiel, wenn Sie können. (überprüfe mein Update). –
Ähm, ich glaube nicht, dass Sie wissen, was SOL bedeutet (http://onlineslangdictionary.com/meaning-definition-of/sol) ... Entschuldigung! – Synchro
Wenn Sie einen Proxy haben, sprechen Sie nicht direkt mit dem endgültigen Server (wie Sie es gerade tun). Sie stellen eine Verbindung zum Proxy her und senden Befehle an ihn * als ob * Sie mit dem realen Server gesprochen hätten. Der Proxy leitet die Befehle an den Zielserver weiter und leitet die Antworten an Sie zurück. In Systemen, die Proxies unterstützen, stellen Sie normalerweise eine Verbindung zum Proxy her und leiten das Ziel, mit dem Sie sich wirklich verbinden wollen, als zusätzlichen Wrapper um das Protokoll herum, das Sie gerade sprechen. PHP hat keine SMTP-Proxy-Unterstützung, nur HTTP, also müssten Sie Ihren eigenen Proxy-Code rollen oder eine Proxy-Bibliothek finden. – Synchro