Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.58/55: Рейтинг темы: голосов - 55, средняя оценка - 4.58
0 / 0 / 1
Регистрация: 23.10.2012
Сообщений: 135

Можно ли с программы отправить Email?

06.01.2013, 12:03. Показов 11156. Ответов 50
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
можно ли с программы отправить Email?
т.е. пользователь набирает сообщение в Text и отправляет его на одно определенное мыло.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.01.2013, 12:03
Ответы с готовыми решениями:

Отправить email при помоши vb
у меня стоит visual basic 2010 express как мне зделать так чтобы при вводе в текстовое окно и нажатия определоной кнопки отпровлялся ...

Нужно из програмы на VB отправить email с вложенными файлами
Нужно из програмы на VB отправить email с вложенными файлами. Желательно не используя MS Winsock Control. Несколько месяцев назад я уже...

Как отправить из программы сообщение на email
Как отправить из программы сообщение на email? (Возможно не в ту тему написал)

50
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
11.08.2014, 00:08
Студворк — интернет-сервис помощи студентам
Как то я обещал выложить здесь решение на VBScript.
И когда почти закончил работу выяснил, что метод .Сlick для прикрепления аттача к почте вызывается синхронно,
а это смерть для VBScript, т.к. SendKeys не отправишь, а WinAPI я принципиально не хотел задействовать.
Решение придумано и продумано как. В общих чертах - нужно вызывать в параллельную работу 2-й скрипт.
Но мне было уже лень делать.
Вообщем, выкладываю, что есть.
Может, когда-то допилю или кто-то за меня.
Проверялось только на Win7 (не факт что на других ОСях будет работать).

Код полиглот. Можно отлаживать в VB6 (VBA), можно запускать в VBS, поправив комментарии.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
Option Explicit
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 
Const navOpenInNewTab = &H800
 
Sub GoToWebSite()
    Dim sURL: sURL = "https://mail.yandex.ru/neo2/#compose"
    Dim t, appIE 'As SHDocVw.InternetExplorer
    Set appIE = Nothing
    
    FindIEWindow "", appIE ' подключение к запущенной IE Instance
    If appIE Is Nothing Then Set appIE = CreateObject("InternetExplorer.Application") ' если не запущена
 
    appIE.Visible = True
    appIE.Silent = True
    appIE.Navigate2 sURL, navOpenInNewTab ' в новой вкладке
    
    t = Timer: Do
        mySleep 500
        FindIEWindow sURL, appIE ' переопределяю окно новой вкладки
    Loop Until StrComp(appIE.LocationURL, sURL, 1) = 0 Or (Timer - t) > 20  ' создание окна
    
    With appIE
        'Do While (.Busy Or .readyState <> 4): mySleep 500: Loop ' // Отключено. Действие выполнится, как только эл-т будет прогружен
        Dim D As MSHTML.HTMLDocument
        Set D = .document
        
        Dim eInput As MSHTML.HTMLInputElement
        Dim collInput As MSHTML.IHTMLElementCollection
        Set collInput = Nothing
        t = Timer: Do
            Set collInput = D.getElementsByTagName("INPUT")
            mySleep 500
        Loop While (collInput Is Nothing) And (Timer - t) < 20  ' прогрузка эл-тов интерфейса
        If collInput Is Nothing Then MsgBox "Connection Error.": Exit Sub
        
        t = Timer: Do Until collInput.Length Or (Timer - t) > 20 ' прогрузка эл-та INPUT
            mySleep 500
            Set collInput = D.getElementsByTagName("INPUT")
        Loop
        If collInput.Length = 0 Then MsgBox "Connection Error.": Exit Sub
    
        For Each eInput In collInput
            With eInput
                If .Type = "file" Then
                    'Debug.Print .Type, .className, .Value
                    eInput.Focus
                    eInput.Click ' вызов синхронен
'                    mySleep 1000
'                    CreateObject("WScript.Shell").SendKeys "c:\1 1\args.exe"
'                    mySleep 1000
'                    CreateObject("WScript.Shell").SendKeys "{ENTER}"
'                    mySleep 1000
                    Exit For
                End If
            End With
        Next
    End With
End Sub
 
Sub mySleep(ms) ' задержка в мс.
    Sleep ms 'Win API
    'WScript.Sleep ms
End Sub
 
Sub FindIEWindow(site, wnd) ' подключение к экземпляру IE. [site] - Опционально. Идентификация по адресу загружаемой страницы.
    Dim Window, oShell, IEPath_x64, IEPath_x32
    Set oShell = CreateObject("WScript.Shell")
    IEPath_x64 = oShell.ExpandEnvironmentStrings("%ProgramFiles%") & "\Internet Explorer\IExplore.exe"
    IEPath_x32 = oShell.ExpandEnvironmentStrings("%ProgramFiles(x86)%") & "\Internet Explorer\IExplore.exe"
    For Each Window In CreateObject("Shell.Application").Windows
        With Window
            If StrComp(.FullName, IEPath_x64, 1) = 0 Or StrComp(.FullName, IEPath_x32, 1) = 0 Then ' ищу по расположению IE на диске
                If site = "" Then ' первое окно
                    Set wnd = Window
                    Exit For
                Else
                    If StrComp(.LocationURL, site, 1) = 0 Then ' по имени сайта
                        Set wnd = Window
                        'Exit For ' не останавливаемся - ищем самое свежее окно
                    End If
                End If
            End If
        End With
    Next
End Sub
1
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
06.07.2015, 11:41
Добрый день!

Попробовал вот такой код...

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim jmail As Object
    Set jmail = CreateObject("JMail.Message")
    With jmail
        .Charset = "windows-1251"               ' кодировка
        .AddRecipient "megapolis2004@yandex.ru" ' адрес получателя
        .From = "login@yandex.ru"               ' адрес отправителя
        .Body = "Текст письма..."               ' перевод на новую строку - & vbCrLf
        .Subject = "OPERsa"                     ' тема письма
        .EnableCharsetTranslation = False       ' так надо...
        .MailServerUserName = "megapolis2004"   ' логин
        .MailServerPassword = "0675467603"      ' пароль
        .Send ("smtp.yandex.ru")                ' лети!...
    End With
    Set jmail = Nothing
В результате
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
06.07.2015, 11:45
получается вот это....

не подскажите что я делаю не так?
Миниатюры
Можно ли с программы отправить Email?  
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
06.07.2015, 15:19
Catstail, Dragokas у вас не осталось рабочих исходников???
Буду оч. признателен...
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38228 / 21160 / 4314
Регистрация: 12.02.2012
Сообщений: 34,773
Записей в блоге: 14
06.07.2015, 18:08
kreotodr, сообщение означает, что неверно задано имя почтового сервера
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
06.07.2015, 19:33
Цитата Сообщение от Catstail Посмотреть сообщение
ообщение означает, что неверно задано имя почтового сервера
А примерчиком не поделитесь?
Пробовал разные варианты. Фонарь....
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
06.07.2015, 20:06
Цитата Сообщение от kreotodr Посмотреть сообщение
Dragokas у вас не осталось рабочих исходников???
Буду оч. признателен...
kreotodr, перечитайте всю тему от начала.
Все, что я выкладывал здесь на тот момент было рабочее, только логин и пароль удалил.
Особенно обратите внимание на комментарии к коду.

Добавлено через 3 минуты
Цитата Сообщение от kreotodr Посмотреть сообщение
не подскажите что я делаю не так?
Возможно, нужно указать конкретный порт SMTP сервера. Это смотреть на странице техподдержки Вашего почтовика.
Как задать при вызове из Jmail не знаю. Предлагаю ознакомится с документацией к нему. Потом и нам заодно расскажите.

Я бы для начала воспользовался протокол Майкрософт (см. в этой же теме), а уж затем экспериментировал на Jmail.
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
07.07.2015, 08:27
Цитата Сообщение от Dragokas Посмотреть сообщение
Все, что я выкладывал зд
Вообщем то ваш пример (1 страница) сработал...
Остальным заморачиваться не стал...
Спасибо

Добавлено через 12 часов 4 минуты
Вообщем
Цитата Сообщение от Dragokas Посмотреть сообщение
kreotodr, перечитайте всю тему от начала.
Все, что я выкладывал здесь на тот момент было рабочее, только логин и пароль удалил.
Особенно обратите внимание на комментарии к коду.
В целом и общем ошибки в коде (мелкие были)

Чуток подправил...
код на 100% рабочий и даже сигнализирует об отправленном (не путать с доставленным) письмом...

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Err.Clear
On Error Resume Next
 
Dim o_Mess, v_Conf
    v_Conf = "http://schemas.microsoft.com/cdo/configuration/"
    Set o_Mess = CreateObject("CDO.Message")
 
