|
30.10.2005, 19:35 | #1 |
Участник
|
Отправка почты: ошибка с SysInetMailer
Привет всем.
Пытаюсь автоматом отправить письмо из Аксапты 2.5 с вложением. Конфигурация у меня одна - outlook. Но надо бы еще и для outlook express чтоб работало. Нашел пример с SysInetMailer здесь, но у меня в методе logon вылазит ошибка. (логон постоянно unsuccessful) Ошибка почтовой службы: Рег. имя по умолчанию не найдено. Пользователь не может войти в Систему через диал. окно регистрации. Сообщение не послано. Как это исправить? Заранее спасибо. Также нашел пример отправки через Outlook - но при отправке вылазит окошко - он хочет подтверждения отправки. На mazzy.ru дается ссылка, http://forum.mazzy.ru/index.php?sho...findpost&p=1666 по которой вроде решили это - там файлик приаттачен, но уже этой страницы нет. Сергей, не мог бы ты выложить сюда этот архив? Спасибо. Последний раз редактировалось axapta25Dev; 30.10.2005 в 19:44. |
|
31.10.2005, 14:13 | #2 |
Участник
|
Без привязки к почтовой программе:
Код: #Mapi Mapi m = new Mapi(); MapiMessage msg = new MapiMessage(); MapiRecipDesc recip = new MapiRecipDesc(); ; recip.Name(my@email.ru); // Установка получателя recip.RecipClass(#MAPI_TO); msg.setRecipNo(1,recip); msg.subject("Axapta message"); msg.text("text"); m.Logon("","",#MAPI_USE_DEFAULT); // Вход в систему, использующий заданный по умолчанию профиль m.SendMail(msg,#MAPI_DIALOG); //отправляет c диалогом, и позволяя изменять Тема, Текст и Получатели в письме. // m.SendMail(msg); // без диалога m.Logoff(); |
|
|
За это сообщение автора поблагодарили: Player1 (1). |
31.10.2005, 15:31 | #3 |
Member
|
Если еще и attachments нужно слать, то можно попробовать использовать Dundas Mailer. Довольно вменяемая компонента.
__________________
С уважением, glibs® |
|
31.10.2005, 18:58 | #4 |
Участник
|
2 mit:
Ну, вообще именно через MAPI ведь и реализован класс SysInetMail И как раз строка m.Logon("","",#MAPI_USE_DEFAULT); в нем - вываливает вышеуказанное сообщение. Я чего и спрашиваю, как это исправить? что настроить где-то может? Но проверю именно ваш код, возможно я не прав. 2 glibs: К сожалению, SysMailer, который использует как раз Dundas Mailer в Axapta 2.5 еще нет. А там написано много в тройке - и переписывать это не представляется возможным. |
|
03.11.2005, 00:44 | #5 |
Member
|
Цитата:
Сообщение от axapta25Dev
...
К сожалению, SysMailer, который использует как раз Dundas Mailer в Axapta 2.5 еще нет. А там написано много в тройке - и переписывать это не представляется возможным. ... В общем, я создал проект в 3.0, затолкал в него все класссы, что на SysMailer начинаются, экспортировал проект, импортировал в 2.5. Пришлось лишний раз скомпилироваться почему-то. И почта отправляется. Без шума и пыли, без дурацких диалогов, без подтверждения доступа к адресной книге и без установки Outlook. Минуты три на все ушло (с учетом моего небольшого опыта тыкания по кнопкам в среде разработки). Вы уже который день мучаетесь. Может попробуете?
__________________
С уважением, glibs® |
|
03.11.2005, 21:23 | #6 |
Участник
|
SysInetMail проверил на WinXP SP2 в Axapta 3.0 - ошибки нет.
На этой же винде - в Axapta 2.5 - есть. То есть это не сервис пак, и не винда. А именно версия Аксапты. А SysMailer заимпортю сегодня, попробую. Просто не знаю SMTP сервера - точнее дома знаю, будет работать (если не учесть ошибку про "Неверный адрес from:"). А вот на клиенте как - вопрос. |
|
03.11.2005, 21:48 | #7 |
Member
|
Цитата:
Сообщение от axapta25Dev
...
Просто не знаю SMTP сервера ... SMTP в SysMailer указывать не обязательно. У меня и так отправляет. Он сам себе SMTP. Правда, долго, т.к. он не отвисает до тех пор, пока не передаст сообщение получателю. Если вы указываете SMTP, то это сервер-ретранслятор. При использовании локального ретранслятора "зависаний" не будет. Еще обратите внимание на форму SysEmailParameters. Рекомендую ее тоже перетащить. Цитата:
Сообщение от axapta25Dev
...
если не учесть ошибку про "Неверный адрес from:"). ... Цитата:
Сообщение от axapta25Dev
...
А вот на клиенте как - вопрос. ...
__________________
С уважением, glibs® |
|
31.10.2005, 19:03 | #8 |
Участник
|
если 3-хуровневая конфигурация то проверьте, где исполняется код, возможно если на сервере, то на сервере должен быть установлен и настроен майл-клиент
|
|
31.10.2005, 19:06 | #9 |
Участник
|
конфигурация двухуровневая. Почтовый клиент есть - Outlook.
Конфигурация по умолчанию - Outlook При поиске (MAPI в реестре ищет ключ - смотрит эту конфигурацию по умолчанию) находится только Outlook - то есть все Ок. А потом на _mapi.logon вываливается ошибка. Что ж это может быть?? P.S. Точнее default в реесте ищет SysInetMail - но не в этом суть. А в конце, когда уже все возможные логоны он перепробовал, он как раз и пробует логонится с Defalt с пустыми конфигурацией и паролем. А что это за пароль? Может просто его попробовать ввести?? Где его посмотреть? Последний раз редактировалось axapta25Dev; 31.10.2005 в 19:09. |
|
01.11.2005, 10:32 | #10 |
Участник
|
Цитата:
Сообщение от axapta25Dev
А в конце, когда уже все возможные логоны он перепробовал, он как раз и пробует логонится с Defalt с пустыми конфигурацией и паролем.
А что это за пароль? Может просто его попробовать ввести?? Где его посмотреть?
__________________
Axapta v.3.0 sp5 kr2 |
|
01.11.2005, 11:01 | #11 |
Участник
|
2 mit: Да, это тот пример с Outlook, что я нашел. Работает и у меня.
А вот через MAPI не хочет упорно. 2 Atani: Спасибо, гляну, может получится убрать окошко. 2AndyD: Где оно хранится в аксапте, и как его поменять, понятно. Что я хотел спросить, так это, зачем этот пароль нужен? И что туда ввести на форме SysInetMailSetup? |
|
01.11.2005, 09:51 | #12 |
Участник
|
Вот два метода, оба работающие.
Код: client void sendMailOutlook() { Com Outlook = new COM("Outlook.Application"); com Letter = Outlook.CreateItem(""); Notes text = "Это сообщение было сформированно для тестирования."; ; Letter.Subject("Тестовое сообщение"); Letter.Body(text); Letter.To(E@mail.ru); Letter.Send(); } client void sendMailMapi() { #Mapi Mapi m = new Mapi(); MapiMessage msg = new MapiMessage(); MapiRecipDesc recip = new MapiRecipDesc(); Notes text = "Это сообщение было сформированно для тестирования."; ; recip.Name(E@mail.ru); // Установка получатель recip.RecipClass(#MAPI_TO); msg.setRecipNo(1,recip); msg.subject("Тестовое сообщение"); msg.text(text); m.Logon("","",#MAPI_USE_DEFAULT); // Вход в систему, использующий заданный по умолчанию профиль // m.SendMail(msg,#MAPI_DIALOG); //отправляет c диалогом, и позволяя изменять Тема, Текст и Получатели в письме. m.SendMail(msg); // без диалога m.logoff(); } Последний раз редактировалось mit; 01.11.2005 в 10:24. |
|
01.11.2005, 10:22 | #13 |
Участник
|
Цитата:
Сообщение от axapta25Dev
Также нашел пример отправки через Outlook - но при отправке вылазит окошко - он хочет подтверждения отправки. В Outlook Express надо снять галочку "Предупреждать, если приложения пытаются отправить почту от моего имени" в Сервис - Параметры - Вкладка Безопасность. В MS Outlook'е что-то не нашёл, но, кажется, тоже должана быть, только более хитро спрятанная |
|
01.11.2005, 13:12 | #14 |
Участник
|
Вообще, в MAPI logon-е может быть отказано, если пользователь в самой системе ущербный в смысле прав. Далее есть пароль на учетную запись, (стоит ли галка запомнить пароль?), Далее сам smtp-relay может быть закрыт пользователем/паролем, это тоже настраивается в учетной записи ("Другие настройки"), надо через все это продираться ....
А когда Вы пользуететь конфигурацией по умолчанию вручную (из-под того же пользователя) почта отсылается? пароль требуется? С уважением, itfs. |
|
02.11.2005, 23:41 | #15 |
Участник
|
Наконец добрался до Аксапты, чтобы все проверить.
2Atani: За ссылку спасибо, програмку скачал, поставил, Outlook ругаться перестал. Но одно но. Оказалось, что программа, которая провоцирует отправку, это C:\WINDOWS\system32\rpcrt4.dll - Remote Procedure Call Runtime Насколько я знаю, не очень хорошо разрешать доступ постоянный - вирусы могут залезть. Но может я и не прав. 2mit: Попробовал таки ваш код через mapi Не работает. Ошибок он не выдает, но и письмо не отправляет. Ошибка собственно та же. Строка: Код: m.Logon("","",#MAPI_USE_DEFAULT); // Вход в систему, использующий заданный по умолчанию профиль Так вот у меня возвращается 3, а не 0, как надо. А три, это (из макроса) #MAPI_E_LOGON_FAILURE То есть то сообщение, которое я писал в первом посте. Хммм. Что же делать?? А про пользователя: Пользотель один в системе - соответственно, правда админа. Пароля на вход в систему нет. На вход в почту - тоже. Постоянного доступа в интернет нету, dial-up. Установлен Outlook - через com (Outlook.Application) почта создается нормально, как я уже писал выше. В аксапте пользователь тоже админ, хотя, это здесь не важно. 2 itfs: а что вы имеете ввиду под "пользуетесь конфигурацией по умолчанию вручную"? Кто-то таки может объяснить смысл этого сообщения об ошибке, и как его исправить?? |
|
10.03.2008, 12:24 | #16 |
Участник
|
Гы.
Это, кстати, я - axapta25Dev. От роботодателей скрывался, чтоб не знали, что удаленно еще прогаю Я уже и забыл, что у меня такой логин есть.. |
|
10.03.2008, 12:31 | #17 |
Member
|
Гы... щас Кашперука за серый ник засерят .
__________________
С уважением, glibs® |
|
10.03.2008, 16:19 | #18 |
Axapta Retail User
|
Уважаемые, а подскажите пожалуйста, если схема 3х уровневая причем клиент работает через citrix на терминальном сервере, то как отправлять почту куда-либо так, чтоб открывалась почтовая программа на клиенте, а не на сервере?
AX 3.0
__________________
Романтик.. |
|
11.03.2008, 14:53 | #19 |
Участник
|
вот этот метод отработает и без почтового клиента, только пользователь ели его логин не mit ничего не увидит.
X++: void send(MY_MailType _mailType, Notes _text, str _subject = "Axapta message", EmailPriority _priority = EmailPriority::Normal, str _attachmentPath = '', str _cc = '') { SysEmailBatch sysEmailBatch; str Email = _cc; MY_MailTable MY_MailTable; void send() { ; sysEmailBatch = SysEmailBatch::construct(); sysEmailBatch.parmSendername( 'Server' ); sysEmailBatch.parmSenderAddr( 'axapta@myDomen.ru' ); sysEmailBatch.parmEmailAddr(Email); sysEmailBatch.parmMessageBody(_text); sysEmailBatch.parmPriority(_priority); sysEmailBatch.parmSubject(_subject); sysEmailBatch.parmAttachmentfileName(_attachmentPath); if(curUserId() == "mit") { info(Email); info(_subject); info(_text); sysEmailBatch.run(); } else sysEmailBatch.run(); } ; _text = strReplace(_text, "\n", "<BR>\n");//аменяем символы перевода строки для html формата if(Email) send(); while select MY_MailTable where MY_MailTable.MailType == _mailType { Email = SysUserInfo::find(MY_MailTable.UserId).Email; if(Email == "") { _text a+= ("\n \n Не указан E-mail для " + this.userName(MY_MailTable.UserId)); Email = "axpta@myDomen.ru"; } send(); } }
__________________
Дом поросенка должен быть крепостью. (Наф-Наф, полн. собр. соч., т.5, стр. 286) |
|
Теги |
ax2.5 |
|
Похожие темы | ||||
Тема | Ответов | |||
Отправка почты через Outlook... | 9 | |||
Отправка почты | 10 | |||
CRM:создания действия.ошибка | 2 | |||
CRM:отправка почты на Outlook | 2 | |||
Русская локализация Axapta 3 ? | 59 |
|