Avatar billede bobbedude Nybegynder
11. juni 2001 - 10:48 Der er 2 kommentarer og
1 løsning

Hvilket program

Hvilke programmer kan man bruge til at sende cgi formail med på en nt 4 web server ? Gerne flere foreslag.
Avatar billede thomasledet Nybegynder
11. juni 2001 - 12:05 #1
Du kan skrive din egen socket-handler... den virker på alle OS... ellers brug blat som ekstern mailer...

-->
sub sendmail {
    use Socket;
    my ($from, $reply, $to, $smtp, $subject, $message) = @_;
    my ($fromaddr) = $from;
    my ($replyaddr) = $reply;
    $to =~ s/[ \\t]+/, /g;
    $fromaddr =~ s/.*<([^\\s]*?)>/$1/;
    $replyaddr =~ s/.*<([^\\s]*?)>/$1/;
    $replyaddr =~ s/^([^\\s]+).*/$1/;
    $message =~ s/^\\./\\.\\./gm;
    $message =~ s/\\r\\n/\\n/g;
    $message =~ s/\\n/\\r\\n/g;
    $smtp =~ s/^\\s+//g;
    $smtp =~ s/\\s+$//g;
    if (!$to) { return -8; }
    my($proto) = (getprotobyname(\'tcp\'))[2];
    my($port) = (getservbyname(\'smtp\', \'tcp\'))[2];
    my($smtpaddr) = ($smtp =~/^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$/)? pack(\'C4\',$1,$2,$3,$4): (gethostbyname($smtp))[4];
    my @days=(\'Sun\',\'Mon\',\'Tue\',\'Wed\',\'Thu\',\'Fri\',\'Sat\');
    my @months=(\'Jan\',\'Feb\',\'Mar\',\'April\',\'May\',\'Jun\',\'Jul\',\'Aug\',\'Sep\',\'Oct\',\'Nov\',\'Dec\');
    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
    if ($hour<10){$hour=\"0$hour\";}if ($min<10){$min=\"0$min\";}
    if ($sec<10){$sec=\"0$sec\";}
    my ($time)=qq½$days[$wday], $mday $months[$mon] $year $hour:$min:$sec +0100½;
    if (!defined($smtpaddr)){return -1;}
    if (!socket(S, AF_INET, SOCK_STREAM, $proto)){return -2;}
    if (!connect(S, pack(\'Sna4x8\', AF_INET, $port, $smtpaddr))){return -3;}
    my($oldfh) = select(S); $| = 1; select($oldfh);
    $_=<S>;if (/^[45]/){close S;return -4;}
    print S \"helo localhost\\r\\n\";
    $_=<S>;if (/^[45]/){close S; return -5;}
    print S \"mail from: <$fromaddr>\\r\\n\";
    $_ = <S>; if (/^[45]/) { close S; return -5; }

    foreach (split(/, /, $to)){print S \"rcpt to: <$_>\\r\\n\";$_=<S>;if (/^[45]/){close S; return -6;}}

    print S \"data\\r\\n\";$_=<S>;if (/^[45]/){close S;return -5;}
    print S \"To: $to\\r\\n\";
    print S \"From: $from\\r\\n\";
    print S \"Reply-to: $replyaddr\\r\\n\" if $replyaddr;
    print S \"Subject: $subject\\r\\n\";
    print S \"Date: $time\\r\\n\";
    print S \"\\r\\n\\r\\n\";
    print S $message;
    print S \"\\r\\n.\\r\\n\";
    $_=<S>; if (/^[45]/) { close S; return -7; }
    print S \"quit\\r\\n\";
    $_=<S>;
    close S;
    return 1;
}

<--

Funktionen kaldes med de forskellige værdier som parametre og returnerer 1, hvis alt gik godt...

eks.

if (sendmail(\'dude@somewhere.raw\',\'\',\'guy@somewhere.raw\',\'mail.somewhere.raw\',\'Hi there!\',\'Yo dude, hows it going?\') == 1) {print \"Message sent!\\n\";}
Avatar billede thomasledet Nybegynder
11. juni 2001 - 12:07 #2
funktionen bruger socket til håndtering af ting og sager, så der er derfor vigtigt, at denne ikke er blevet fjernet (følger med som standard, man man installerer perl)

der kræves ingen eksterne programmer til denne sendmail...
Avatar billede bobbedude Nybegynder
12. juni 2001 - 10:21 #3
Her var det jeg ledte efter http://www.geocel.com/products.htm
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester