Beat: Formmailer-Projekt

Beitrag lesen

Mein Vorschlag.
Du kannst ja mal das Net::SMTP Teil übernehmen.

Gerne! Da werde ich eine Funktion schreiben, die folgende Module voraussetzt:
Net::SMTP;   # zum Versand
CGI;         # zmu Parsen der Parameter
IO::Socket;  # zum Testen, ob ein Mailerdeamon auf Port 25 verfügbar ist

Alldi Module hatten bisher alle Provider, die ich so kenne.

Was soll denn noch alles so dran sein, utf-8?

Wir dürfen nicht einfach ein charset voraussetzen.
Das Betrifft vor allem usereingaben und Inhalte im XML config file.
Bei perl 5.8 ist utf8 nahtlos integriert. bei perl 5.6 noch nicht.

Mein erster gedanke.
Wie sollte ein user SelfFormmail verwenden

a) er schreibt ein Standalone Script, und verwendet das Modul
b) er verwendet das Modul innerhalb eines grösseren verzweigteren Scripts.

##################################
Skizze wrapperscript für standalone Version
man sieht auch, wie die Modulmethoden als Teil
eines umfassenderen Scripts verwendet werden könnten.

#!perl -w

use strict;
use SelfFormmail;
use CGI;

Im Programmverlauf wird nun getestet, ob

über CGI Daten für Mailbehandlung vorliegen

my $html_mailoutput;

if( exists( $query->param('mailform') )
  or $someotherpar eq 'mailform'
  ){
  $html_mailoutput = some_mailhandlingsub();
}

#... A wie EVA...
print $html_mailoutput;

sub some_mailhandlingsub {
  my $mail=SelfFormmail->new();
  if( $mail->has_input() ){
    if( $mail->spamtest() ){
      return $mail->nospammessage();
    }
    elsif( $mail->invaliddata() ){
      return $mail->updateform();
    }
    else{
      $mail->send or
          return $mail->fatalerror;
        # $mail->send('smtp'); default ?
        # $mail->send('sendmail');
      # $mail->testfileprint;
      # Gib eine Kontrollausgabe aus.
      return  $mail->output_archive();
    }
  }
  else{ return $mail->newform() }
}

##############################

Die API soll für den Anwender im Programm so geradlinig wie möglich sein.
Die API soll aber auch einige Testmethoden zulassen.

$mail->testfileprint;

Mail in ein File umleiten statt ausgeben (debugging)

$mail->resetspamlist;

selbstredend, gerade bei tests.

mfg Beat

--

><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
Der Valigator leibt diese Fische