Schrift
[thread]4443[/thread]

Mailsenden Problem: mail senden via smtp

Leser: 1


<< >> 7 Einträge, 1 Seite
markusin
 2006-11-13 00:01
#37400 #37400
User since
2006-11-12
3 Artikel
BenutzerIn
[default_avatar]
Hallo allerseits,

ich moechte gerne Bugzilla installieren, und als mta ms exchange verwenden. Nun war ich nicht im Stande ueber diesem Tool eine mail zu versenden und hab mir deswegen ein kleines Programm in perl geschrieben, in welchem ich via smtp mittels Authentifizierung eine mail verschicken moechte (via ms exchange).

Mein Programm sieht wie folgt aus:
Code: (dl )
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
#!/usr/bin/perl -w

use Mail::Mailer;
use MIME::Base64;
use Authen::SASL;

my $from = "markus\@empfaenger.net";
my $to = "markus\@sender.net";
my $subject = "markus perl probe";
my $text = "kleine perl probe";

my $args;

my $type = "smtp";
my $server = "exchange.server";
my $smtpuser = "Markus";
my $smtppasswd = "password";

push @args, Server => $server;
push @args, Auth => [$smtpuser, $smtppasswd];

my $mailer = Mail::Mailer->new($type, @args) or die "Kann kein neues Mail::Mailer-Objekt erzeugen: $!\n";

$mailer->open({From => $from, To => $to, Subject => $subject}) or die "Kann kein neues Mail::Mailer-Objekt oeffnen: $!\n";
print $mailer $text;
$mailer->close;


Beim Ausfuehren bekomm ich folgenden Fehler:
vajolet ~ # /home/markusin/scripts/mymailsender.pl
Invalid argument at /usr/lib/perl5/vendor_perl/5.8.8/Mail/Mailer.pm line 269.


wobei dies der folgende code ist in Mailer.pm
Code: (dl )
1
2
3
4
5
    268     # Fork and start a mailer
269 (defined($exe) && open($self,"|-"))
270 || $self->exec($exe, $args, \@to)
271 || die $!;


Ich hoffe meine Frage ist eine Berechtigte, da ich unter anderem auch Newbie in Perl bin und deswegen bei diesem Problem auf Hilfe angewiesen bin.

Vielen Dank im voraus

Markus\n\n

<!--EDIT|markusin|1163368940-->
ptk
 2006-11-13 22:05
#37401 #37401
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Hast du sendmail installiert?

EDIT: Unsinn, du möchtest ja SMTP verwenden. Aber irgendwie läuft er in den Teil herein, wo normalerweise sendmail aufgerufen wird. Vielleicht ist die SMTP-Verbindung fehlgeschlagen und Mail::Mailer versucht einen weiteren Fallback?\n\n

<!--EDIT|ptk|1163448397-->
markusin
 2006-11-14 09:25
#37402 #37402
User since
2006-11-12
3 Artikel
BenutzerIn
[default_avatar]
Hi.

du meinst also einen weiteren Fallback. Nur wie kann ich erkennen, woran das Problem liegt? Im log vom exchange server war nix zu finden. Und auf meiner Seite ist das einzige, was ich sehe, diese Fehlermeldung.
Markus
ptk
 2006-11-14 21:02
#37403 #37403
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Wenn du kein Log hast, dann vielleicht einen tcpdump laufen lassen, damit du siehst, was passiert? Oder alternativ strace oder den Perl-Debugger...
markusin
 2006-11-16 21:20
#37404 #37404
User since
2006-11-12
3 Artikel
BenutzerIn
[default_avatar]
Ich habs debuggen lassen und der debugger liefert mir folgende Ausgabe:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
main::(scripts/mymailsender.pl:20):
20: push @args, Server => $server;
DB<1> n
main::(scripts/mymailsender.pl:21):
21: push @args, Auth => [$smtpuser, $smtppasswd];
DB<1> n
main::(scripts/mymailsender.pl:22):
22: push @args, Debug => 1;
DB<1> n
main::(scripts/mymailsender.pl:24):
24: my $mailer = Mail::Mailer->new($type, @args) or die "Kann kein neues Mail::Mailer-Objekt erzeugen: $!\n";
DB<1> n
main::(scripts/mymailsender.pl:27):
27: $mailer->open({From => $from, To => $to, Subject => $subject}) or die "Kann kein neues Mail::Mailer-Objekt oeffnen: $!\n";
DB<1> n
Invalid argument at /usr/lib/perl5/vendor_perl/5.8.8/Mail/Mailer.pm line 269.
at /usr/lib/perl5/vendor_perl/5.8.8/Mail/Mailer.pm line 269
Mail::Mailer::open('Mail::Mailer::smtp=GLOB(0x83859c0)', 'HASH(0x82e01ec)') called at scripts/mymailsender.pl line 27
Debugged program terminated. Use q to quit or R to restart,
use o inhibit_exit to avoid stopping after program termination,
h q, h R or h o to get additional info.
DB<1>


Scheinbar pass ihm meine Argumente nicht, die ich Ihm uebergebe.

Kannst du mehr erkennen als ich?

Markus
ptk
 2006-11-16 23:45
#37405 #37405
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Du solltest mit dem Debugger auch ein bisschen in die Tiefe gehen (s statt n). Ich habe es auch versucht; mein SMTP-Server versteht kein AUTH und verhält sich genau wie bei dir mit einer nichtsagenden Fehlermeldung.

Zum Beispiel sieht man in Mail::Mailer::smtp, dass bei einer fehlgeschlagenen Authentifizierung nichts gemeldet wird:
Code: (dl )
1
2
3
4
if ($opt{Auth}) {
$smtp->auth(@{$opt{Auth}})
or return undef;
}

Folgende Zeilen sehe ich im Debugger:
Code: (dl )
1
2
3
4
5
6
7
  DB<12> 
Net::SMTP::auth(/usr/local/lib/perl5/site_perl/5.8.8/Net/SMTP.pm:117):
117: my $mechanisms = $self->supports('AUTH',500,["Command unknown: 'AUTH'"]);
DB<12>
Net::SMTP::auth(/usr/local/lib/perl5/site_perl/5.8.8/Net/SMTP.pm:118):
118: return unless defined $mechanisms;
DB<12>


Nur ein return, aber keine weitere Diagnosemöglichkeiten, weder mit $! oder einer anderen Error-Variable, und auch keine Warnung auf STDERR. Ich glaube, das reicht für einen Bugreport auf rt.cpan.org. Man sollte wenigstens rauskriegen können, warum etwas schief geht, ein einfaches "Died" reicht nicht.
renee
 2006-11-17 15:32
#37406 #37406
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du könntest vielleicht auch mal CPAN:Mail::Sender testen. Ich habe damit sehr gute Erfahrungen gemacht...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 7 Einträge, 1 Seite



View all threads created 2006-11-13 00:01.