Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема вложения при отправке почты, vbs 
V
    Опции темы
Antila
Дата 10.2.2010, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 28.11.2007

Репутация: нет
Всего: нет



Есть такой скрипт на VBS для отправки почты с вложением, он работает:

Код

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShellApp = CreateObject("Shell.Application")
' Отправка письма
Set objMsg = CreateObject("CDO.Message")
Set Config = CreateObject("CDO.Configuration")
Set Config = objMsg.Configuration
objMsg.From = "[email protected]"
objMsg.To = """Иванов Иван"" <[email protected]>"
objMsg.Subject = "MTT_Excel"
objMsg.Textbody = "Hello!  "

' Прикрепляем все архивы
AttachmentFolder = "D:\Mail"
Set objFolderItems = objShellApp.NameSpace(AttachmentFolder).Items()
For Each objFolderItem In objFolderItems
    If Not objFolderItem.IsFolder Then
        Set objFile = objFSO.GetFile(objFolderItem.Path)
        If (LCase(Right(objFolderItem.Name, 4)) = ".rar") Then
            ' Прикрепляем архив с данными
            objMsg.AddAttachment objFile

        End If
    End If
Next

Config("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Config("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.yandex.ru"
Config("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
Config("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
Config("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]"
Config("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "12345"
Config.Fields.Update
objMsg.Send 


Если же вместо 
Код

' Прикрепляем все архивы
AttachmentFolder = "D:\Mail"

прописать путь к proxy
Код

' Прикрепляем все архивы
AttachmentFolder = "\\Proxy\Почта\Mail"

то ругается на строчку  
Код

objMsg.AddAttachment objFile


Добавлено через 5 минут и 45 секунд
Причем если мы будем присоединять только один конкретный файл (без цикла), то все будет работать.

Так работает:
Код

objFSO = CreateObject("Scripting.FileSystemObject")
Set objShellApp = CreateObject("Shell.Application")
' Отправка письма
Set objMsg = CreateObject("CDO.Message")
Set Config = CreateObject("CDO.Configuration")
Set Config = objMsg.Configuration
objMsg.From = "[email protected]"
objMsg.To = """Иванов Иван"" <[email protected]>"
objMsg.Subject = "MTT_Excel"
objMsg.Textbody = "Hello!  "

objMsg.AddAttachment "\\Proxy\Почта\Mail\1.rar"

