11.04.2007, 18:01 | #1 |
NavAx
|
Коллеги, поделитесь опытом.
Суть: мы получаем некую информацию по электронной почте, с определенного адреса приходит несколько десятков писем в день на наш конкретный адрес, в письмах живут аттачменты с уникальными именами, это текстовые файлы, которые по факту получения нам нужно разбирать в навыжне. На первый взгляд прорисовываются следующие пути: 1) Заставить почтового клиента сохранять файлы куда-нить в общие папки, дальше все очевидно. 2) Непосредственно из Навыжна общаться с почтовым сервером и тащить аттачменты. На все тот же первый взгляд первый путь проще, но вот аутлук через стандартные правила я не смог заставить сохранять аттачменты из писем с определенного адреса в конкретное место. Есть ли простые пути заставить аутлук это делать? Или, возможно, другой почтовый клиент просто настраивается? Или проще все-таки пойти по второму пути? Поделитесь соображениями, пожалуйста, кто решал подобные проблемы.
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
11.04.2007, 18:45 | #2 |
Участник
|
Цитата:
Сообщение от Дуд
Коллеги, поделитесь опытом.
Суть: мы получаем некую информацию по электронной почте, с определенного адреса приходит несколько десятков писем в день на наш конкретный адрес, в письмах живут аттачменты с уникальными именами, это текстовые файлы, которые по факту получения нам нужно разбирать в навыжне. На первый взгляд прорисовываются следующие пути: 1) Заставить почтового клиента сохранять файлы куда-нить в общие папки, дальше все очевидно. 2) Непосредственно из Навыжна общаться с почтовым сервером и тащить аттачменты. На все тот же первый взгляд первый путь проще, но вот аутлук через стандартные правила я не смог заставить сохранять аттачменты из писем с определенного адреса в конкретное место. Есть ли простые пути заставить аутлук это делать? Или, возможно, другой почтовый клиент просто настраивается? Или проще все-таки пойти по второму пути? Поделитесь соображениями, пожалуйста, кто решал подобные проблемы. А чем не нравится вариант получения аттачей прямо из навижена? К примеру - заводим в аутлуке спец папку, в которую падают все письма с нужного адреса (это можно настроить), в навижене получаем этим письма из указанной папки, сохраняем аттачи, например, в путь, который указан в переменной окружения TEMP и обрабатываем их. После удаляем. Чем такой вариант не комильфо?
__________________
"И лишь патологоанатом не берет работу на дом" (с) Вишневский |
|
04.05.2007, 23:38 | #3 |
Участник
|
Используйте CDO.
Как? Читайте MSDN, там все более чем подробно описано. |
|
21.05.2007, 16:22 | #4 |
Участник
|
Можно еще проще, без аутглюка, например free библиотека jmail.dll http://www.serverwatch.com/img/downloads/JMailVBS.zip которая умеет почти все что касается почты, берем ее и пишем:
Код: SMTPServer := 'mail.server.ru'; UserName := 'Яков@server.ru'; Password := 'пароль'; IF GUIALLOWED THEN window.OPEN('#1##########################################################'); IF GUIALLOWED THEN window.UPDATE(1,STRSUBSTNO(Text048,SMTPServer,UserName)); IF ISCLEAR(MailClient) THEN CREATE(MailClient); CREATE(Mail); Mail.From := SendTo."E-Mail Address"; Mail.FromName := SendTo.Description; Mail.Subject := Subject; Mail.AddRecipient(EmailReceipient); IF CC <> '' THEN Mail.AddRecipientCC(CC); Mail.AppendHTML(Text); IF Filename <> '' THEN BEGIN IF GUIALLOWED THEN window.UPDATE(1,Text003); Mail.AddAttachment(Filename,FALSE); IF FILE.ERASE(Filename) THEN; END; IF GUIALLOWED THEN window.UPDATE(1,Text005); Mail.MailServerUserName := UserName; Mail.MailServerPassWord := Password; IF NOT Mail.Send(SMTPServer,FALSE) THEN MESSAGE(Mail.ErrorMessage()); IF GUIALLOWED THEN window.CLOSE; |
|
24.05.2007, 11:39 | #5 |
Участник
|
Привет.
А как объявить переменные MailClient и Mail? Библиотеку я уже зарегистрировал |
|
25.05.2007, 12:08 | #6 |
Участник
|
Добрый День!
Вот переменные: Код: MailClient Automation 'JMail 4.0 library'.POP3 Mail Automation 'JMail 4.0 library'.Message Attachments Automation 'JMail 4.0 library'.Attachments Attachment Automation 'JMail 4.0 library'.Attachment |
|
30.07.2007, 18:38 | #7 |
Участник
|
День добрый.
Никто не сталкивался с проблемой библиотеки jMail когда русские буквы в заголовке и теле письма передаются кракозябрами? Функции Dos2Win и WIN2DOS из codeunit'a "Localisation Management" не помогают. Почтовый сервер Exchange. Подразумеваю что это проблема самой библиотеки, либо сервера. |
|
30.07.2007, 19:11 | #8 |
Участник
|
Проблема в сервере скорее всего.
Заголовок письма в студию и будем искать... |
|
31.07.2007, 09:08 | #9 |
Участник
|
Код: Microsoft Mail Internet Headers Version 2.0 Received: from xxx.yyy.ru ([192.168.0.40]) by smtp.yyy.ru with Microsoft SMTPSVC(6.0.3790.1830); Tue, 31 Jul 2007 08:29:00 +0400 Subject: =?iso-8859-1?Q?XXX_=EF=EE=E4=EF=E8=F1=E0=ED=E0_=E7=E0=FF=E2=EA=E0_=ED=E0_=EE=EF=EB=E0=F2=F3_PAY R-HO-0000068?= Sender: "xxx" <xxx@yyy.ru> From: "xxx" <xxx@yyy.ru> Date: Tue, 31 Jul 2007 08:29:22 +0400 To: "=?iso-8859-1?Q?xxx@yyy=2Eru?=" <xxx@yyy.ru> X-Priority: 3 Content-Transfer-Encoding: Quoted-Printable MIME-Version: 1.0 X-Mailer: JMail 4.5 by Dimac Content-Type: text/plain; charset="iso-8859-1" Return-Path: xxx@yyy.ru Message-ID: <DC1SRV05WuR3hcnqoJO00000016@smtp.yyy.ru> X-OriginalArrivalTime: 31 Jul 2007 04:29:00.0937 (UTC) FILETIME=[5198C790:01C7D32B] charset="iso-8859-1" Установка charset="koi8-r" ситуацию не исправило... UPDATE Вылечил ситуацию. Заголовок и тело письма конвертировать в Win не нужно, Charset := 'windows-1251'. Может кому сгодится... |
|
03.08.2007, 08:13 | #10 |
Участник
|
|
|
27.08.2007, 12:44 | #11 |
Участник
|
Пардон, не видел что меня спросили.
Отвечу расширенно, что бы максимально исключить лишние вопросы. Я сделал так: - В одной из настроечных таблиц создал BLOB поле, и импотировал туда библиотеку jMail.dll - создал codeunit, в тригере OnRun написал код, позволяющий импортировать/экспортировать dll Код: OnRun() // при прямом запуске можно вручную сделать импорт или экспорт jMail.dll MenuResalt := STRMENU('Import jMail.dll,Export jMail.dll', 1); Company.FIND('-'); CASE MenuResalt OF 1 : BEGIN FileNamejMail := Company."jMail.dll".IMPORT('jMail.dll', TRUE); IF FileNamejMail '' THEN BEGIN Company.MODIFY(TRUE); MESSAGE('Готово') END ELSE CLEAR(Company."jMail.dll") END; 2 : BEGIN Company.CALCFIELDS(Company."jMail.dll"); IF Company."jMail.dll".HASVALUE THEN Company."jMail.dll".EXPORT(FileNamejMail, TRUE) ELSE MESSAGE('Выгружать нечего, поле пустое... ') END; END; Код: NewMessage(FromName : Text[30];ToName : Text[30];CCName : Text[30];Subject : Text[60];Body : Text[255];AttachFileName : Text[255];ShowMessage :Boolean) : Boolean //NewMessage (FromName,ToName,CCName,Subject,Body,AttachFileName) IF ISCLEAR(MailClient) THEN IF NOT CREATE(MailClient) THEN IF NOT Install_jMail THEN ERROR('Не возможно установить компонент jMail.dll'); IF GUIALLOWED THEN BEGIN window.OPEN('#1###################\'+ 'Сервер #2############\'+ 'Юзер #3############'); window.UPDATE(1, Text001); window.UPDATE(2, SMTPServer); window.UPDATE(3, UserName); END; CREATE(Mail); Mail.Silent := TRUE; Mail.Logging := TRUE; Mail.Charset := 'windows-1251'; IF UserSetup.GET(USERID) AND (UserSetup."E-mail" '') THEN Mail.From := UserSetup."E-mail" ELSE Mail.From := ''; Mail.FromName := FromName; Mail.Subject := Subject; Mail.AddRecipient(ToName); IF CCName '' THEN Mail.AddRecipientCC(CCName); Mail.AppendText(Body); IF AttachFileName '' THEN Mail.AddAttachment(AttachFileName,FALSE); Mail.MailServerUserName := MailServerUserName; Mail.MailServerPassWord := Password; IF NOT Mail.Send(SMTPServer,FALSE) AND GUIALLOWED THEN MESSAGE(Mail.ErrorMessage()) ELSE CLEAR(Mail); IF GUIALLOWED THEN BEGIN window.CLOSE; IF ShowMessage THEN MESSAGE('Пользователю %1 отправлено письмо.\Тема письма:"%2"', ToName, Subject) END; Код: UserName Text 30 window Dialog MailClient Automation 'JMail 4.0 library'.Attachment Mail Automation 'JMail 4.0 library'.Message Filename Text 30 Company Record Company MenuResalt Integer FileNamejMail Text 250 WinPath Text 250 UserSetup Record User Setup Код: Install_jMail() : Boolean //Install_jMail Company.FIND('-'); Company.CALCFIELDS(Company."jMail.dll"); IF Company."jMail.dll".HASVALUE THEN BEGIN WinPath := FORMAT(ENVIRON('WINDIR')) + '\System32\jMail.dll'; Company."jMail.dll".EXPORT(WinPath, FALSE); IF SHELL(STRSUBSTNO('regsvr32 "%1"',WinPath)) = 0 THEN EXIT(TRUE) END; Ещё раз спасибо Forward за наводку на dll'ку Надеюсь кому-нибудь сгодится. |
|
27.08.2007, 14:13 | #12 |
Участник
|
2 .rejector. Спасибо за весьма исчерпывающий ответ.
Я ранее использовал для отправки е-мейлов smtpmailx OCX (http://forum.mazzy.ru/index.php?showtopic=2356), там тоже были проблемы с кодировкой и паролем. Я подправлял исходники и генерил новый исправленный OCX, но возникала проблемка с аттачментами... Надеюсь у jMail.dll все работает более гладко |
|
28.05.2009, 16:45 | #13 |
Участник
|
А можно ли с помощью этой библиотеки отправлять почту на Exchange по протоколу MAPI? А то стоит задача отправки почты из NAS, и я в инете видел решение только путем установки еще и Outlook'а и взаимодействия с ним (и то там очень каверзно все настраивать надо).
|
|
28.05.2009, 16:52 | #14 |
Участник
|
Нет, по MAPI нельзя.
Вот, почитайте сайт |
|
28.05.2009, 17:01 | #15 |
Участник
|
эх
мне впринципе не нужны (пока) функции добавления в письмо аттачей. Нужно посылать простое письмо-уведомление. Можно это как-то реализовать без установки Outlook'а на той машине, где установлен NAS (тобишь на сервере)? |
|
28.05.2009, 17:26 | #16 |
Administrator
|
|
|
28.05.2009, 17:43 | #17 |
Участник
|
Цитата:
Сообщение от Sancho
технология отработана
docflow nav если взялся отвечать - ответь по существу. если твой ответ состоит только в отсылке к платным ресурсам - не надо так делать. Давай четко отделять советы от рекламы Не нужно сообщений в стиле: у нас есть такие приборы, но мы вам о них не расскажем, а если вы позвоните/напишете/придете, то их вам конечно продажем |
|
28.05.2009, 18:16 | #18 |
Administrator
|
понял.
исправляюсь отправлять сообщения можно без использования MS Outlook, посредством использования следующих автомейшнов: 'Microsoft CDO for Windows 2000 Library'.Configuration 'Microsoft CDO for Windows 2000 Library'.Message 'Microsoft ActiveX Data Objects 2.8 Library'.Field 'Microsoft ActiveX Data Objects 2.8 Library'.Fields в сообщения можно вставлять аттачменты, гиперлинки, можно форматировать по-всякому, поскольку используется html у нас есть богатый опыт подобной отправки сообщений, о чем можно узнать на приведенном выше сайте. |
|
29.05.2009, 10:00 | #19 |
Участник
|
Нашел на mibuso такую тему:
mibuso.com В частности оттуда: Цитата:
Define 'objEmailConf' as 'Microsoft CDO For Exchange 2000 Library'.Configuration.
Define 'objEmail' as 'Microsoft CDO For Exchange 2000 Library'.Message. Define 'flds' as 'Microsoft ActiveX Data Objects 2.5 Library'.Fields. Define 'fld' as 'Microsoft ActiveX Data Objects 2.5 Library'.Field. IF ISCLEAR(objEmailConf) THEN CREATE(objEmailConf); flds := objEmailConf.Fields; fld := flds.Item('http://schemas.microsoft.com/cdo/configuration/smtpserver'); fld.Value('mail.yourdomain.com'); fld := flds.Item('http://schemas.microsoft.com/cdo/configuration/smtpserverport'); fld.Value(25); fld := flds.Item('http://schemas.microsoft.com/cdo/configuration/sendusing'); fld.Value(2); flds.Update(); IF ISCLEAR(objEmail) THEN CREATE(objEmail); objEmail.Configuration := objEmailConf; objEmail.From := 'testfrom@yourdomain.com; objEmail."To" := 'testto@yourdomain.com'; objEmail.Subject := 'test subject'; objEmail.TextBody := 'Test'; objEmail.Send; |
|
29.05.2009, 17:22 | #20 |
Участник
|
А чем Вам CDO не угодило?
Для MAPI, по-моему, как раз потребуется настроить учетную запись электронной почты. И из этих настроек будет браться SMTP-сервер. В CDO вы же все настройки можете хранить в Nav'е. |
|