Andreas Raab uploaded a new version of Network to project The Trunk:
http://source.squeak.org/trunk/Network-ar.42.mcz ==================== Summary ==================== Name: Network-ar.42 Author: ar Time: 4 December 2009, 10:19:10 am UUID: bd7d181a-24b5-ac4c-a9a3-28a2b472d669 Ancestors: Network-ul.41 Fixes for SMTPClient: - http://bugs.squeak.org/view.php?id=6843 - http://bugs.squeak.org/view.php?id=6768 - Add an accessor for the localHostName in SMPTClient since Unix systems often return 'localhost.localdomain' or '0.0.0.0' from NetNameResolver localHostName which is not accepted by many MTAs. If client code knows the name from elsewhere (by means of configuration etc.) it can provide it explicitly. =============== Diff against Network-ul.41 =============== Item was changed: ----- Method: SMTPClient>>encodeString: (in category 'utility') ----- encodeString: aString + | str dec out | - | str dec | str := String new: (aString size * 4 / 3 + 3) ceiling. dec := Base64MimeConverter new. dec + mimeStream: (out := WriteStream on: str); - mimeStream: (WriteStream on: str); dataStream: (ReadStream on: aString); + multiLine: false; mimeEncode. + ^out contents! - ^ str! Item was added: + ----- Method: SMTPClient>>localHostName: (in category 'public protocol') ----- + localHostName: aString + "The local host name for purposes of identifying the the server. + If nil, NetNameResolver localHostName will be used." + + ^self connectionInfo at: #localHostName put: aString! Item was added: + ----- Method: SMTPClient>>localHostName (in category 'public protocol') ----- + localHostName + "The local host name for purposes of identifying the the server. + If nil, NetNameResolver localHostName will be used." + + ^self connectionInfo at: #localHostName ifAbsent: [NetNameResolver localHostName]! Item was added: + ----- Method: SMTPClient>>useHelo: (in category 'public protocol') ----- + useHelo: aBoolean + "Tell client to use HELO instead of EHLO. HELO is the old protocol and + an old server may require it instead of EHLO." + + ^self connectionInfo at: #useHelo put: aBoolean! Item was changed: ----- Method: SMTPClient>>login (in category 'private protocol') ----- login self user ifNil: [^self]. + self initiateSession. self sendCommand: 'AUTH LOGIN ' , (self encodeString: self user). [self checkResponse] on: TelnetProtocolError do: [ :ex | ex isCommandUnrecognized ifTrue: [^ self] ifFalse: [ex pass]]. self sendCommand: (self encodeString: self password). self checkResponse! Item was changed: ----- Method: SMTPClient>>initiateSession (in category 'private protocol') ----- initiateSession + "EHLO <SP> <domain> <CRLF>" - "HELO <SP> <domain> <CRLF>" + self sendCommand: (self useHelo ifTrue:['HELO '] ifFalse: ['EHLO ']) , self localHostName. - "self checkResponse." - self sendCommand: 'HELO ' , NetNameResolver localHostName. self checkResponse. ! Item was added: + ----- Method: SMTPClient>>useHelo (in category 'public protocol') ----- + useHelo + "If client use HELO instead of EHLO. HELO is the old protocol and + an old server may require it instead of EHLO." + + ^self connectionInfo at: #useHelo ifAbsent: [false]! Item was removed: - ----- Method: SMTPClient class>>openOnHost:port: (in category 'instance creation') ----- - openOnHost: hostIP port: portNumber - - | client | - client := super openOnHost: hostIP port: portNumber. - client initiateSession. - ^client! |
Free forum by Nabble | Edit this page |