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\";}
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...
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.