With o_Mess
    .To = "oleksandr.nosar@gmail.com" 'куда отправляем
    .From = "Test@gmail.com " 'имя отправителя + Email
    .Subject = "Test" 'Тема письма
    .TextBody = "Hi 2" 'Сообщение
    .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") = "oleksandr.nosar@gmail.com" 'здесь имя пользователя с!!!! @, например 
    .Item(v_Conf & "sendpassword") = "xxx-xxxx-xxxxx-xxxx" 'пароль
    .Item(v_Conf & "smtpserverport") = 465 'порт (альтернативные для других серверов 25, [B]587[/B])
    .Item(v_Conf & "smtpusessl") = True 'использовать ли шифрованое подключение SSL
    .Item(v_Conf & "smtpconnectiontimeout") = 15 'Максимальное время ожидания ответа от сервера
    .Update
 
End With
 
    Debug.Print "Err.LastDllError:" & Err.LastDllError
    Debug.Print "Err             :" & Err
    Debug.Print "Error           :" & Error(Err)
    
    If Err <> 0 Then
        MsgBox "Sent Error:" & Error(Err)
    Else
        MsgBox "Sent ok"
    End If
    
End With
Set o_Mess = Nothing
End
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
07.07.2015, 12:48
Вы преувеличиваете.
Visual Basic
1
.Item(v_Conf & "sendusername") = "oleksandr.nosar@gmail.com" 'здесь имя пользователя с!!!! @, например
Это уже зависит от Вашего почтового сервера.
Некоторые воспринимают в этом поле только логин, другие только логин + @сервер, третие - и то, и другое.

А вот это уже действительно интересно. Помню как то об этом спрашивал:
Visual Basic
1
.From = "Ваше имя или никнейм <login@gmail.com>" 'имя отправителя + Email
Добавлено через 2 минуты
Цитата Сообщение от kreotodr Посмотреть сообщение
и даже сигнализирует об отправленном (не путать с доставленным) письмом...
На деле может оказаться, что оно даже не отправлено, так что я бы поостерегся.
А для надежности воспользовался бы консольным управлением какой-нибудь из программ-почтовых клиентов.
1
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
08.07.2015, 08:43
Catstail Так вы нас не просветите, что не так в коде с jmail

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim jmail As Object
    Set jmail = CreateObject("JMail.Message")
    With jmail
        .Charset = "windows-1251"               ' кодировка
        .AddRecipient "megapolis2004@yandex.ru" ' адрес получателя
        .From = "login@yandex.ru"               ' адрес отправителя
        .Body = "Текст письма..."               ' перевод на новую строку - & vbCrLf
        .Subject = "OPERsa"                     ' тема письма
        .EnableCharsetTranslation = False       ' так надо...
        .MailServerUserName = "megapolis2004"   ' логин
        .MailServerPassword = "0675467603"      ' пароль
        .Send ("smtp.yandex.ru")                ' лети!...
    End With
    Set jmail = Nothing
Добавлено через 1 минуту
Кстати, нашел еще один работающий способ...

https://www.emailarchitect.net... x/b/4.aspx
Но есть проблема. Вручную отказывается регистрироваться библиотека EASendMailObjLib
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
08.07.2015, 20:56
kreotodr, я ведь Вам уже написал возможную проблему:
Цитата Сообщение от Dragokas Посмотреть сообщение
Возможно, нужно указать конкретный порт SMTP сервера. Это смотреть на странице техподдержки Вашего почтовика.
Как задать при вызове из Jmail не знаю. Предлагаю ознакомится с документацией к нему. Потом и нам заодно расскажите.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.07.2015, 20:56

Отправить файл по email
Люди помогите очень нужно. Програма заключатся есть какойто файл (константа). и его нужно скопировать и отправить на эмейл или хостинг...

Не могу отправить email
Всем привет, хочу отправить email, нашел несколько примеров, какие-то работают, а какие-то нет. Вот например: # coding: utf-8 import...

Отправить сообщение на email
У меня есть форма html. Нужно написать код php для отправки сообщения на почту и доработать код html до рабочего состояния. Php не...

Отправить email с вебстраницы
Всем привет. Как я могу сделать форму с которой потом люди скажем смогут мне отправлять комменты? У меня вот есть такой код: ...

Не могу отправить Email в Delphi
procedure TForm2.Button1Click(Sender: TObject); begin idSmtp1.Host := 'SMTP.yandex.ru'; idSmtp1.Port := 25; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
51
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru