/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Hvad bruger I til at sende mail?
Fra : Peter Makholm


Dato : 11-04-02 15:06

Hvordan sender I mail gennem perl?

Mail::Sender
Mail::Mailer fra MailTools
Net::SMPT
open(FH,"|/usr/lib/sendmail") && print FH $mail;


Er der ikke en ren perl-løsning der er ækvivalent med den sidste uden
at jeg selv skal til at parse headere. De tre første ser ud til at
antage at headerne er tilgængelig i en noget mere struktureret facon.

--
Emacs er det eneste moderne styresystem der ikke er multitrådet.

 
 
Thorbjørn Ravn Ander~ (11-04-2002)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 11-04-02 17:15

Peter Makholm <peter@makholm.net> writes:

> open(FH,"|/usr/lib/sendmail") && print FH $mail;
>
>
> Er der ikke en ren perl-løsning der er ækvivalent med den sidste uden
> at jeg selv skal til at parse headere. De tre første ser ud til at
> antage at headerne er tilgængelig i en noget mere struktureret facon.

Hvilke yderligere krav har du som ovenstående ikke opfylder?

--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Peter Makholm (12-04-2002)
Kommentar
Fra : Peter Makholm


Dato : 12-04-02 11:34

thunderbear@bigfoot.com (Thorbjørn Ravn Andersen) writes:

> Hvilke yderligere krav har du som ovenstående ikke opfylder?

At det ikke er en ren perl-løsning. Jeg vil ikke antage at jeg har
andet tilgængeligt end perl og eventuelle perl-moduler. (Hvilket næppe
kan kaldes et yderligere krav, der jeg allerede bad om en perl-only
løsning.)

--
Emacs er det eneste moderne styresystem der ikke er multitrådet.

Thorbjørn Ravn Ander~ (12-04-2002)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 12-04-02 12:40

Peter Makholm <peter@makholm.net> writes:

> > Hvilke yderligere krav har du som ovenstående ikke opfylder?
>
> At det ikke er en ren perl-løsning. Jeg vil ikke antage at jeg har
> andet tilgængeligt end perl og eventuelle perl-moduler. (Hvilket næppe
> kan kaldes et yderligere krav, der jeg allerede bad om en perl-only
> løsning.)

Hvis du har genereret header+body af det brev du vil sende, saa er det
ikke meget andet end at snakke SMTP med en server paa port 25 (det vil
du vel godt acceptere).

Et hurtigt kig paa CPAN siger at Mail::Sendmail goer dette. Jeg har
ikke brugt modulet.

NB: Ved at kalde sendmail slipper du selv for at haandtere hvis
mailserveren ikke svarer af den ene eller anden grund. Det plejer jeg
at foretraekke.

--
Thorbjørn Ravn Andersen
http://homepage.mac.com/ravn

Lars Kim Lund (12-04-2002)
Kommentar
Fra : Lars Kim Lund


Dato : 12-04-02 14:43

Hej thunderbear@bigfoot.com (Thorbjørn Ravn Andersen)

>Hvis du har genereret header+body af det brev du vil sende, saa er det
>ikke meget andet end at snakke SMTP med en server paa port 25 (det vil
>du vel godt acceptere).
>
>Et hurtigt kig paa CPAN siger at Mail::Sendmail goer dette. Jeg har
>ikke brugt modulet.

Den smule mail jeg bruger fra perl går via SMTP modulet. Det fungerer
fint.

--
Lars Kim Lund
http://www.net-faq.dk/

Peter J. Acklam (15-04-2002)
Kommentar
Fra : Peter J. Acklam


Dato : 15-04-02 08:05

Peter Makholm <peter@makholm.net> wrote:

> Hvordan sender I mail gennem perl?
>
> Mail::Sender
> Mail::Mailer fra MailTools
> Net::SMPT
> open(FH,"|/usr/lib/sendmail") && print FH $mail;
>
> Er der ikke en ren perl-løsning der er ækvivalent med den sidste
> uden at jeg selv skal til at parse headere. De tre første ser ud
> til at antage at headerne er tilgængelig i en noget mere
> struktureret facon.

Du trenger vel ikke å parse headere for å sende mail. Når du
sender mail så er det jo du som bestemmer hva headerene skal være.
Forøvrig foretrekker jeg å bruke Mail::Mailer for å sende mail.

Peter

Nezar Nielsen (19-04-2002)
Kommentar
Fra : Nezar Nielsen


Dato : 19-04-02 22:42

"Peter Makholm" <peter@makholm.net> wrote in message
news:878z7u5nzk.fsf@xyzzy.adsl.dk...
> open(FH,"|/usr/lib/sendmail") && print FH $mail;
>
>
> Er der ikke en ren perl-løsning der er ækvivalent med den sidste uden
> at jeg selv skal til at parse headere. De tre første ser ud til at
> antage at headerne er tilgængelig i en noget mere struktureret facon.

Prøv at kigge på MIME::Lite, den håndterer encoding, attachments,
multiparts, samtidigt med at den kan finde ud af at sende gennem forskellige
interfaces (sendmail, SMTP (og så læste jeg ikke mere på mansiden)).

--
Mvh. Nezar Nielsen,

Nano - Advanced Simplicity
http://www.nano.dk




Ask Bjoern Hansen (23-04-2002)
Kommentar
Fra : Ask Bjoern Hansen


Dato : 23-04-02 04:47

Peter Makholm <peter@makholm.net> writes:

> Hvordan sender I mail gennem perl?

open (MAIL, "|/var/qmail/bin/qmail-inject") or ...

Hvis det skal gaa hurtigere kan du snakke med qmail-queue direkte[1].



Alternativt Net::SMTP. Mail::Sender kan ikke saette envelope headers,
hvilket er urimeligt ubrugeligt.

[...]
> Er der ikke en ren perl-løsning der er ækvivalent med den sidste uden
> at jeg selv skal til at parse headere. De tre første ser ud til at
> antage at headerne er tilgængelig i en noget mere struktureret facon.

Eh, hvad er det som du proever at undgaa?


- ask


[1] fra qpsmtpd - http://develooper.com/code/qpsmtpd/
[...]
# these bits inspired by Peter Samuels "qmail-queue wrapper"
pipe(MESSAGE_READER, MESSAGE_WRITER) or fault("Could not create message pipe"), exit;
pipe(ENVELOPE_READER, ENVELOPE_WRITER) or fault("Could not create envelope pipe"), exit;

my $child = fork();

not defined $child and fault(451, "Could not fork"), exit;

if ($child) {
# Parent
my $oldfh = select(MESSAGE_WRITER); $| = 1;
select(ENVELOPE_WRITER); $| = 1;
select($oldfh);

close MESSAGE_READER or fault("close msg reader fault"),exit;
close ENVELOPE_READER or fault("close envelope reader fault"), exit;
print MESSAGE_WRITER "Received: from $state{remote_info} (HELO $state{hello_host}) ($state{remote_ip})\n";
print MESSAGE_WRITER " by $config{me} (qpsmtpd/$QPsmtpd::VERSION) with SMTP; ", scalar gmtime, " -0000\n";
print MESSAGE_WRITER $buffer;
close MESSAGE_WRITER;

my @rcpt = map { "T" . $_->address } @{$state{transaction}->{rcpt}};
my $from = "F".($state{transaction}->{from}->address|| "" );
print ENVELOPE_WRITER "$from\0", join("\0",@rcpt), "\0\0"
or respond(451,"Could not print addresses to queue"),exit;

close ENVELOPE_WRITER;
waitpid($child, 0);
my $exit_code = $? >> 8;
$exit_code and respond(451, "Unable to queue message ($exit_code)"), exit;
respond(250, "Message queued; it better be worth it.");
}
elsif (defined $child) {
# Child
close MESSAGE_WRITER or die "could not close message writer in parent";
close ENVELOPE_WRITER or die "could not close envelope writer in parent";

open(STDIN, "<&MESSAGE_READER") or die "b1";
open(STDOUT, "<&ENVELOPE_READER") or die "b2";

unless (exec '/var/qmail/bin/qmail-queue') {
die "should never be here!";
}
}
[...]

--
ask bjoern hansen, http://ask.netcetera.dk/ !try; do();


Peter Makholm (23-04-2002)
Kommentar
Fra : Peter Makholm


Dato : 23-04-02 08:04

Ask Bjoern Hansen <ask@netcetera.dk> writes:

> Eh, hvad er det som du proever at undgaa?

Jeg vil gerne undgå at dikterer hvilken MTA folk bruger og jeg vil
gerne undgå selv at skulle håndterer To-, Cc- og Bcc-headere.

Jeg må nok bare satse på at alle fornuftige MTA'er implementerer en
fornuftig sendmail-wrapper og så bruge den.

--
Emacs er det eneste moderne styresystem der ikke er multitrådet.

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste