За последние 24 часа нас посетили 25053 программиста и 1751 робот. Сейчас ищет 751 программист ...

Офф 1000%. Спрошу, пока не удалят )

Тема в разделе "Прочее", создана пользователем sir Genry, 27 сен 2010.

  1. sir Genry

    sir Genry Активный пользователь

    С нами с:
    24 сен 2010
    Сообщения:
    61
    Симпатии:
    0
    Адрес:
    Новосибирск
    Спросил конечно на гацком sql.ru. Но там сугубо злобные типы. А тут народ дружелюбный ) авось поможете )

    Вобщем задача такая: отсылать из акцессной базы почту. Письма простые, без всяких вложений. Использовал FreeMail.dll. Процесс установки прост до безобразия: кидаем dll в system32 и все работает. В базе написал несложный код и форму. Пользователь нажал одну кнопку, сформировалась куча писем и все улетело. Замечательная штука - все работает... под XP. А под вистой не хочет.
    Может кто-нибудь сталкивался с подобной задачей?
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    я только не понял, этот freemail помогает из базы дернуть нужную инфу или просто отослать?
    UPD: или это к php отношения не иммеет?)
     
  3. sir Genry

    sir Genry Активный пользователь

    С нами с:
    24 сен 2010
    Сообщения:
    61
    Симпатии:
    0
    Адрес:
    Новосибирск
    Просто отослать. Но можно и принять. Поддержка POP3 и SMTP. Ниже пример использования:
    Код (Text):
    1.  
    2. Private Sub SendEMail(ClntID As Long)
    3. Dim m As Message, S As String, res As Long
    4. Dim ToAddr As String
    5. Dim rs As Recordset
    6.     ' Это моя функция вытаскивания адреса клиента
    7.     ToAddr = GetToAddr(ClntID)
    8.     If ToAddr = "" Then Exit Sub
    9.     blCancel = False
    10.     m.strFrom = Nz(Me!FromAddr, "")
    11.     m.strReplyTo = Nz(Me!FromAddr, "")
    12.     m.strTo = ToAddr
    13.     m.strSubj = "Баланс за период с " & Format(Me!BDate, "dd.mm.yyyy") & " по " & Format(Me!EDate, "dd.mm.yyyy")
    14.     ' Это моя функция формирования сообщения: там простейший HTML
    15.     m.strBody = GetHTML(ClntID)
    16.     m.strBodyPTHTML = "Письмо в формате HTML." & vbCrLf & "FreemailExt"
    17.     m.strHdrTransferEncoding = ""
    18.     m.strTransferEncoding = ""
    19.     m.strContentType = "text/html"
    20.     m.strExtraHeaders = Nz(DLookup("Headers", "MailSettings"), "")
    21.     m.iPriority = 2
    22.     m.strOrganization = ""
    23.     res = SendAuthMsg(AddressOf Progress, m, Nz(Me!Server, ""), Nz(Me!FromAddr, ""), Nz(Me!Password, ""))
    24.     If res = 0 Then
    25.         DoCmd.RunSQL "UPDATE Clients SET SendResult='Сообщение отправлено.', SendFlag=FALSE WHERE ClientID=" & ClntID
    26.     Else
    27.         DoCmd.RunSQL "UPDATE Clients SET SendResult='Ошибка отправления. - " & res & "', SendFlag=FALSE WHERE ClientID=" & ClntID
    28.     End If
    29.     Me!SendSubFrm.Form.Requery
    30.     Set rs = Me!SendSubFrm.Form.Recordset.Clone
    31.     rs.FindFirst "[ClientID] = " & Str(ClntID)
    32.     If Not rs.EOF Then Me!SendSubFrm.Form.Bookmark = rs.Bookmark
    33. End Sub
    Подключение функций из DLL стандартное. В документации все есть - тупо скопировать в отдельный модуль.

    UPD: К PHP отношения не имеет. Вобщем если сообщения удалят, не обижусь )
     
  4. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Буйный Нео еще спит видать, не удалят. но темка не для пхп и базы.
     
  5. sir Genry

    sir Genry Активный пользователь

    С нами с:
    24 сен 2010
    Сообщения:
    61
    Симпатии:
    0
    Адрес:
    Новосибирск
    Апельсин
    Знаю, что оффтопик - честно об этом предупредил ) Не пхп, но акцесс тоже база )
     
  6. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    в помойке обычно такие темы создаются, перенесу, есть у нас один специалист по виндузу, только заходит редко
     
  7. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    Покажи лучше место, где создается
    m As Message

    что-нить навроде set m = CreateObject...

    есть подозрение, что это ActiveX и может тупо com-сервер не зарегистрирован в системе.
     
  8. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    sir Genry
    тебе сказали, что ты спамер и что аксесс не умеет отправлять почту? :))
     
  9. sir Genry

    sir Genry Активный пользователь

    С нами с:
    24 сен 2010
    Сообщения:
    61
    Симпатии:
    0
    Адрес:
    Новосибирск
    engager
    не, нифига не создается. Просто тип:
    Код (Text):
    1.  
    2. Type Message
    3.  strTo As String ' receiver e-mail address - Name <user@domen>
    4.                  ' Some e-mails should be divided by ';'
    5.  strCC As String ' copies
    6.  strBCC As String ' blind copies
    7.  strFrom As String ' sender e-mail address - Name <user@domen>
    8.  strSubj As String ' message subject
    9.  strHdrCharset As String ' charset of headers
    10.                          ' windows-1251 (by default)
    11.                          ' koi8-r etc.
    12.  strHdrTransferEncoding As String ' headers encoding
    13.                                   ' 8bit (by default)
    14.                                   ' base64 or quoted-printable
    15.  strDate As String ' date (current date by default)
    16.  strBody As String ' message body
    17.  strContentType As String ' text/plain (by default) or text/html
    18.  strCharset As String ' body charset
    19.                       ' windows-1251 (by default)
    20.                       ' koi8-r etc.
    21.  strTransferEncoding As String ' body encoding
    22.                                ' 8bit (by default)
    23.                                ' base64 or quoted-printable
    24.  strFileAttach As String ' Sending: path to attached files,
    25.   ' Some files should be divided by '|' or vbCrLf
    26.   ' Receiving: directory for saving attached files
    27.   ' (current directory by default)
    28.  strUIDL As String ' message UIDL
    29.  lSize As Long ' message size
    30.  
    31.  strReplyTo As String ' E-mail address for reply - User <user@domen>
    32.                       ' Some e-mails should be divided by ';'
    33.  strBodyPTHTML As String ' Plain text for html-format message
    34.  ioInlineObject() As InlineObject ' Html message's embedded objects array
    35.                           ' (images, sounds, etc)
    36.  strExtraHeaders As String ' Sending: additional headers
    37.                            ' Format: HeadersName=Value
    38.                            ' For example, X-Spam=Not detected
    39.                            ' Some headers should be divided by ';'
    40.  strOrganization As String ' Organization
    41.  iPriority As Integer ' Message priority
    42.                   ' 0 - Highest, 1 - High, 2 - Normal,
    43.                       ' 3 - Low, 4 - Lowest
    44.  blRawMessage As Boolean ' True for RAW-format message receiving
    45.  strRawMessage As String ' RAW-format message content
    46. End Type
    Ну а функции, которые используют эту фигню, регаются обычным образом:
    Код (Text):
    1.  
    2. ' Sending a message
    3. Declare Function SendMsg Lib "freemail.dll" _
    4. (ByVal fpCallback As Long, ByRef mmMsg As Message, _
    5.  ByVal strHost As String, Optional ByVal lPort As Long = 25) As Long
    Полную версию всего этого можно скачать вот тут: http://am.rusimport.ru/MsAccess/topic.aspx?id=34

    antonn
    хуже! они там все ахринительно умные. Гонора не пересказать сколько. Причем сами до конца не понимают вопроса. Ну хамства там сверх всякой меры. Пока что-нибудь путное скажут, намек какой дадут, столько пакостников успеет нагадить в топик....
     
  10. sir Genry

    sir Genry Активный пользователь

    С нами с:
    24 сен 2010
    Сообщения:
    61
    Симпатии:
    0
    Адрес:
    Новосибирск
    Собсно я во фримайл не уперся. Может есть какие еще способы отсылки мыла без привязки к оутглюкам, зебатам и прочим толстым клиентам?
     
  11. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    можно просто открыть сокет и залить туда письмо, не пробовал но должно работать
     
  12. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    sir Genry
    ты еще дельфимастера не видел %))

    если есть возможность запуска exe с параметром - можно написать консольную утилитку, которая будет отправлять почту :)
     
  13. sir Genry

    sir Genry Активный пользователь

    С нами с:
    24 сен 2010
    Сообщения:
    61
    Симпатии:
    0
    Адрес:
    Новосибирск
    antonn
    собственно вчера к этому выводу и пришел...

    Padaboo
    не уверен что на VBA есть такая возможность. Возможность конечно есть - все можно написать, но нативно - нет
     
  14. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
  15. sir Genry

    sir Genry Активный пользователь

    С нами с:
    24 сен 2010
    Сообщения:
    61
    Симпатии:
    0
    Адрес:
    Новосибирск
    Padaboo
    я уже полдня гуглю )))))))))))))))
    нашел парочку готовых консолек. Вечером попытаюсь прикрутить
     
  16. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    sir Genry
    я у меня от вас мурашки по коже :D Виндуз, VBA, MS Access =)))
     
  17. sir Genry

    sir Genry Активный пользователь

    С нами с:
    24 сен 2010
    Сообщения:
    61
    Симпатии:
    0
    Адрес:
    Новосибирск
    Padaboo
    нуу.......... "жить захочешь - не так раскорячишься" (с) особенности нац.охоты ))))))))
    Гайки закручиваю тем ключом, который для этого подходит лучше всего. В данном случае основное требование было: носить на флэшке.
     
  18. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    когда кодил под АСП, емэйл-рассылку делал так:

    Код (Text):
    1.     Dim iMsg, iConf, Flds, iBp, Stm
    2.  
    3.     Set iMsg = Server.CreateObject("CDO.Message")
    4.     Set iConf = Server.CreateObject("CDO.Configuration")
    5.     Set Flds = iConf.Fields
    6.  
    7.     iMsg.Configuration.Fields.Item(cdoSMTPServer) = "smtphost"
    8.    
    9.     if err.Number <> 0 then
    10.       Response.AppendToLog "ERROR_MESSAGE_UNDELIVERED " & Err.Number & " - " & Err.Description
    11.     end if
    12.  
    13.  
    14.     Flds(cdoSendUsingMethod)  = cdoSendUsingPort
    15. '    Flds(cdoSMTPPort) = 25
    16.     Flds(cdoSMTPServer)       = "192.168.1.9"
    17. '    Flds(cdoSendUsingMethod)  = cdoSendUsingPickup
    18.  
    19.     Flds.Update
    20.  
    21.     MailSubject = "mail subject"
    22.     With iMsg
    23.       Set Flds = iMsg.Fields
    24.       Set .Configuration = iConf
    25.    
    26.       .To = SendToFolder
    27.       .CC = SendToOperator
    28.       .From = "from@email.my"
    29.       .Subject = MailSubject
    30.       .BodyPart.Charset = "windows-1251"
    31.       .TextBody = MessageText
    32.       .AutoGenerateTextBody = False
    33. '      .PickupDirectory = "c:\inetpub\mailroot\pickup"
    34.       .Send
    35.    
    36.     End With
    закоменченные строчки могут понадобиться в зависимости от кофига ииса
     
  19. sir Genry

    sir Genry Активный пользователь

    С нами с:
    24 сен 2010
    Сообщения:
    61
    Симпатии:
    0
    Адрес:
    Новосибирск
    engager
    Спасибо, попробую