Спросил конечно на гацком sql.ru. Но там сугубо злобные типы. А тут народ дружелюбный ) авось поможете ) Вобщем задача такая: отсылать из акцессной базы почту. Письма простые, без всяких вложений. Использовал FreeMail.dll. Процесс установки прост до безобразия: кидаем dll в system32 и все работает. В базе написал несложный код и форму. Пользователь нажал одну кнопку, сформировалась куча писем и все улетело. Замечательная штука - все работает... под XP. А под вистой не хочет. Может кто-нибудь сталкивался с подобной задачей?
я только не понял, этот freemail помогает из базы дернуть нужную инфу или просто отослать? UPD: или это к php отношения не иммеет?)
Просто отослать. Но можно и принять. Поддержка POP3 и SMTP. Ниже пример использования: Код (Text): Private Sub SendEMail(ClntID As Long) Dim m As Message, S As String, res As Long Dim ToAddr As String Dim rs As Recordset ' Это моя функция вытаскивания адреса клиента ToAddr = GetToAddr(ClntID) If ToAddr = "" Then Exit Sub blCancel = False m.strFrom = Nz(Me!FromAddr, "") m.strReplyTo = Nz(Me!FromAddr, "") m.strTo = ToAddr m.strSubj = "Баланс за период с " & Format(Me!BDate, "dd.mm.yyyy") & " по " & Format(Me!EDate, "dd.mm.yyyy") ' Это моя функция формирования сообщения: там простейший HTML m.strBody = GetHTML(ClntID) m.strBodyPTHTML = "Письмо в формате HTML." & vbCrLf & "FreemailExt" m.strHdrTransferEncoding = "" m.strTransferEncoding = "" m.strContentType = "text/html" m.strExtraHeaders = Nz(DLookup("Headers", "MailSettings"), "") m.iPriority = 2 m.strOrganization = "" res = SendAuthMsg(AddressOf Progress, m, Nz(Me!Server, ""), Nz(Me!FromAddr, ""), Nz(Me!Password, "")) If res = 0 Then DoCmd.RunSQL "UPDATE Clients SET SendResult='Сообщение отправлено.', SendFlag=FALSE WHERE ClientID=" & ClntID Else DoCmd.RunSQL "UPDATE Clients SET SendResult='Ошибка отправления. - " & res & "', SendFlag=FALSE WHERE ClientID=" & ClntID End If Me!SendSubFrm.Form.Requery Set rs = Me!SendSubFrm.Form.Recordset.Clone rs.FindFirst "[ClientID] = " & Str(ClntID) If Not rs.EOF Then Me!SendSubFrm.Form.Bookmark = rs.Bookmark End Sub Подключение функций из DLL стандартное. В документации все есть - тупо скопировать в отдельный модуль. UPD: К PHP отношения не имеет. Вобщем если сообщения удалят, не обижусь )
в помойке обычно такие темы создаются, перенесу, есть у нас один специалист по виндузу, только заходит редко
Покажи лучше место, где создается m As Message что-нить навроде set m = CreateObject... есть подозрение, что это ActiveX и может тупо com-сервер не зарегистрирован в системе.
engager не, нифига не создается. Просто тип: Код (Text): Type Message strTo As String ' receiver e-mail address - Name <user@domen> ' Some e-mails should be divided by ';' strCC As String ' copies strBCC As String ' blind copies strFrom As String ' sender e-mail address - Name <user@domen> strSubj As String ' message subject strHdrCharset As String ' charset of headers ' windows-1251 (by default) ' koi8-r etc. strHdrTransferEncoding As String ' headers encoding ' 8bit (by default) ' base64 or quoted-printable strDate As String ' date (current date by default) strBody As String ' message body strContentType As String ' text/plain (by default) or text/html strCharset As String ' body charset ' windows-1251 (by default) ' koi8-r etc. strTransferEncoding As String ' body encoding ' 8bit (by default) ' base64 or quoted-printable strFileAttach As String ' Sending: path to attached files, ' Some files should be divided by '|' or vbCrLf ' Receiving: directory for saving attached files ' (current directory by default) strUIDL As String ' message UIDL lSize As Long ' message size strReplyTo As String ' E-mail address for reply - User <user@domen> ' Some e-mails should be divided by ';' strBodyPTHTML As String ' Plain text for html-format message ioInlineObject() As InlineObject ' Html message's embedded objects array ' (images, sounds, etc) strExtraHeaders As String ' Sending: additional headers ' Format: HeadersName=Value ' For example, X-Spam=Not detected ' Some headers should be divided by ';' strOrganization As String ' Organization iPriority As Integer ' Message priority ' 0 - Highest, 1 - High, 2 - Normal, ' 3 - Low, 4 - Lowest blRawMessage As Boolean ' True for RAW-format message receiving strRawMessage As String ' RAW-format message content End Type Ну а функции, которые используют эту фигню, регаются обычным образом: Код (Text): ' Sending a message Declare Function SendMsg Lib "freemail.dll" _ (ByVal fpCallback As Long, ByRef mmMsg As Message, _ ByVal strHost As String, Optional ByVal lPort As Long = 25) As Long Полную версию всего этого можно скачать вот тут: http://am.rusimport.ru/MsAccess/topic.aspx?id=34 antonn хуже! они там все ахринительно умные. Гонора не пересказать сколько. Причем сами до конца не понимают вопроса. Ну хамства там сверх всякой меры. Пока что-нибудь путное скажут, намек какой дадут, столько пакостников успеет нагадить в топик....
Собсно я во фримайл не уперся. Может есть какие еще способы отсылки мыла без привязки к оутглюкам, зебатам и прочим толстым клиентам?
sir Genry ты еще дельфимастера не видел %)) если есть возможность запуска exe с параметром - можно написать консольную утилитку, которая будет отправлять почту
antonn собственно вчера к этому выводу и пришел... Padaboo не уверен что на VBA есть такая возможность. Возможность конечно есть - все можно написать, но нативно - нет
да на любом другом языке, потом через консоль вызывать (илм там и такой возможности нет?оО) http://www.google.ru/search?source=ig&h ... =&gs_rfai=
Padaboo я уже полдня гуглю ))))))))))))))) нашел парочку готовых консолек. Вечером попытаюсь прикрутить
Padaboo нуу.......... "жить захочешь - не так раскорячишься" (с) особенности нац.охоты )))))))) Гайки закручиваю тем ключом, который для этого подходит лучше всего. В данном случае основное требование было: носить на флэшке.
когда кодил под АСП, емэйл-рассылку делал так: Код (Text): Dim iMsg, iConf, Flds, iBp, Stm Set iMsg = Server.CreateObject("CDO.Message") Set iConf = Server.CreateObject("CDO.Configuration") Set Flds = iConf.Fields iMsg.Configuration.Fields.Item(cdoSMTPServer) = "smtphost" if err.Number <> 0 then Response.AppendToLog "ERROR_MESSAGE_UNDELIVERED " & Err.Number & " - " & Err.Description end if Flds(cdoSendUsingMethod) = cdoSendUsingPort ' Flds(cdoSMTPPort) = 25 Flds(cdoSMTPServer) = "192.168.1.9" ' Flds(cdoSendUsingMethod) = cdoSendUsingPickup Flds.Update MailSubject = "mail subject" With iMsg Set Flds = iMsg.Fields Set .Configuration = iConf .To = SendToFolder .CC = SendToOperator .From = "from@email.my" .Subject = MailSubject .BodyPart.Charset = "windows-1251" .TextBody = MessageText .AutoGenerateTextBody = False ' .PickupDirectory = "c:\inetpub\mailroot\pickup" .Send End With закоменченные строчки могут понадобиться в зависимости от кофига ииса