Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Отправка почты на email чрезез VBS (http://forum.oszone.net/showthread.php?t=331618)

ymo_4@vk 02-12-2017 23:14 2781898

Отправка почты на email чрезез VBS
 
Доброго времени суток.
Нужно отправить через VBS скрипт письмо на gmail.com.
Перепробовал кучу скриптов, никакой не работает :( .
Нужна отсылка логов.

mwz 02-12-2017 23:50 2781904

Цитата:

Цитата ymo_4@vk
никакой не работает »

Приведите пример одного из таких "никаких".

ymo_4@vk 03-12-2017 01:31 2781915

Цитата:

Цитата mwz
Приведите пример одного из таких "никаких". »

Такой пробовал:
Код:

Option Explicit
Dim objmes
Set objmes=CreateObject("CDO.Message")

objmes.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
objmes.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2   
objmes.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 2
objmes.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "emalka@gmail.com" 'email акка
objmes.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "12345" 'пароль акка
objmes.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 'порт
objmes.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True

objmes.From="emalka@gmail.com" 'адрес отправителя
objmes.To="myaccount@mail.ru" 'адрес получателя
objmes.Subject="Тема"
objmes.HTMLBody="Содержание письма"
.AddAttachment "C:\123.rar"

objmes.Configuration.Fields.Update
objmes.Send

И такой пробовал но это то же самое:
Код:

Dim o_Mess, v_Conf
v_Conf = "http://schemas.microsoft.com/cdo/configuration/"
Set o_Mess = CreateObject("CDO.Message")
With o_Mess
    .To = "support@apple.com" 'куда отправляем
    .From = "Alex <xxx@yandex.ru>" 'имя отправителя + Email
    .Subject = "Subj" 'Тема письма
    .TextBody = "BodyMail" 'Сообщение
    .AddAttachment "C:\RemoveDrive.exe" 'Прикрепить файл
    .TextBodyPart.Charset = "windows-1251" 'русская кодировка
With .Configuration.Fields
    .Item(v_Conf & "sendusing") = 2 'без использования каталога Server Exchange
    .Item(v_Conf & "smtpserver") = "smtp.yandex.ru" 'Адрес SMTP-сервера
    .Item(v_Conf & "smtpauthenticate") = 1 'Тип авторизации
    .Item(v_Conf & "sendusername") = "xxx" 'здесь имя пользователя без @
    .Item(v_Conf & "sendpassword") = "pass" 'пароль
    .Item(v_Conf & "smtpserverport") = 25 'порт (альтернативный - 465)
    .Item(v_Conf & "smtpusessl") = False 'использовать ли шифрованое подключение SSL
    .Item(v_Conf & "smtpconnectiontimeout") = 60 'Время до завершения повторных попыток подключения
    .Update
End With
    .send
End With
Set o_Mess = Nothing


Iska 03-12-2017 09:37 2781940

ymo_4@vk, хотелось бы услышать, как именно выглядит «не работает»? Для второго скрипта сразу скажу, что GMail требует SSL.

Patroklos 03-12-2017 11:33 2781974

Возможно проще будет взять http://www.blat.net/?faq/index.html
Это почтовая программа работающая через CLI.

Iska 03-12-2017 12:06 2781983

Patroklos, открываете google.com, набираете в поиске «gmail blat», читаете выборку хотя бы из нескольких первых строк, а затем оцениваете свой совет. При том, что библиотека CDO работает с SSL напрямую, без необходимости установки дополнительных сервисов.

ymo_4@vk 03-12-2017 15:12 2782026

Вложений: 1
Цитата:

Цитата Patroklos
Возможно проще будет взять http://www.blat.net/?faq/index.html
Это почтовая программа работающая через CLI. »

Мне нужно именно через VBScript. Не хотелось-бы устанавливать дополнения.

Цитата:

Цитата Iska
ymo_4@vk, хотелось бы услышать, как именно выглядит «не работает»? Для второго скрипта сразу скажу, что GMail требует SSL. »

Пробовал вот этот код (данные заменил на свои):
Код:

Dim o_Mess, v_Conf
v_Conf = "http://schemas.microsoft.com/cdo/configuration/"
Set o_Mess = CreateObject("CDO.Message")
With o_Mess
    .To = "support@apple.com" 'куда отправляем
    .From = "Alex <xxx@yandex.ru>" 'имя отправителя + Email
    .Subject = "Subj" 'Тема письма
    .TextBody = "BodyMail" 'Сообщение
    .AddAttachment "C:\RemoveDrive.exe" 'Прикрепить файл
    .TextBodyPart.Charset = "windows-1251" 'русская кодировка
With .Configuration.Fields
    .Item(v_Conf & "sendusing") = 2 'без использования каталога Server Exchange
    .Item(v_Conf & "smtpserver") = "smtp.yandex.ru" 'Адрес SMTP-сервера
    .Item(v_Conf & "smtpauthenticate") = 1 'Тип авторизации
    .Item(v_Conf & "sendusername") = "xxx" 'здесь имя пользователя без @
    .Item(v_Conf & "sendpassword") = "pass" 'пароль
    .Item(v_Conf & "smtpserverport") = 25 'порт (альтернативный - 465)
    .Item(v_Conf & "smtpusessl") = true 'использовать ли шифрованое подключение SSL
    .Item(v_Conf & "smtpconnectiontimeout") = 60 'Время до завершения повторных попыток подключения
    .Update
End With
    .send
End With
Set o_Mess = Nothing

вот ошибка: Файл 149846

Iska 03-12-2017 15:23 2782028

Цитата:

Цитата ymo_4@vk
Пробовал вот этот код (данные заменил на свои): »

Покажите именно Ваш код. Замените Ваши реальные данные на ***, наподобие:
Код:

    .To = "***@apple.com" 'куда отправляем
    .From = "*** <***@yandex.ru>" 'имя отправителя + Email
    .Item(v_Conf & "sendusername") = "***" 'здесь имя пользователя без @
    .Item(v_Conf & "sendpassword") = "***" 'пароль

Нужны конкретные детали — откуда, куда и как происходит отправление, какие используются сервера, соответствуют ли выбранные порты выбранным серверам и т.п.

ymo_4@vk 03-12-2017 15:48 2782034

Цитата:

Цитата Iska
Покажите именно Ваш код. Замените Ваши реальные данные на *** »

Код:

Dim o_Mess, v_Conf
v_Conf = "http://schemas.microsoft.com/cdo/configuration/"
Set o_Mess = CreateObject("CDO.Message")
With o_Mess
    .To = "*******@google.com" 'куда отправляем
    .From = "*** <****@gmail.com>" 'имя отправителя + Email
    .Subject = "Subj" 'Тема письма
    .TextBody = "BodyMail" 'Сообщение
    .AddAttachment "C:\chat\log.zip" 'Прикрепить файл
    .TextBodyPart.Charset = "windows-1251" 'русская кодировка
With .Configuration.Fields
    .Item(v_Conf & "sendusing") = 2 'без использования каталога Server Exchange
    .Item(v_Conf & "smtpserver") = "smtp.gmail.com" 'Адрес SMTP-сервера
    .Item(v_Conf & "smtpauthenticate") = 1 'Тип авторизации
    .Item(v_Conf & "sendusername") = "****" 'здесь имя пользователя без @
    .Item(v_Conf & "sendpassword") = "****" 'пароль
    .Item(v_Conf & "smtpserverport") = 465 'порт (альтернативный - 465)
    .Item(v_Conf & "smtpusessl") = true 'использовать ли шифрованое подключение SSL
    .Item(v_Conf & "smtpconnectiontimeout") = 60 'Время до завершения повторных попыток подключения
    .Update
End With
    .send
End With
Set o_Mess = Nothing


Iska 03-12-2017 16:09 2782037

ymo_4@vk, попробуйте задать для:
Код:

    .Item(v_Conf & "sendusername") = "****" 'здесь имя пользователя без @
как раз-таки полное имя пользователя, включая @gmail.com.

И что за адрес такой:
Код:

    .To = "*******@google.com" 'куда отправляем
(хотя в данном случае пока не важно)?!

ymo_4@vk 03-12-2017 17:55 2782061

Цитата:

Цитата Iska
.To = "*******@google.com" 'куда отправляем »

это я не так написал.

Давай я тебе на email отправлю скрипт с данными и паролями?
Email напиши ещё.
И ты сделаешь рабочий скрипт? =)

Iska 03-12-2017 18:21 2782068

Цитата:

Цитата ymo_4@vk
Давай я тебе на email отправлю скрипт с данными и паролями? »

Гмм… Даже не знаю. А не заблокирует ли Gmail учётную запись, если доступ к ней пойдёт не с типичного адреса? Они там любят это дело. Ну, если хотите — отправьте, попробую покрутить, сначала отправку на свой адрес, потом с GMail на Gmail.

Я бы и самолично проверил, но у меня на Google нет учётных записей, и заводить их там я не планирую.

Цитата:

Цитата ymo_4@vk
Email напиши ещё. »

Щёлкаете над любым моим сообщением ссылку Профиль, там — ссылку Отправить сообщение по E-mail, вводите какой-нибудь текст для опознания Вас и отправляете. Я, получив письмо, Вам отвечаю по почте. Так Вы узнаете адрес, на который затем отправите учётные данные в зашифрованном архиве 7-Zip или RAR. Пароль на архив выложите сюда.

Iska 03-12-2017 21:28 2782104

ymo_4@vk, письмо получил, ответ отправил.

ymo_4@vk 03-12-2017 21:59 2782117

Цитата:

Цитата Iska
Щёлкаете над любым моим сообщением ссылку Профиль, там — ссылку Отправить сообщение по E-mail, вводите какой-нибудь текст для опознания Вас и отправляете. Я, получив письмо, Вам отвечаю по почте. Так Вы узнаете адрес, на который затем отправите учётные данные в зашифрованном архиве 7-Zip или RAR. Пароль на архив выложите сюда. »

пароль от архива - DVUAML

Iska 03-12-2017 22:24 2782120

Письмо получил, пробую.

Update: попробовал от Вашего имени к себе — работает, письмо получил. Вот код:
Код:

Option Explicit

Const cdoSendUsingPort = 2
Const cdoBasic = 1

Const strConstPartOfSchema = "http://schemas.microsoft.com/cdo/configuration/"


Dim strSourceFile
Dim strContent


strSourceFile = "C:\Мои проекты\0135\Sample.txt"

With WScript.CreateObject("Scripting.FileSystemObject")
        If .FileExists(strSourceFile) Then
                With WScript.CreateObject("CDO.Message")
                        .From    = "***@gmail.com"
                        .To      = "***@yandex.ru"
                        .Subject  = "Content of file [" & strSourceFile & "]"
                       
                        .TextBody = strContent
                        .TextBodyPart.Charset = "windows-1251"
                       
                        .AddAttachment strSourceFile
                       
                        With .Configuration.Fields
                                .Item(strConstPartOfSchema & "smtpserver")      = "smtp.gmail.com"
                                .Item(strConstPartOfSchema & "sendusing")        = cdoSendUsingPort
                                .Item(strConstPartOfSchema & "smtpserverport")  = 465
                                .Item(strConstPartOfSchema & "smtpauthenticate") = cdoBasic
                                .Item(strConstPartOfSchema & "sendusername")    = "***@gmail.com"
                                .Item(strConstPartOfSchema & "sendpassword")    = "***"
                                .Item(strConstPartOfSchema & "smtpusessl")      = True
                               
                                .Update
                        End With
                       
                        .Send
                End With
        Else
                WScript.Echo "Source file [" & strSourceFile & "] not found."
                WScript.Quit 1
        End If
End With

WScript.Quit 0

Теперь можете попробовать с одного Gmail-адреса отправить на другой Gmail-адрес.

Update2: если сработает — пишите, как лучше отправлять файлы, в примере взят один с жёстко заданным именем.

ymo_4@vk 03-12-2017 22:37 2782123

Цитата:

Цитата Iska
Письмо получил, пробую.
Update: попробовал от Вашего имени к себе — работает, письмо получил. »

Спасибо вам большое!
И скажите пожалуйста как добавить текст?

Iska 03-12-2017 22:39 2782124

Цитата:

Цитата ymo_4@vk
И скажите пожалуйста как добавить текст? »

Код:

Option Explicit

Const cdoSendUsingPort = 2
Const cdoBasic = 1

Const strConstPartOfSchema = "http://schemas.microsoft.com/cdo/configuration/"


Dim strSourceFile


strSourceFile = "C:\Мои проекты\0135\Sample.txt"

With WScript.CreateObject("Scripting.FileSystemObject")
        If .FileExists(strSourceFile) Then
                With WScript.CreateObject("CDO.Message")
                        .From    = "***@gmail.com"
                        .To      = "***@yandex.ru"
                        .Subject  = "File [" & strSourceFile & "]"
                       
                        .TextBody = "Мама мыла раму"
                        .TextBodyPart.Charset = "windows-1251"
                       
                        .AddAttachment strSourceFile
                       
                        With .Configuration.Fields
                                .Item(strConstPartOfSchema & "smtpserver")      = "smtp.gmail.com"
                                .Item(strConstPartOfSchema & "sendusing")        = cdoSendUsingPort
                                .Item(strConstPartOfSchema & "smtpserverport")  = 465
                                .Item(strConstPartOfSchema & "smtpauthenticate") = cdoBasic
                                .Item(strConstPartOfSchema & "sendusername")    = "***@gmail.com"
                                .Item(strConstPartOfSchema & "sendpassword")    = "***"
                                .Item(strConstPartOfSchema & "smtpusessl")      = True
                               
                                .Update
                        End With
                       
                        .Send
                End With
        Else
                WScript.Echo "Source file [" & strSourceFile & "] not found."
                WScript.Quit 1
        End If
End With

WScript.Quit 0

Цитата:

Цитата ymo_4@vk
Спасибо вам большое! »

Э… «Спасибо, работает» или «Спасибо, не работает» ;)?

ymo_4@vk 03-12-2017 22:56 2782127

Цитата:

Цитата Iska
Э… «Спасибо, работает» или «Спасибо, не работает» ? »

Работает =), и ещё раз спасибо!

Iska 03-12-2017 23:23 2782128

Цитата:

Цитата ymo_4@vk
Работает , и ещё раз спасибо! »

Лады. Тогда зачищаю у себя Ваше письмо с явками и паролями.

А что с:
Цитата:

Цитата Iska
если сработает — пишите, как лучше отправлять файлы, в примере взят один с жёстко заданным именем. »

— есть нужда?

addy2k 29-11-2019 09:33 2898445

Помогите пожалуйста !!!
У всех видимо работает .... а я уже второй день бьюсь и ничего не отправляет !!!
Вот код :
Option Explicit

Const cdoSendUsingPort = 2
Const cdoBasic = 1

Const strConstPartOfSchema = "http://schemas.microsoft.com/cdo/configuration/"


Dim strSourceFile


strSourceFile = "C:\1\1.txt"

With WScript.CreateObject("Scripting.FileSystemObject")
If .FileExists(strSourceFile) Then
With WScript.CreateObject("CDO.Message")
.From = "*****@gmail.com"
.To = "*****@gmail.com"
.Subject = "File [" & strSourceFile & "]"