Config("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Config("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.yandex.ru"
Config("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
Config("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
Config("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]"
Config("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "12345"
Config.Fields.Update
objMsg.Send 

PM MAIL   Вверх
Akina
Дата 10.2.2010, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453



Сравните:
Код

' Прикрепляем архив с данными
objMsg.AddAttachment objFile

и
Код

objMsg.AddAttachment "\\Proxy\Почта\Mail\1.rar"

с описанием метода и типа его параметров - авось станет понятно, где косяк.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Antila
Дата 10.2.2010, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 28.11.2007

Репутация: нет
Всего: нет



Всё равно не понятно...(

Разве в objFile  у меня не "\\Proxy\Почта\Mail\1.rar" лежит?
PM MAIL   Вверх
Akina
Дата 10.2.2010, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453



Какой ТИП лежит в objFile? Или иначе - какого типа в данный момент переменная objFile?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Antila
Дата 10.2.2010, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 28.11.2007

Репутация: нет
Всего: нет



строка?
PM MAIL   Вверх
Akina
Дата 11.2.2010, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453



Код

Set objFile = objFSO.GetFile(objFolderItem.Path)

И в результате выполнения этого кода в переменной будет СТРОКА?
Давай-ка прекращай тупить, а?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Antila
Дата 11.2.2010, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 28.11.2007

Репутация: нет
Всего: нет



объект, файл...

и хоть убейте, исходя из вашей логики, не вижу я глобальных отличий между такой записью:
Код

' Прикрепляем все архивы
AttachmentFolder = "D:\Mail"
                  ...
         If (LCase(Right(objFolderItem.Name, 4)) = ".rar") Then
            ' Прикрепляем архив с данными
            objMsg.AddAttachment objFile
        End If
 

и такой:
Код

' Прикрепляем все архивы
AttachmentFolder = "\\Proxy\Почта\Mail"
         ...
         If (LCase(Right(objFolderItem.Name, 4)) = ".rar") Then
            ' Прикрепляем архив с данными
            objMsg.AddAttachment objFile
        End If


Я не туплю, я учусь... 
И безмерно благодарю вас за помощь

PM MAIL   Вверх
Akina
Дата 11.2.2010, 12:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453



Вот расскажи мне - ну зачем тебе ссылка на файл? тем более что уже в самом первом посте ты пишешь - стОит скормить коду строку с путём к файлу, и всё лётает... ну так и получи ты эту строку с путём, нафига тебе вообще этот objFile? по-моему, более чем очевидно, что должно быть
Код

AttachmentFolder = "\\Proxy\Почта\Mail"
'...
If (LCase(Right(objFolderItem.Name, 4)) = ".rar") Then
    ' Прикрепляем архив с данными
    objMsg.AddAttachment objFolderItem.Path
End If





--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Antila
Дата 11.2.2010, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 28.11.2007

Репутация: нет
Всего: нет



Akina, большое-большое спасибо! Работает smile
PM MAIL   Вверх
Akina
Дата 11.2.2010, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453



Цитата(Antila @  11.2.2010,  14:42 Найти цитируемый пост)
 Работает  

Оно и не может не работать.
В будущем обращайте больше внимания на типы - как видите, это бывает крайне важно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
shpunt
Дата 6.2.2014, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.2.2014

Репутация: нет
Всего: нет



Скажите, 
1-й вариант отправляет только один конкретно указанный файл
Код

Set objMsg = CreateObject("CDO.Message")
 Set Config = CreateObject("CDO.Configuration")
 Set Config = objMsg.Configuration
 objMsg.From = "[email protected]"
 objMsg.To = "[email protected]"
 objMsg.Subject = "REPORT backup folders from "
 objMsg.Textbody = "Отчет об архивировании папок с "
 objMsg.AddAttachment "C:\Windows\Logs\WindowsServerBackup\Backup.log"
 Config("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
 Config("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.mail.ru"
 Config("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
 Config("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
 Config("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]"
 Config("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Вести пароль"
 Config.Fields.Update
 objMsg.Send


2-й вариант должен отправлять все файлы из папки. но письмо приходит пустое. без ссылок и без файлов. при этом txt-файлы в нужной папке присутствуют.
почему? где ошибка?
Код

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShellApp = CreateObject("Shell.Application")
Set objMsg = CreateObject("CDO.Message")
Set Config = CreateObject("CDO.Configuration")
Set Config = objMsg.Configuration
objMsg.From = "[email protected]"
 objMsg.To = "[email protected]"
objMsg.Subject = "REPORT backup folders "
objMsg.Textbody = "Отчет об архивировании папок "

' Прикрепляем все архивы
AttachmentFolder = "c:\test"
Set objFolderItems = objShellApp.NameSpace(AttachmentFolder).Items()
For Each objFolderItem In objFolderItems
    If Not objFolderItem.IsFolder Then
        Set objFile = objFSO.GetFile(objFolderItem.Path)
        If (LCase(Right(objFolderItem.Name, 4)) = ".txt") Then
            ' Прикрепляем архив с данными
            objMsg.AddAttachment objFolderItem.Path

        End If
    End If
Next

 Config("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
 Config("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.mail.ru"
 Config("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
 Config("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
 Config("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]"
 Config("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Вести пароль"
Config.Fields.Update
objMsg.Send

нужно, чтобы отправлялись все файлы из папки или ссылки на них.
PM MAIL   Вверх
Akina
Дата 6.2.2014, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453



1) Зачем делается 
Код

Set objFile = objFSO.GetFile(objFolderItem.Path)

если оно потом не используется?

2) Перед внутренним If добавьте Debug.Print текущего objFolderItem.Path и objFolderItem.Name, и посмотрите, что отдаётся.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
shpunt
Дата 10.2.2014, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.2.2014

Репутация: нет
Всего: нет



а возможно ли в тело письма вставлять содержимое ".txt" ?
т.е. чтобы внутренности этого txt вставлялись в тело письма, без вложения самого txt.
PM MAIL   Вверх
Akina
Дата 10.2.2014, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453



Конечно. Конкатенируй его к Textbody 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
shpunt
Дата 10.2.2014, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.2.2014

Репутация: нет
Всего: нет



а как?
можно подробнее smile
чтобы copy-paste и всё работает

сейчас у меня так работает скрипт:
Код

<script language="VBScript">
Dim SenderArr(2,1)
    
    SenderArr(0,0) = "user1.               "
    SenderArr(0,1) = "[email protected]"
    SenderArr(1,0) = "user2.               "
    SenderArr(1,1) = "[email protected]"

Dim RecieveArr(2,1)
    
    RecieveArr(0,0) = "TechEDO               "
    RecieveArr(0,1) = "[email protected]"
    RecieveArr(1,0) = "TechEDO2               "
    RecieveArr(1,1) = "[email protected]"


Sub Window_Onload
        window.resizeTo 880,250
        
        For i = 0 to UBound(SenderArr, 1)-1
            Set objOption = document.createElement("option")
            objOption.Text  = SenderArr(i,0)
            objOption.Value = i
            Sender_Mail.Add objOption
        Next
        For k = 0 to UBound(RecieveArr, 1)-1
            Set objOption = document.createElement("option")
            objOption.Text  = RecieveArr(k,0)
            objOption.Value = k
            Reciever_Mail.Add objOption
        Next

End Sub

' *** Перекодировка
Sub Encode()
Set oFSO = CreateObject("Scripting.FileSystemObject")
sDirectoryPath = "m:\Soft\015_SQL\_RPO"
set oFolder = oFSO.GetFolder(sDirectoryPath)
set oFileCollection = oFolder.Files

For each oFile in oFileCollection
Set ADODBStream = CreateObject("ADODB.Stream")
ADODBStream.Type = 2
ADODBStream.Charset = "cp866"
ADODBStream.Open()
ADODBStream.LoadFromFile(oFile.Path)
Text = ADODBStream.ReadText()
ADODBStream.Close()
ADODBStream.Charset = "windows-1251"
ADODBStream.Open()
ADODBStream.WriteText(Text)
ADODBStream.SaveToFile oFile.Path, 2
ADODBStream.Close()
Next
MsgBox " Файл перекодирован "
End Sub

' *** отправка почты
Sub SendMail()
Set oFSO = CreateObject("Scripting.FileSystemObject")
sDirectoryPath = "m:\Soft\015_SQL\_RPO"     ' директория
set oFolder = oFSO.GetFolder(sDirectoryPath)
set oFileCollection = oFolder.Files
    For Each objOption In Sender_Mail.Options
        If objOption.Selected Then
            OptNum = objOption.Value
        End If
    Next
    For Each objOption In Reciever_Mail.Options
        If objOption.Selected Then
            OppNum = objOption.Value
        End If
    Next
    mail_from = SenderArr(OptNum,1)
    mail_to = RecieveArr(OppNum,1)

For each oFile in oFileCollection
        Set objEmail = CreateObject("CDO.Message")
        objEmail.Bodypart.Charset = "windows-1251"
        objEmail.From = mail_from    ' от кого
        objEmail.To = mail_to        ' кому
        objEmail.Subject = "RPO"
        objEmail.Textbody = "Файлы RPO"
        objEmail.AddAttachment oFile.Path
        objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "org.ru"
        objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "user"
        objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "pass"
        objEmail.Configuration.Fields.Update
        objEmail.Send
        Set objEmail = Nothing
oFSO.DeleteFile oFile, 1
Next
MsgBox " Письмо отправлено "
End Sub
</script>

Т.е.е сейчас он перекодирует содержимое файла из DOS в Windows кодировку. вставляет как его вложение в письмо.
А надо чтобы он сразу в тему вставлял содержимое этого файла.
...
а можно ли ещё в тему письма вставлять содержимое НаимНП: которое есть внутри этого файла.
т.е. надо чтобы в тему всталвлялось название организации которое внутри этого файла в строке "НаимНП"
потому что сейчас тема письма забита жёстко: "Файлы RPO"

Это сообщение отредактировал(а) shpunt - 10.2.2014, 16:08
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.1623 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.