[Perl] Mail error *

Pagina: 1
Acties:

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Ik kreeg deze fout bij het draaien van een Script...
code:
1
2
3
Software error:

Can't call method "mail" on an undefined value at ../lib/TWiki/Net.pm line 172.

nu kan ik er wel uit op maken dat het een mail error was... dus heb ik (met een SuSE distro) alles wat maar met mail te maken had geinstalleerd... en nog doet het niet...

Weet iemand wat ik verkeerd doe?

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Alstje... alstje... blieft!

Verwijderd

Als je iets van perl weet, is het misschien verstandig om op regel 172 van Net.pm te kijken op welk object de 'mail' methode word aangeroepen. Deze error betekent dat in de scalar waarop de method wordt aangeroepen geen objectreference zit (zelfs helemaal niets). Helaas betekent dit weer dat er elders in de code iets mis is gegaan, en daarmee kan ik je niet helpen zonder de code te hebben.

Probeer uit te vogelen waar in de code dat object wordt aangemaakt en kijk of het lukt. Zo niet, post dan dat stukje code met een beetje context en we zien wel weer verder.

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
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
sub _sendEmailByNetSMTP
{
    my( $from, $toref, $data ) = @_;

    my @to;
    # $to is not a reference then it must be a single email address
    @to = ($toref) unless ref( $toref ); 
    if ( ref( $toref ) =~ /ARRAY/ ) {
    @to = @{$toref};
    }
    return undef unless( scalar @to );
    my $mailhost = &TWiki::Prefs::getPreferencesValue( "SMTPMAILHOST" ) || "mail";
    
    my $smtp = Net::SMTP->new( $mailhost );
    $smtp->mail( $from );                               # Regel 172
    $smtp->to( @to, { SkipBad => 1 } );
    $smtp->data( $data );
    $smtp->dataend();
    
    # I think this has to occur before the $smtp->quit, 
    # otherwise we'll miss the status message for the sending of the mail.
    my $status = ($smtp->ok() ? "" : "ERROR: Can't send mail using Net::SMTP" );

    $smtp->quit();
    return $status;    
}

  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 28-07 15:42

RvdH

Uitvinder van RickRAID

perl -MCPAN -e 'install Net::SMTP'

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op de 1 of andere manier kan hij dat SMTP bestandje niet vinden op het internet... volgens mij iets met ftp... waar kan ik hem downloaden? Dan doe ik dat ff op een anderen computer...

  • Ees
  • Registratie: Juli 2001
  • Laatst online: 29-07 15:00

Ees

Mijn gok is dat $mailhost een ongeldige (niet-bestaande/niet-bereikbare) SMTP server bevat.

Probeer eens (in regel 171):
code:
1
my $smtp = Net::SMTP->new( $mailhost ) or die "Unable to connect to mailserver: $@";

  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 28-07 15:42

RvdH

Uitvinder van RickRAID

Op donderdag 07 februari 2002 12:57 schreef Monstar.nl het volgende:
Op de 1 of andere manier kan hij dat SMTP bestandje niet vinden op het internet... volgens mij iets met ftp... waar kan ik hem downloaden? Dan doe ik dat ff op een anderen computer...
Net::SMTP maakt deel uit van de libnet library, die je kunt downloaden van http://www.cpan.org/authors/id/GBARR/libnet-1.0901.tar.gz. Installeren doe je door 'perl Makefile.PL && make && make test && make install' te typen.

Maar dat zou de CPAN shell (perl -MCPAN -e 'install Net::SMTP') je ook moeten vertellen, heb je CPAN wel goed geconfigureert?

[edit]
Bij nader inzien kon Ees nog wel eens goed gelijk hebben, als je geen Net::SMTP zou hebben zou het script daarover moeten klagen lijkt me..

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Met die code die ik net kreeg, kreeg ik deze error...
code:
1
Unable to connect to mailserver: Net::SMTP: Bad hostname 'mail' at ../lib/TWiki/Net.pm line 172.

Op 172 staat deze code:
code:
1
my $smtp = Net::SMTP->new( $mailhost ) or die "Unable to connect to mailserver: $@";

  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 28-07 15:42

RvdH

Uitvinder van RickRAID

Stel SMTPMAILHOST dan in, in je script?

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Libnet geinstalleerd... nog steeds fout... en ik heb gezocht naar de var SMTPMAILHOST maar niet gevonden...

Moet ik hem soms setten in de shell? met

set SMTPMAILHOST=smtp.domein.nl

Verwijderd

code:
1
my $mailhost = &TWiki::Prefs::getPreferencesValue( "SMTPMAILHOST" ) || "mail";

In deze regel gaat het fout.

Waarschijnlijk moet je ergens in een configuratiefile van het TWiki pakket de SMTPMAILHOST instellen.

Nu wordt namelijk de subroutine 'getPreferencesValue' aangeroepen in Prefs.pm, en die opent waarschijnlijk weer die config-file.

Verwijderd

Ik heb even het TWiki pakket voor je opgezocht en iets heel origineels gedaan. Ik heb in de DOCS gekeken! ;)

en hier staat de configuratie-file uitgelegd. Waarschijnlijk kan je daarin dus die SMTPMAILHOST instellen.

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Had ik ook alang gedaan:)! Ik zocht daar en zag dat ik in TWiki.cfg moest gaan kijken... niets... geen variabele SMTPMAILHOST... sorry... en op de een of andere manier zou hij ook gebruik moeten kunnen maken van sendmail... maar die deed het ook niet...

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Ik kom er echt helemaal niet uit...

Wordt sendmail zo wel goed aangesproken?
/usr/sbin/sendmail -t -oi -oeq

Verwijderd

code:
1
my $mailhost = &TWiki::Prefs::getPreferencesValue( "SMTPMAILHOST" ) || "mail";

Je kan ook deze regel aanpassen en de mailhost erin hardcoden, maar dat is wel een vieze oplossing:
code:
1
my $mailhost = "smtp.domein.nl";

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Hij geeft nu deze fout:
code:
1
Unable to connect to mailserver: Net::SMTP: Bad hostname '****.rug.nl' at ../lib/TWiki/Net.pm line 172.

**** is geheim... sorry

Verwijderd

Hij zegt toch vrij duidelijk wat de error is.
Probeer even uit te vinden of die server wel echt bereikbaar is, want het lijkt nu verder allemaal te werken.

Bij mij werkt het allemaal goed, behalve als ik een onzinnige mailservernaam opgeef (bla.rug.nl ;)) dan krijg ik dezelfde error als jij. Daardoor vermoed ik toch dat het geen SMTP server is, of dat je er vanaf jouw locatie niet bij mag. Het zou me niks verbazen als zo'n uni-server alleen requests accepteert van binnen het eigen netwerk.

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Hmmm ik heb al 3 servers geprobeerd... en ik krijg nu deze fout:
code:
1
2
3
Send Mail Error 
The e-mail could not be delivered. Please notify your TWiki administrator, webmaster@your.company 
ERROR: Can't send mail using Net::SMTP

Verwijderd

Helaas, daar kan ik je niet mee helpen, want dit is een custom TWiki-error en hieraan kan ik dus niet zien wat er ECHT aan de hand is. Probeer er eerst eens achter te komen op welke regel deze error gegenereerd wordt en wat de condities van TWiki zijn om deze error te geven.
Pagina: 1