Mail::IMAPClient via SSL

G

Greg G

I'm trying to get Mail::IMAPClient to work via SSL. I'm running into a
problem. Here's the output:

# ./imap_test.pl
SSL OK? 1
SSL says: * OK mailtest Sendmail Server IMAP4rev1
(2.1.5/smserver-2-1-5-build-1174)

Using Mail::IMAPClient version 2.2.9 and perl version 5.8.6 (5.008006)
'0' '' |1|
Set State : 1
Sending literal string in two parts: 1 Login "(e-mail address removed)" {6}

then: abcdef

Sending: 1 Login "XXXXXX" {6}

Sent 38 bytes
Can't call method "can_read" on an undefined value at
/usr/local/lib/perl5/site_perl/5.8.6/Mail/IMAPClient.pm line 1583.
#
#
then: abcdef

Sending: 1 Login "XXXXXX" {6}

Sent 38 bytes
Can't call method "can_read" on an undefined value at
/usr/local/lib/perl5/site_perl/5.8.6/Mail/IMAPClient.pm line 1583.
#
---------------------------
Here's the code:

-------------------------
#!/usr/local/bin/perl -w

use IO::Socket::SSL;
use Mail::IMAPClient;


my $ssl = IO::Socket::SSL->new (Proto=>'tcp',
#SSL_verify_mod=>0x00,
PeerAddr=>"mailtest.mydomain.net",
PeerPort=>993);

print "SSL OK? " . (defined $ssl) . "\n";

print "SSL says: " . <$ssl> . "\n";

$imap = Mail::IMAPClient->new(Server => "mailtest.mydomain.net",
Socket => $ssl,
Timeout=>5,
User => "ggtest103z\@mydomain.net",
Password => "abcdef",
Debug => 1,
);


print STDERR " \'$@\' \'$!\' |" . (defined $imap) . "|\n";

$imap->State ($imap->Connected);
print "Set State : " . $imap->State . "\n";
$imap->login();
print "Logged in $!\n";

exit 0;

--------------------

Any idea what's happening here? I've tested the mail server and it
works fine via SSL.

Thanks.

-Greg G
 
G

Greg G

Tad said:
^ ^ ^ ^

Single quotes are not meta in a double quoted string, there is
no need to backslash them.

My experience is that if I don't escape the single-quotes, my
variables don't get printed.
Outputting the return value from defined() is a strange thing
to do. What do you expect to be printed when it returns a
true value? What do you expect to be printed when it returns a
false value?

I expect to get a "1" if $imap is defined and nothing if it's not.
Either way, this line has no effect on my code falling down.

-Greg G
 
T

Tad McClellan

Greg G said:
My experience is that if I don't escape the single-quotes, my
variables don't get printed.


You have entered the Twilight Zone then, as that cannot happen
unless there is something else going on that we've not been shown.

If you can reproduce a situation where that occurs, then please
post it here and we can help you understand whatever misunderstanding
it is that you are operating under.

I expect to get a "1" if $imap is defined


You shouldn't expect that, as it can change at any perl revision.

defined() is documented to return only "a true value", not any
particular true value, so it may start returning 100 or 'is defined'
in the future.

Relying on undocumented features is not a good programming practice.

Either way, this line has no effect on my code falling down.


Right, I did not say that it did.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,534
Members
45,008
Latest member
Rahul737

Latest Threads

Top