¿Cómo enviar correo electrónico a través de php? ¡La función de correo PHP no funciona!
Si instala un servidor de correo en su propia computadora y no puede enviarlo, puede probarlo usted mismo
Muchos sistemas de administración ahora usan Para usar fsocketopen para conectarse al servidor de correo y enviar correo, puede usar 163 buzones y 126. Hay muchos modelos en Internet. Si no le importa, me gustaría reenviar uno de ellos. Los tres archivos que te modifiqué para que puedas usar fsocketopen para enviar mensajes masivos o individuales Mail
MailClass.php 》》》》》》
class Smtp
{
var $host; //host
var $port //el puerto suele ser 25
var $user; // Cuenta utilizada para la autenticación SMTP
var $pass; // Contraseña de autenticación
var $debug = false // Si se muestra la información de la sesión con el ¿servidor?
var $conn;
var $result_str; //Resultado
var $in //Comando enviado por el cliente
var $from; //El buzón de origen donde el destinatario recibe el correo electrónico
var $email //Dirección real
var $to;
var $; sujeto ; //Tema
var $cuerpo; //Contenido
var $error;
var $Todos;
función Smtp ( $array)
{
$this->host = $array['host'];
$this->port = $array[ ' puerto'];
$this->email= $array['trueemail'];
$this-> from = $array['from'];
$this->usuario = base64_encode($array['nombre de usuario']);
$this->pass = base64_encode($array['contraseña'] );
$this->debug = $array['debug'];
$this->socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP
if($this-); > socket){
$this->result_str = "Creando SOCKET:".socket_strerror(socket_last_error());
$this->debug_show($this->result_ str)
}
else
die("Error en la inicialización, verifique la conexión de red y los parámetros"); >conn = socket_connect($this->socket,$this->host,$ this->port);
if($this->conn){
$this- >result_str = "Creando conexión SOCKET
ción: ".socket_strerror(socket_last_error());
$this->debug_show($this->result_str);
}
else
die("La inicialización falló, verifique su conexión de red y sus parámetros");
$this->result_str = "El servidor respondió: &... lt;font color=#cc0000> ".socket_read ($this->socket, 1024)." ";
$this->debug_show($this->result_str);
} p> p>
función debug_show($str)
{
if($this-& gt;debug)
{
echo $str."
\r\n";
}
}
}
función setmail ($ a,$sujeto,$cuerpo){
$this->to = $ a;
$this->asunto = $asunto;
$this ->body = $body;
$All = "Content-type: text/html;charset=gb2312\r\n" // El método de codificación del correo electrónico se puede cambiar según sus necesidades. p>
$Todos .= "De:".
$Todos = "Para:".$esto->a."\r\n";
$Todos . = "Asunto:".$este->asunto."\rn\rn";
$Todos .= $este->cuerpo;
$esto -> Todo = $Todos;
}
/**
* Enviar parte del correo electrónico
* Recibir matriz de buzones
*
función enviar($toarray,$ sujeto,$cuerpo)
{
//Aquí está la sesión con el servidor p >
$this->in = "EHLO HELO\r\n";
$this->docommand();
$this->in = " INICIO DE SESIÓN AUTH\r\n";
$this->docommand();
$this->in = $this->usuario."\r\n";< / p>
$this->docommand();
$this->in = $this->pass."\r\n";
$this- > docommand();
foreach( $toarray as $to ) {
$this -> setmail($to,$subject,$body);
$esto
->in = "RSET\r\n";
$this->docommand();
$this->in = "MAIL FROM:<".$this- >correo electrónico.">\r\n";
$this->docommand();
$this->in = "RCPT TO:<".$this-> a.">\r\n";
$this->docommand();
$this->in = "DATA\r\n";
$this->docommand();
$this-> in = $this->Todos."\r\n.\r\n";
$this->docommand();
}
$this->in = "SALIR\r\n";
$this->docommand( );
//Finalizar, cerrar conexión
}
function docommand()
{
socket_write ($this->socket, $this->in, strlen ($this->in));
$this->debug_show("Acción del cliente: ".$this->in);
$this->result_str = "Servidor: ".socket_read ($this->socket, 1024)." ";
$ this->debug_show($this->result_str);
}
}
/>
MailConfig.inc.php 》》 》》》》
< ;?php
$mailconfig['host'] = "smtp.126..com" //host
$ mailconfig['port'] = "25"; //puerto Generalmente 25
$mailconfig['trueemail'] = " mhz1600@126.com" //dirección real
$mailconfig['username'] = "mhz1600";
$ mailconfig['password'] = "*****" //cambiar al suyo propio
$ mailconfig ['debug'] = false; // ¿se debe mostrar información sobre la sesión con el servidor?
$ mailconfig['from'] = "test@test.com" //mostrar el remitente al usuario
include_once "MailClass.php";
set_time_limit(180);
SendDemo.php 》》》》》》
include_once "MailConf
ig.inc.php"; /CAPTCHA de validación de código temporal simple en el momento actual (hasta la hora)/if( vacío($_GET['s ']) || $_GET['s'] != md5(fecha( 'Y-m-d-H',time())){header(" El servidor de envío de correo de NetEase 163 es smtp.163.com. Todos los buzones tienen instrucciones relevantes y también hay una función. Parece que el nuevo buzón no es fácil de uso, porque NetEase en 2006 El buzón se ajustó en octubre. Antes de este registro, no había ningún problema con el buzón. Si se registra después de esto, parece que puede activar algunas otras funciones y usarlas por un período de tiempo. p>
A través del símbolo del sistema anterior, puede probar el enlace al servidor smtp:
Primero, telnet smtp.126.com 25
Porque smtp usa el puerto 25. para proporcionar servicios, verá
Esta es la primera vez que prueba el servidor smtp usando el símbolo del sistema y luego estará listo para usar. Verá
220 126. com Anti-spam GT para sistemas Coremail (126com[071018]
Escriba EHLO HELO
El servidor devuelve
250 correos
250-PIPELINING<
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
Ingrese AUTH INICIAR SESIÓN
El servidor devuelve
334 dXNlcm5hbWU6
Luego ingrese nuevamente el nombre de usuario y la contraseña cifrados en base64 y podrá usar comandos para comunicarse con el servidor, incluido el envío. correos electrónicos
Si está interesado en más comandos, busque
Este programa php emula esta funcionalidad
Si no puede conectarse al servidor mediante telnet, significa que el servidor no está en la ubicación correcta
Si no puede, si usa telnet para conectarse directamente al servidor, significa que el servidor está en la ubicación incorrecta.