CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 1 of 1

Threaded View

  1. #1
    Join Date
    Feb 2011
    Posts
    2

    turn on debug mode

    In below perl code , how can I turn on debug for sendSMTP ??
    Any idea ???What is the sue of var $debug ???

    Code:
    #!/usr/bin/perl -w
    
    use Socket;
    use strict;
    
    my($mailTo)     = '[email protected]';
    my($mailServer) = 'mail.hgcbroadband.com';
    
    my($mailFrom)   = '[email protected]';
    my($realName)   = "chuikingman";
    my($subject)    = 'Test send_mail';
    my($body)       = "Test Line One.\nTest Line Two.\n";
    
    $main::SIG{'INT'} = 'closeSocket';
    
    my($proto)      = getprotobyname("tcp")        || 6;
    my($port)       = getservbyname("SMTP", "tcp") || 25;
    my($serverAddr) = (gethostbyname($mailServer))[4];
    
    die('gethostbyname failed.') unless (defined($serverAddr));
    
    socket(SMTP, AF_INET(), SOCK_STREAM(), $proto)
        or die("socket: $!");
    
     my $packFormat;
    $packFormat = 'S n a4 x8';   # Windows 95, SunOs 4.1+
    #$packFormat = 'S n c4 x8';   # SunOs 5.4+ (Solaris 2)
    
    connect(SMTP, pack($packFormat, AF_INET(), $port, $serverAddr))
        or die("connect: $!");
    
    select(SMTP); $| = 1; select(STDOUT);    # use unbuffered i/o.
    
    {
        my($inpBuf) = '';
    
        recv(SMTP, $inpBuf, 200, 0);
        recv(SMTP, $inpBuf, 200, 0);
    }
    my $debug = 1 ;
    sendSMTP(1, "HELO\n");
    sendSMTP(1, "MAIL From: <$mailFrom>\n");
    sendSMTP(1, "RCPT To: <$mailTo>\n");
    sendSMTP(1, "DATA\n");
    
    send(SMTP, "From: $realName\n", 0);
    send(SMTP, "Subject: $subject\n", 0);
    send(SMTP, $body, 0);
    
    sendSMTP(1, "\r\n.\r\n");
    sendSMTP(1, "QUIT\n");
    
    close(SMTP);
    
    sub closeSocket {     # close smtp socket on error
        close(SMTP);
        die("SMTP socket closed due to SIGINT\n");
    }
    
    sub sendSMTP {
        my($debug)  = shift;
        #my($debug)  = 1;
        my($buffer) = @_;
    
        print STDERR ("> $buffer") if $debug;
        send(SMTP, $buffer, 0);
    
        recv(SMTP, $buffer, 200, 0);
        print STDERR ("< $buffer") if $debug;
    
        return( (split(/ /, $buffer))[0] );
    }
    Last edited by PeejAvery; March 28th, 2011 at 09:21 AM. Reason: Fixed code tags

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured