Luego de mucho trabajar ya dimos con el resultado de esta obstáculo que algunos de nuestros lectores de nuestro sitio han tenido. Si tienes algún detalle que compartir no dudes en compartir tu información.
CONTENIDO
- NOMBRE
- SINOPSIS
- DESCRIPCIÓN
- EJEMPLOS
- CONSTRUCTOR
- MÉTODOS
- DIRECCIONES
- VER TAMBIÉN
- AUTOR
- DERECHOS DE AUTOR
- LICENCIA
NOMBRE
Net :: SMTP – Cliente de protocolo simple de transferencia de correo
SINOPSIS
use Net::SMTP;# Constructors$smtp= Net::SMTP->new('mailhost');$smtp= Net::SMTP->new('mailhost', Timeout =>60);
DESCRIPCIÓN
Este módulo implementa una interfaz de cliente para el protocolo SMTP y ESMTP, lo que permite que una aplicación perl5 se comunique con los servidores SMTP. Esta documentación asume que está familiarizado con los conceptos del protocolo SMTP descritos en RFC2821. Con IO :: Socket :: SSL instalado, también proporciona soporte para encriptación TLS implícita y explícita, es decir, SMTPS o SMTP + STARTTLS.
La clase Net :: SMTP es una subclase de Net :: Cmd y (dependiendo de la disponibilidad) de IO :: Socket :: IP, IO :: Socket :: INET6 o IO :: Socket :: INET.
EJEMPLOS
Este ejemplo imprime el nombre de dominio de correo del servidor SMTP conocido como mailhost:
#!/usr/local/bin/perl -wuse Net::SMTP;$smtp= Net::SMTP->new('mailhost');print$smtp->domain,"n";$smtp->quit;
Este ejemplo envía un pequeño mensaje al administrador de correos en el servidor SMTP conocido como mailhost:
#!/usr/local/bin/perl -wuse Net::SMTP;my$smtp= Net::SMTP->new('mailhost');$smtp->mail($ENVUSER);if($smtp->to('postmaster'))$smtp->data();$smtp->datasend("To: postmastern");$smtp->datasend("n");$smtp->datasend("A simple test messagen");$smtp->dataend();elseprint"Error: ",$smtp->message();$smtp->quit;
CONSTRUCTOR
-
nuevo ( [ HOST ] [, OPTIONS ] )
-
Este es el constructor de un nuevo objeto Net :: SMTP.
HOST
es el nombre del host remoto al que se requiere una conexión SMTP.En el fracaso
undef
será devuelto y[email protected]
contendrá el motivo del error.HOST
es opcional. SiHOST
no se da, entonces se puede pasar como elHost
opción que se describe a continuación. Si no se da ninguno, entonces elSMTP_Hosts
especificado enNet::Config
se utilizará.OPTIONS
se pasan en forma de hash, utilizando pares de clave y valor. Las posibles opciones son:Hola – SMTP requiere que se identifique. Esta opción especifica una cadena para pasar como su dominio de correo. Si no se proporciona, se utilizará localhost.localdomain.
EnviarHola – Si es falso, no se enviará el comando EHLO (o HELO) que normalmente se envía al construir el objeto. En ese caso, el comando deberá enviarse manualmente llamando
hello()
en lugar de.Anfitrión – Host SMTP al que conectarse. Puede ser un solo escalar (nombre de host[:port]), como se define para el
PeerAddr
en IO :: Socket :: INET, o una referencia a una matriz con hosts para probar a su vez. El método “host” devolverá el valor que se utilizó para conectarse al host. Formato –PeerHost
from IO :: Socket :: INET nuevo método.Puerto – puerto al que conectarse. Predeterminado: 25 para SMTP simple y 465 para SSL inmediato.
SSL – Si la conexión se debe realizar desde el principio con SSL, al contrario de la actualización posterior con
starttls
. Puede usar argumentos SSL como se documenta en IO :: Socket :: SSL, pero normalmente ya usará los argumentos correctos.LocalAddr y LocalPort – Estos parámetros se pasan directamente a IO :: Socket para permitir vincular el socket a una dirección y puerto local específicos.
Dominio – Este parámetro se pasa directamente a IO :: Socket y permite hacer cumplir las conexiones IPv4 incluso si IO :: Socket :: IP se utiliza como superclase. Alternativamente Familia puede ser usado.
Se acabó el tiempo – Tiempo máximo, en segundos, para esperar una respuesta del servidor SMTP (predeterminado: 120)
Direcciones Exactas – Si es verdadero, todos los argumentos de DIRECCIÓN deben ser los definidos por
addr-spec
en RFC2822. Si no se proporciona, o es falso, Net :: SMTP intentará extraer la dirección del valor pasado.Depurar – Habilitar la información de depuración
Ejemplo:
$smtp= Net::SMTP->new('mailhost', Hello =>'my.mail.domain', Timeout =>30, Debug =>1,);# the same$smtp= Net::SMTP->new( Host =>'mailhost', Hello =>'my.mail.domain', Timeout =>30, Debug =>1,);# the same with direct SSL$smtp= Net::SMTP->new('mailhost', Hello =>'my.mail.domain', Timeout =>30, Debug =>1, SSL =>1,);# Connect to the default server from Net::config$smtp= Net::SMTP->new( Hello =>'my.mail.domain', Timeout =>30,);
MÉTODOS
A menos que se indique lo contrario, todos los métodos devuelven un cierto o falso valor, con cierto lo que significa que la operación fue un éxito. Cuando un método indica que devuelve un valor, el error se devolverá como indef o una lista vacía.
Net::SMTP
hereda de Net::Cmd
así que los métodos definidos en Net::Cmd
se puede utilizar para enviar comandos al servidor SMTP remoto además de los métodos documentados aquí.
-
banner ()
-
Devuelve el mensaje de banner con el que respondió el servidor cuando se realizó la conexión inicial.
-
dominio ()
-
Devuelve el dominio con el que se identificó el servidor SMTP remoto durante la conexión.
-
hola (DOMINIO)
-
Dígale al servidor remoto el dominio de correo en el que se encuentra utilizando el comando EHLO (o HELO si EHLO falla). Dado que este método se invoca automáticamente cuando se construye el objeto Net :: SMTP, el usuario normalmente no debería tener que llamarlo manualmente.
-
anfitrión ()
-
Devuelve el valor usado por el constructor y pasado a IO :: Socket :: INET, para conectarse al host.
-
etrn (DOMINIO)
-
Solicita una ejecución en cola para el DOMINIO proporcionado.
-
starttls (SSLARGS)
-
Actualice la conexión simple existente a SSL. Puede usar argumentos SSL como se documenta en IO :: Socket :: SSL, pero normalmente ya usará los argumentos correctos.
-
auth (NOMBRE DE USUARIO, CONTRASEÑA)
-
autenticación (SASL)
-
Intente la autenticación SASL. Requiere el módulo Authen :: SASL. El primer formulario construye un nuevo objeto Authen :: SASL usando el nombre de usuario y la contraseña dados; la segunda forma usa el objeto Authen :: SASL dado.
-
Correo Electronico [, OPTIONS] )
-
enviar (DIRECCION)
-
send_or_mail (DIRECCIÓN)
-
send_and_mail (DIRECCIÓN)
-
Envíe el comando apropiado al servidor MAIL, SEND, SOML o SAML.
ADDRESS
es la dirección del remitente. Esto inicia el envío de un mensaje. El métodorecipient
debe llamarse para cada dirección a la que se enviará el mensaje.los
mail
El método puede algunas OPCIONES ESMTP adicionales que se pasan en forma de hash, utilizando pares de clave y valor. Las posibles opciones son:Size =>
Return =>"FULL"|"HDRS" Bits =>"7"|"8"|"binary" Transaction => Envelope => # xtext-encodes its argument ENVID => # similar to Envelope, but expects argument encoded XVERP =>1 AUTH => # encoded address according to RFC 2554 los
Return
yEnvelope
Los parámetros se utilizan para DSN (Notificación de estado de entrega).La dirección del remitente en
AUTH
Se espera que la opción esté en el formato requerido por RFC 2554, en una forma de cotización RFC2821 y codificada en xtext, o <>. -
Reiniciar ()
-
Restablezca el estado del servidor. Esto se puede llamar después de que se haya iniciado un mensaje, pero antes de que se hayan enviado datos, para cancelar el envío del mensaje.
-
Dirección del receptor [, ADDRESS, […]] [, OPTIONS ] )
-
Notifique al servidor que el mensaje actual debe enviarse a todas las direcciones proporcionadas. Cada dirección se envía como un comando independiente al servidor. Si el envío de cualquier dirección resultara en una falla, entonces el proceso se aborta y un falso se devuelve el valor. Depende del usuario llamar
reset
si así lo desean.los
recipient
El método también puede pasar OPCIONES adicionales que distinguen entre mayúsculas y minúsculas como un hash anónimo utilizando pares de clave y valor. Las posibles opciones son:Notify =>['NEVER']or['SUCCESS','FAILURE','DELAY'](see below) ORcpt =>
SkipBad =>1(to ignore bad addresses) Si
SkipBad
es cierto elrecipient
no devolverá un error cuando se encuentre una dirección incorrecta y devolverá una matriz de direcciones que se realizaron correctamente.$smtp->recipient($recipient1,$recipient2);# Good$smtp->recipient($recipient1,$recipient2, SkipBad =>1);# Good$smtp->recipient($recipient1,$recipient2, Notify =>['FAILURE','DELAY'], SkipBad =>1);# Good@goodrecips=$smtp->recipient(@recipients, Notify =>['FAILURE'], SkipBad =>1);# Good$smtp->recipient("$recipient,$recipient2");# BAD
Notificar se utiliza para solicitar notificaciones de estado de entrega (DSN), pero es posible que su servicio SMTP / ESMTP no respete esta solicitud según su versión y la configuración SMTP de su sitio.
Si se omite la opción Notificar, generalmente un servicio SMTP tiene un comportamiento predeterminado equivalente a [‘FAILURE’] solo notificaciones, pero nuevamente, esto puede depender de la configuración SMTP de su sitio.
La palabra clave NEVER debe aparecer por sí misma si se usa dentro de la opción Notificar y “solicita que no se devuelva un DSN al remitente bajo ninguna condición”.
Notify =>['NEVER']$smtp->recipient(@recipients, Notify =>['NEVER'], SkipBad =>1);# Good
Puede usar cualquier combinación de estos tres valores ‘SUCCESS’, ‘FAILURE’, ‘DELAY’ en la referencia de matriz anónima definida por RFC3461 (consulte http://www.ietf.org/rfc/rfc3461.txt para obtener más información. Nota: citas en este tema del mismo.).
Un parámetro de notificación de ‘SUCCESS’ o ‘FAILURE’ “solicita que se emita un DSN en caso de entrega exitosa o falla en la entrega, respectivamente”.
Un parámetro de notificación de ‘DELAY’ “indica la voluntad del remitente de recibir DSN retrasados. Se pueden emitir DSN retrasados si la entrega de un mensaje se ha retrasado durante un período de tiempo inusual (según lo determinado por el Agente de transferencia de mensajes (MTA) en el que el mensaje se retrasa), pero no se puede determinar el estado de entrega final (ya sea satisfactoria o fallida) La ausencia de la palabra clave DELAY en un parámetro NOTIFY solicita que NO se emita un DSN “retrasado” bajo ninguna condición “.
Notify =>['SUCCESS','FAILURE','DELAY']$smtp->recipient(@recipients, Notify =>['FAILURE','DELAY'], SkipBad =>1);# Good
ORcpt también es parte de la extensión SMTP DSN según RFC3461. Se utiliza para transmitir el destinatario original al que se envió el correo por primera vez. La máquina que genera un DSN utilizará esta dirección para informar al remitente, porque no puede saber si los destinatarios son reescritos por los servidores de correo. Se espera que tenga el formato requerido por RFC3461, codificado en xtext.
-
dirigirse [, ADDRESS […]])
-
cc (DIRECCIÓN [, ADDRESS […]])
-
bcc (DIRECCIÓN [, ADDRESS […]])
-
Sinónimos para
recipient
. -
datos ( [ DATA ] )
-
Iniciar el envío de los datos del mensaje actual.
DATA
puede ser una referencia a una lista o una lista y debe ser codificado por la persona que llama en octetos de cualquier codificación que se requiera, por ejemplo, utilizando el módulo Encodeencode()
función.Si se especifica el contenido de
DATA
y una cadena de terminación".rn"
se envía al servidor. El resultado será verdadero si los datos fueron aceptados.Si
DATA
no se especifica, el resultado indicará que el servidor desea que se envíen los datos. A continuación, los datos deben enviarse mediante eldatasend
ydataend
métodos descritos en Net :: Cmd. -
bdat (DATOS)
-
bdatlast (DATOS)
-
Utilice el comando de DATOS alternativo “BDAT” de la extensión del servicio de fragmentación de datos definida en RFC1830 para enviar de manera eficiente mensajes MIME grandes.
-
expandir (DIRECCIÓN)
-
Solicitar al servidor que expanda la dirección dada Devuelve una matriz que contiene el texto leído del servidor.
-
verifica la dirección )
-
Comprueba eso
ADDRESS
es una dirección postal legítima.La mayoría de los sitios suelen inhabilitar esta función en la configuración del servicio SMTP. Use la opción “Debug => 1” debajo de new () para ver si está deshabilitada.
-
ayuda ( [ $subject ] )
-
Solicite texto de ayuda del servidor. Devuelve el texto o undef si falla
-
dejar ()
-
Envíe el comando QUIT al servidor SMTP remoto y cierre la conexión del socket.
-
can_inet6 ()
-
Devuelve si podemos usar IPv6.
-
can_ssl ()
-
Devuelve si podemos usar SSL.
DIRECCIONES
Net :: SMTP intenta DWIM con direcciones que se pasan. Por ejemplo, una aplicación puede extraer la línea De: de un correo electrónico y pasarla a mail (). Si bien esto puede funcionar, no se recomienda. La aplicación realmente debería usar un módulo como Mail :: Address para extraer la dirección de correo y pasarla.
Si ExactAddresses
se pasa al constructor, entonces las direcciones deben ser una dirección válida entre comillas rfc2821, aunque Net :: SMTP aceptará la dirección entre corchetes angulares.
funny user@domain WRONG "funny user"@domain RIGHT, recommended <"funny user"@domain> OK
VER TAMBIÉN
Net :: Cmd, IO :: Socket :: SSL
AUTOR
Graham Barr[email protected]>.
Steve Hay[email protected]> ahora mantiene libnet a partir de la versión 1.22_02.
DERECHOS DE AUTOR
Copyright (C) 1995-2004 Graham Barr. Reservados todos los derechos.
Copyright (C) 2013-2016 Steve Hay. Reservados todos los derechos.
LICENCIA
Este módulo es software gratuito; puede redistribuirlo y / o modificarlo bajo los mismos términos que el propio Perl, es decir, bajo los términos de la Licencia Pública General GNU o la Licencia Artística, como se especifica en el LICENCIA expediente.