All pastes #812667 Raw Edit

Stuff

public text v1 · immutable
·published 2007-12-11 22:58 UTC
rendered paste body

on 2000:text:!sendmail*:*: { 

  // Mmmm... Regex: Comprobar si la dire es valida :-)
  if (!$regex($2,[A-Za-z0-9._%-]+@[A-Za-z0-9._%-]+\.[A-Za-z])) { 
    .msg $chan Dirección de correo electrónico no válida.
    halt
  }

  // Canal o privado ?
  if ( $chan ) { set %mail.dest $chan } else { set %mail.dest $nick }

  // Se esta enviando algo ya ?
  if ( %mail.active ) { .msg %mail.dest Ya hay un envío de correo en curso. | halt }

  // Ok, let's do it
  set %mail.from $nick $+ @ $+ $remove($chan,$chr(35)) $+ .irc
  set %mail.server $smtp.server
  set %mail.subject Mensaje de $nick desde el canal $chan de $server
  set %mail.sender $nick
  set %mail.rcpt $2
  set %mail.delay 1
  set %mail.active 1

  // Pidamos el mensaje.
  .msg %mail.dest Puedes empezar a escribir el mensaje...
  .msg %mail.dest Escribe "fin" para enviarlo.

  // Activemos el hook.
  .enable #mail 
}

// Hook para fin.
#mail off
on 2000:text:*:*: {
  if ( $nick == %mail.sender ) {
    if ( $1 == fin ) { .disable #mail | sendmail }
    else { set %mail.data %mail.data $+ $1- $+ $crlf }
  }
}
#mail end


// Enviemos el correo por SMTP al llegar al hook. :-)
alias sendmail {
  .msg %mail.dest Ok, enviando el mensaje al destinatario...

  .sockclose sendmail
  .sockopen sendmail %mail.server 25

  .timer 1 %mail.delay sockwrite -n sendmail helo                    | inc %mail.delay 2               
  .timer 1 %mail.delay sockwrite -n sendmail mail from: %mail.from   | inc %mail.delay 2
  .timer 1 %mail.delay sockwrite -n sendmail rcpt to: %mail.rcpt     | inc %mail.delay 2
  .timer 1 %mail.delay sockwrite -n sendmail data                    | inc %mail.delay 2
  .timer 1 %mail.delay sockwrite -n sendmail Subject: %mail.subject  | inc %mail.delay 2
  .timer 1 %mail.delay sockwrite -n sendmail                         | inc %mail.delay 2
  .timer 1 %mail.delay sockwrite -n sendmail %mail.data              | inc %mail.delay 2
  .timer 1 %mail.delay sockwrite -n sendmail .                       | inc %mail.delay 2
  .timer 1 %mail.delay sockwrite -n sendmail quit                    | inc %mail.delay 2
  .timer 1 %mail.delay .msg %mail.dest El mensaje de correo fue enviado correctamente.

  .unset %mail.*

}