BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- Perl [wer kann das?] newsletter abmeldungsscript (http://www.black-board.net/thread.php?threadid=16087)


Geschrieben von Pille am 21.02.2004 um 19:41:

  [wer kann das?] newsletter abmeldungsscript

hi,
ist hier jemand in der lage meinen folgenden wunsch erfüllen zu können?
ich bräuchte ein script, das am ende einer email verlinkt wird.
über diesen link soll der user dann auf eine seite kommen, auf der er seine emailadresse eintragen und dann abschicken kann. diese soll dann in einer datei gespeichert werden (am besten .txt - eine adresse pro zeile).

als kleines extra könnte ich mir noch einen kommentar bereich vorstellen. dieser wird dann bei absenden der emailadresse über eben diese an eine vorgegebene adresse gesendet. der kommentar soll jedoch keine pflichteingabe sein.

gruß pille smile



PS: wer einen link zu einem solchen script kennt oder sonst etwas dazu sagen kann - ich bitte darum



Geschrieben von Black Star am 22.02.2004 um 18:26:

 

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
#!/usr/bin/perl -w

use strict;
use CGI;

my $cgi = new CGI;

my $email = $cgi->param('unsubscribe');

print $cgi->header();
print $cgi->start_html(-title=>"unsubscribe");


if ( $email eq "" ) {
	print $cgi->startform(-action => 'unsubscribe.pl', -method => 'POST');
	print "unsubscribe: ".$cgi->textfield(-name=>'unsubscribe',-size=>'50',-maxlength=>'50');
	print $cgi->submit("send").$cgi->reset("reset");
}
else {
	my ($name, $domain) = split(/@/, $email);
	
	if ( $name eq "" || $domain eq "") {
		print "name or domain is empty";
	}
	elsif ( $name =~ /\W/ && ! $name =~ /[\.-_]/ ) {
		print "name contains illegal charakters!";
	}
	elsif ( $domain =~ /\W/ && ! $domain =~ /[\.-_]/ ) {
		print "name contains illegal charakters!";
	}
	elsif ( length($name) < 3 || length($domain) < 6 ) {
		print "This email address is too short";	
	}
	elsif ( ! $domain =~ /[\w\.-_]+\.[\D\D]+/ ) {
		print "invalid domain";
	}
	else {
		print "unsubsribing: $email";
		
		open (FILE,  "./unsubscribe.txt") or die "cannot create/open unsubscribe.txt!";
		prinf FILE $email."\n";
		close FILE;
	}
}


print $cgi->end_html();

Es ist Karnevall und me > 1.0 promille.

Das script laeuft fehlerfrei, aber es sind noch fehler beim haerten des scriptes aufgetreten (length z.B.)

probier mal ein bisschen rum.....

um mails zu verschicken brauchst du das perl::smtp-modul.
Probiermal perldoc smtp.

hab ich persoenlich noch nie benutzt.

EDIT:

Das Modul heisst Net::SMTP
also: 1) installieren 2) sudo -u anyfucker perldoc Net::SMTP (perldoc darf aus Sicherheitsgruenden nicht als root ausgefuehrt werden)


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH