Avatar billede holck Nybegynder
15. juni 2001 - 09:19 Der er 1 kommentar og
1 løsning

Formmail.cgi / sendmail / og windows server

Findes \"sendmail\" til windows, jeg har kun fundet den til UNIX.
Jeg anvender \"FormMail.pl\" i undervisning og bruger et asp hotel.
Er der en anden løsning cgi mæssigt, ( selvfølgeligt kan jeg bruge et \"form2mail.asp\", men det er jo ikke cgi ( perl) )
Avatar billede kimrosgaard Nybegynder
15. juni 2001 - 09:43 #1
Avatar billede thomasledet Nybegynder
15. juni 2001 - 10:55 #2
Brug denne funktion.... så behøver du ikke sendmail....

-->

sub sendmail {

use Socket;

my ($fromaddr, $replyaddr, $to, $smtp, $subject, $message) = @_;

$to =~ s/[ \\t]+/, /g;
$fromaddr =~ s/.*<([^\\s]*?)>/$1/;
$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];

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\\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;
}
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
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

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