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. Si HOST no se da, entonces se puede pasar como el Host opción que se describe a continuación. Si no se da ninguno, entonces el SMTP_Hosts especificado en Net::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étodo recipient 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 y Envelope 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 el recipient 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 Encode encode() 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 el datasend y dataend 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.