Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
1 / 1 / 2
Регистрация: 18.09.2016
Сообщений: 67
1

Макрос для отправки бэкапа документа на почту используя стандартные средства windows

14.12.2018, 21:05. Показов 1297. Ответов 2

Author24 — интернет-сервис помощи студентам
Необходимо при сохранении документа создавать бэкап (копию в архиве). Архив готов, но вот как отправить его на почту никак не могу понять, outlook не рассматривается, мои пользователи идиоты и нажмут на отмену отправки. Через cdo объект не выходит даже обычное сообщение отправить, может у кого есть идеи. (с макросами работаю первый раз)

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
Set MailMessage = CreateObject("CDO.Message")
    If Err.Number <> 0 Then
        SendEMail = False
        Exit Sub
    End If
    Err.Clear
    On Error GoTo 0
    With MailMessage
        .Subject = "hello"
        .From = ""
        .To = ""
       
 
        With .Configuration.Fields
            ' set up the SMTP configuration
            .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = ""
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = ""
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
           .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 0
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = ""
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = ""
          
            .Update
        End With
        .BodyPart.Charset = "UTF-8"
 
        If MailBody <> vbNullString Then
            .TextBody = MailBody
        End If
 
        If IsArray(Attachments) = True Then
            ' attach all the files in the array.
            For N = LBound(Attachments) To UBound(Attachments)
                ' ensure the attachment file exists and attach it.
                If Attachments(N) <> vbNullString Then
                    If Dir(Attachments(N), vbNormal) <> vbNullString Then
                        .AddAttachment Attachments(N)
                    End If
                End If
            Next N
        Else
            ' ensure the file exists and if so, attach it to the message.
            If Attachments <> vbNullString Then
                If Dir(CStr(Attachments), vbNormal) <> vbNullString Then
                    .AddAttachment Attachments
                End If
            End If
        End If
 
        On Error Resume Next
        Err.Clear
        ' Send the message
        .Send
        If Err.Number = 0 Then
            SendEMail = True
        Else
            SendEMail = False
            Exit Sub
        End If
    End With
 
 
End Sub
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2018, 21:05
Ответы с готовыми решениями:

Разделить строку на отдельные слова не используя стандартные средства для разбиения строк
Дана строка S. Разделить строку на отдельные слова не используя стандартные средства для...

Найти самое длинное слово в строке, не используя стандартные средства для разбиения строк
Нуждаюсь в совете мудрых . . . 3)Дана строка S(предложение). Найти самое длинное слово в...

Дана строка S. Разделить строку на отдельные слова не используя стандартные средства для разбиения строк
class Program { static void enter( out char chars) { string str = Console.ReadLine() ; chars =...

Как работать с файлами dbf не используя стандартные средства
Как-то раз я видел ActiveX, который позволяет читать, писать, создавать БД не используя средств VB...

2
98 / 64 / 36
Регистрация: 04.12.2018
Сообщений: 158
14.12.2018, 22:56 2
Лучший ответ Сообщение было отмечено anon478 как решение

Решение

Надо бы настроить SMTP-сервер. Есть такой в сети? В данном макросе его настройки пустуют:

Цитата Сообщение от anon478 Посмотреть сообщение
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = ""
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = ""
Для отладки отправки почты можно применить Test Mail Server Tool, работает без установки - просто запустить, будет висеть в трее и слушать localhost:25 и всё что придёт, складывать в папочку.

Сейчас соорудил и проверил ф-цию для отправки текста, работает:

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
Sub Макрос1()
    MsgBox SendTextMail("boss@local.net", "admin@local.net", "Test", "Hello, boss!")
End Sub
 
Function SendTextMail(AddrTo As String, AddrFrom As String, Subject As String, Body As String) As Boolean
    SendTextMail = False
 
    Set MailMessage = CreateObject("CDO.Message")
    If Err.Number <> 0 Then Exit Function
    Err.Clear
    
    With MailMessage
        .Subject = Subject
        .From = AddrFrom
        .To = AddrTo
        With .Configuration.Fields
            .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost"
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
            .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 0
            .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "user"
            .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "pass"
            .Update
        End With
        .BodyPart.Charset = "UTF-8"
        .TextBody = Body
    End With
    
    MailMessage.Send
    If Err.Number = 0 Then SendTextMail = True
End Function
1
74 / 7 / 2
Регистрация: 15.11.2018
Сообщений: 72
15.12.2018, 19:37 3
а почему собственно не svn или подобное? или настроить синхронизацию? Если надо делать в определённое время есть планировщик Window's.
При каких действиях планируете делать отправку бэкап? Если просто при сохранении, то готовьте много места или надо делать сразу сжатие.
Почтовый сервер свой? Если нет, то можно в ограничения на отправку
0
15.12.2018, 19:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2018, 19:37
Помогаю со студенческими работами здесь

Стандартные средства для генерации комбинаций
Возник вопрос нет ли каких то стандартных средств для следующего: def forever(c): while True:...

Есть ли в WPF стандартные средства для создании покадровой анимации?
Ситуация: есть 15 кадров изображения. Чтобы проиграть от первого по последнее нам нужно передать в ...

Проверить, содержится ли строка S0 в строке S. Не использовать стандартные средства для поиска подстрок
1)Дан целочисленный массив A размера N. Назовем серией группу подряд идущих одинаковых элементов, а...

Программа для отправки письма на почту
Сколько уже пишу на этом форуме,ни кто не может мне помочь с проектом.Раз так,я готов купить...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru