Enviar correos electrónicos de PHPMailer usando direcciones IP de proxies

Necesito enviar correos electrónicos de PHPMailer usando direcciones IP de proxies, sé que para hacerlo, necesito usar la función fsockopen para poder conectarme a la cuenta SMTP, también sé que si tengo que conectarme al proxy tengo que usa la función fsockopen nuevamente. Pero usarlo fsockopen dentro de otro fsockopen no es factible.

Tengo un proxy transparente y no necesito autenticación. Necesito enviar esto a un servidor SMTP distante de un proveedor externo de servicios de correo electrónico.

El código que he intentado:

 

Y no está funcionando, no estoy seguro de por qué?

¿ socat comandos de socat ayudar en esta situación o hay alguna solución o solución alternativa para lograrlo?

¿No es esto una repetición de su pregunta anterior ? No veo que haya cambiado mucho.

No está utilizando el proxy correctamente (no puede hacer sockets dentro de sockets), pero PHPMailer no tiene ningún soporte de proxy específico. Si fuera a ir a SMTPOptions , SMTPOptions propiedades de configuración en SMTPOptions , aunque por lo que puedo ver, PHP solo ofrece soporte de proxy en las transmisiones HTTP para que pueda ser SOL. Probablemente sea más fácil ejecutar un servidor de correo local para retransmitir en lugar de un proxy.

Finalmente encontré la solución usando Socat , amablemente siga estos pasos:

  1. En primer lugar, deberá instalar socat en el servidor, puede hacerlo simplemente con el siguiente comando:

     yum install socat 
  2. A continuación, ejecute el siguiente comando socat que PROXY_IP:PORT con HOST_ESP:PORT :

     socat TCP4-LISTEN:proxy_port,bind=proxy_IP,fork,su=nobody TCP4:host:port,bind=proxy_IP 
  3. Luego, en lugar de hacer un envío al ESP a través de HOST_ESP:PORT , puede hacerlo usando PROXY_IP:PORT y socat hará la redirección automáticamente hacia HOST_ESP:PORT usando la salida de PROXY_IP:PORT .

Espero que esto ayude.

Puedes probar esto …

 UnlockComponent('30-day trial'); if ($success != true) { print 'Component unlock failed' . "\n"; exit; } // To connect through an HTTP proxy, set the HttpProxyHostname // and HttpProxyPort properties to the hostname (or IP address) // and port of the HTTP proxy. Typical port numbers used by // HTTP proxy servers are 3128 and 8080. $mailman->HttpProxyHostname = 'www.my-http-proxy.com'; $mailman->HttpProxyPort = 3128; // Important: Your HTTP proxy server must allow non-HTTP // traffic to pass. Otherwise this does not work. // Set the SMTP server. $mailman->SmtpHost = 'smtp.chilkatsoft.com'; // Set the SMTP login/password (if required) $mailman->SmtpUsername = 'myUsername'; $mailman->SmtpPassword = 'myPassword'; // Create a new email object $email = new COM("Chilkat.Email2"); $email->Subject = 'This is a test'; $email->Body = 'This is a test'; $email->From = 'Chilkat Support '; $email->AddTo('Chilkat Admin','admin@chilkatsoft.com'); // Call SendEmail to connect to the SMTP server via the HTTP proxy and send. // The connection (ie session) to the SMTP server remains // open so that subsequent SendEmail calls may use the // same connection. $success = $mailman->SendEmail($email); if ($success != true) { print $mailman->lastErrorText() . "\n"; exit; } // Some SMTP servers do not actually send the email until // the connection is closed. In these cases, it is necessary to // call CloseSmtpConnection for the mail to be sent. // Most SMTP servers send the email immediately, and it is // not required to close the connection. We'll close it here // for the example: $success = $mailman->CloseSmtpConnection(); if ($success != true) { print 'Connection to SMTP server not closed cleanly.' . "\n"; } print 'Mail Sent!' . "\n"; ?>