Отправка почты в seaside+Gemstone "сообщение: NotUnderstood произошло (ошибка 2010), UndefinedObject не понимает #'isEmpty' "
Пробовал с похожим вопросом ранее, но не смог продвинуться. Итак, я сделал новые тесты и вот новый вопрос:
Я сделал совершенно новую установку PHARO 1.4 и GEMSTONE 3.0.1.2 на той же машине. (Linux CENTOS). Загружен приморский 3.0 в Pharo и версия 3.0.7.1 в Gemstone с использованием последней версии Gemtools (1.0 beta 87) с последней версией рабочего пространства Glass (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.
Очевидно, я делаю что-то ужасно неправильное, чтобы ошибиться в двух разных системах.
Любая идея?
Спасибо
Shyam.
1 ответ
result
является nil
так как #readString:
возвращенный nil
,
Кажется, что узел не отправляет никаких данных. Как вы уже выяснили, что на порту 25 не происходит никаких действий, вы уверены, что параметры SMTP верны?
Seaside-Email содержит код, который вы можете использовать для настройки вашего SMTP-сервера. Учитывая, что у вас есть заявление на море 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 для работы в кроссплатформенном режиме; Если это не так, пожалуйста, свяжитесь со мной напрямую.