.TextBody = "Мама мыла раму"
.TextBodyPart.Charset = "windows-1251"

.AddAttachment strSourceFile

With .Configuration.Fields
.Item(strConstPartOfSchema & "smtpserver") = "smtp.gmail.com"
.Item(strConstPartOfSchema & "sendusing") = cdoSendUsingPort
.Item(strConstPartOfSchema & "smtpserverport") = 465
.Item(strConstPartOfSchema & "smtpauthenticate") = cdoBasic
.Item(strConstPartOfSchema & "sendusername") = "*****@gmail.com"
.Item(strConstPartOfSchema & "sendpassword") = "*****"
.Item(strConstPartOfSchema & "smtpusessl") = True

.Update
End With

.Send
End With
Else
WScript.Echo "Source file [" & strSourceFile & "] not found."
WScript.Quit 1
End If
End With

WScript.Quit 0

Iska 30-11-2019 10:07 2898599

addy2k, идёте сюда: https://myaccount.google.com/lesssecureapps и разрешаете доступ для «Ненадежные приложения, у которых есть доступ…», дабы статус сменился с «Небезопасные приложения заблокированы» на «Небезопасные приложения разрешены». И затем пробуете скрипт заново.


Время: 22:56.

Время: 22:56.
© OSzone.net 2001-