Отправить почту

YuriZhitnik
Дата: 19.02.2008 17:58:00
Всем, добрый вечер.
Access 2003 SP3
Нарыл на форуме вот такой пример

Private Sub Кнопка0_Click()
'
Dim Msg 'As CDO.Message
Set Msg = CreateObject("CDO.Message")
Dim mailaddress As String
Dim Msghtml As String
mailaddress = "kozin@mail.ru"
Msghtml = "<HTML><h2>См. вложения</h2></HTML>"
With Msg
   .HTMLBody = Msghtml
   .AddAttachment ("c:\autoexec.bat")
   .To = """Administratior"" <" & mailaddress & ">"
   .FROM = """Робомэйл"" <mailservice@mailserver.ru>"
   .Send
End With
Set Msg = Nothing
'
End Sub

Здесь: http://sql.ru/forum/actualthread.aspx?tid=455021&hl=mapi

Запускаю у себя, пишет ошибку:

Run-Time error '-2147220960 (80040220)'
Недопустимое значение конфигурации "SendUsing"

и выделяет желтым .Send

В Reference библиотека Microsoft CDO for Windows 2000 library - включена
В чем ошибка?
Спасибо.
Ёжик`
Дата: 19.02.2008 20:52:49
Public Function MySendMailIsCDO( _
        ByVal msgTo As String, _
        Optional ByVal msgCc As String, _
        Optional ByVal msgSubject As String, _
        Optional ByVal msgTextBody As String, _
        Optional ByVal Attachments As String) As Boolean

On Error GoTo er

Dim iMsg As Object, ', iConf As Object

Set iMsg = CreateObject("CDO.Message")

'Dim iMsg As New CDO.Message
Const conf = "http://schemas.microsoft.com/cdo/configuration/"

iMsg.Configuration.Load -1 'cdoDefaults

'With iMsg.Configuration
'.Fields(conf + "languagecode") = "ru"
'.Fields(conf + "postusing") = 0
'.Fields(conf + "sendemailaddress") = "pupkin@mail.ru"
'.Fields(conf + "sendpassword") = "пароль"
'.Fields(conf + "sendusername") = "pupkin@mail.ru"
'.Fields(conf + "sendusing") = 2
'.Fields(conf + "smtpaccountname") = "pupkin"
'.Fields(conf + "smtpauthenticate") = 1
'.Fields(conf + "smtpconnectiontimeout") = 60
'.Fields(conf + "smtpserver") = "smtp.mail.ru"
'.Fields(conf + "smtpserverport") = "25"
'.Fields(conf + "usemessageresponsetext") = True
'.Fields("urn:schemas:mailheader:content-language") = "windows-1251"
'.Fields.Update
'End With


With iMsg
'    .From = "Путин <putin@kremlin.ru>"
    .To = msgTo
    .CC = .Configuration.Fields(conf + "sendemailaddress")
'    If msgCc <> "" Then .CC = msgCc
    If msgSubject <> "" Then .Subject = msgSubject
    If msgTextBody <> "" Then .TextBody = msgTextBody
    '.HTMLBody = msgTextBody
    If Attachments <> "" Then .AddAttachment Attachments
    .Send
End With
Set iMsg = Nothing
MySendMailIsCDO = True

ex: Exit Function
er: MySendMailIsCDO = False
    MsgBox Err.Description, vbCritical, "Error: " & Err.Number
End Function
YuriZhitnik
Дата: 20.02.2008 13:55:46
Есть несколько вопросов по коду.

1.
iMsg.Configuration.Load -1 'cdoDefaults
используются мои настройки почты по умолчанию?
2. Если мне нужно применить свои настройки то убираю ремарку с
'Dim iMsg As New CDO.Message
и ремарки с
 'With iMsg.Configuration
 '.Fields(conf + "languagecode") = "ru"
 '.Fields(conf + "postusing") = 0
 '.Fields(conf + "sendemailaddress") = "pupkin@mail.ru"
 ...
3. Что за свойства или где почитать:
.Fields(conf + "postusing") = 0
.Fields(conf + "sendusing") = 2
4. Если мне нужно иметь в теле письма отформатированный текст (с отступами и красными строками) использовать
'.HTMLBody = msgTextBody
Переменной msgTextBody присвоить html текст со всеми нужными мне тегами?
5. Как правильно вызвать функцию, например:
call MySendMailIsCDO ("to@mail.ru",,msgSubject,msgTextBody,Attachments

Спасибо.
YuriZhitnik
Дата: 20.02.2008 18:18:28
Может кто обратит внимание?
Ёжик`
Дата: 21.02.2008 23:01:32
Есть несколько вопросов по коду.

1.
iMsg.Configuration.Load -1 'cdoDefaults
используются мои настройки почты по умолчанию?
ДА (MS Outlook or OutLook Express)

2. Если мне нужно применить свои настройки то убираю ремарку с
'Dim iMsg As New CDO.Message
и ремарки с
 'With iMsg.Configuration
 '.Fields(conf + "languagecode") = "ru"
 '.Fields(conf + "postusing") = 0
 '.Fields(conf + "sendemailaddress") = "pupkin@mail.ru"
 ...
Не ремарку убирать, переменная обьявлена реньше как обьект

3. Что за свойства или где почитать:
.Fields(conf + "postusing") = 0
.Fields(conf + "sendusing") = 2
Я на microsoft.com находил, сейчас не вспомню
4. Если мне нужно иметь в теле письма отформатированный текст (с отступами и красными строками) использовать
'.HTMLBody = msgTextBody
Переменной msgTextBody присвоить html текст со всеми нужными мне тегами?
Не пользую, с тегами не прокатило, ну и фиг с ним
5. Как правильно вызвать функцию, например:
call MySendMailIsCDO ("to@mail.ru",,msgSubject,msgTextBody,Attachments

MySendMailIsCDO "to@mail.ru",, "Друг, дай закурить", "ПелМел высылать в Ясенево фурами, Ёжик примет"

Спасибо.[/quot]
Ёжик`
Дата: 21.02.2008 23:03:15
iMsg.Configuration.Fields поэкспериментировать - и почта ваша навеки
DmitryR
Дата: 18.09.2008 22:05:46
У меня стоит такая строка

.Fields("urn:schemas:mailheader:content-language") = "windows-1251"

Получаю письма внутри сети - с русским все нормально, снаружи все получают закорючки. Если посмотреть свойства полученной почты - везде упоминается koi8r и ни слова о windows-1251.

Может кто знает что не так делаю?
Guestedggdfg
Дата: 18.01.2010 07:42:13
DmitryR,

вылечил в свойствах нового CDO.Message - установил .Textbodypart.Charset = "windows-1251"
questtt
Дата: 21.01.2010 17:45:50
Коллеги,

не подскажете, из за чего съезжает язык ошибки.

пытаюсь отправить письмо с использованием CDO по аналогии с приведенными выше примерами и выскакивает вот такая ошибка
mds_world
Дата: 21.01.2010 17:48:28
Русский акс на английской (немецкой, французкой и др.) винде?