早些时候尝试过类似的问题,但我无法取得进展。所以我做了新的测试,这是一个新问题:
我在同一台机器上进行了全新的PHARO 1.4和GEMSTONE 3.0.1.2安装。 (Linux CENTOS)。使用最新版本的Gemtools( 1.0 beta 87 ),使用最新版本的玻璃,在Pharo中加载海边 3.0 ,在Gemstone中加载版本 3.0.7.1 工作区( 1.0 beta 8.7.4 )。
我打开工作区并评估:
(WAEmailMessage
from: (WAEmailAddress address: 'xx@aa.com' username: 'fromMe')
to: (WAEmailAddress address: 'shyam@localhost' username: 'shyam')
subject: 'Email Test')
body: 'This is a Test Email sent';
send.
(顺便说一句,由于Gemstone中的默认邮件主机是“mailhost”,我将以下行添加到 / etc / hosts 文件127.0.0.1 localhost mailhost
)。
在Pharo上,正确地发送和接收消息,而在Gemstone中,我得到了消息
a MessageNotUnderstood occurred (error 2010), a UndefinedObject does not understand #'isEmpty'
,方法
readSmtpResult
| result firstChar |
[self readWillNotBlockWithin: 5000]
whileFalse: [GsFile stderr log: 'Waiting for server to write...'].
result := self readString: 500.
result isEmpty =========================> HERE result is "nil".
ifTrue:
[self log: 'Empty result'.
^false].
原因是result
返回nil
。
我在MAC OS X上尝试了类似的结果,而是在上面的行中进入循环。
使用tcpdump -X -i lo tcp port 25
和WireShark,我注意到,对于GEMSTONE,我看到没有活动,而数据包正确地交换为PHARO。
显然,我在两个不同的系统上做错了是非常错误的。
有什么想法吗?
由于
希亚姆。
答案 0 :(得分:1)
result
为nil
,因为#readString:
已返回nil
。
似乎对等方没有发送任何数据。正如您已经跟踪过端口25上没有活动,您确定SMTP参数是否正确?
Seaside-Email包含可用于配置SMTP服务器的代码。
鉴于您拥有Seaside应用程序seasideApp
,您可以执行以下操作:
seasideApp configuration
addParent: WAEmailConfiguration instance.
seasideApp
preferenceAt: #smtpServer put: 'your.smtp.host';
preferenceAt: #smtpPort put: 25;
preferenceAt: #smtpUsername put: 'your.smtp.username.or.nil.if.unecessary';
preferenceAt: #smtpUsername put: 'your.smtp.password.or.nil.if.unecessary';
yourself.
请注意#smtpServer
和smtpPort
必须按照描述的方式配置,因为它们在GRPlatform>>#seasideDeliverEmailMessage:
的GemStone版本中使用。我选择故意不使用GemStone默认值。
此外,以这种方式设置SMTP参数是跨平台工作的;如果没有,请直接与我联系。