2

之前尝试过类似的问题,但我无法取得进展。所以我做了新的测试,这是新的问题:

我在同一台机器上全新安装了 PHARO 1.4 和 GEMSTONE 3.0.1.2。(Linux CENTOS)。使用最新版本的 Gemtools ( 1.0 beta 87 ) 和最新版本的玻璃工作区 ( 1.0 beta 8.7.4 ) 加载Pharo 中的seaside 3.0和 Gemstone 中的3.0.7.1版本。

我打开工作区并评估:

(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 时,我没有看到任何活动。

显然,我在两个不同的系统上做错了事。

任何想法 ?

谢谢

夏姆。

4

1 回答 1

1

resultnil因为#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 必须按照描述的方式进行配置,因为它们用于 GemStone 版本的GRPlatform>>#seasideDeliverEmailMessage:. 我选择故意不使用 GemStone 默认值。

此外,以这种方式设置 SMTP 参数可以跨平台工作;如果没有,请直接与我联系。

于 2013-03-05T12:42:35.720 回答