Страницы: 1
RSS
Отправка писем с других почтовых ящиков (которые также имеются в Outlook)
 
Добрый день, я дико извиняюсь, но не нашёл аналогичной темы, хотя, скорее всего она есть
Подскажите, что нужно добавить, чтобы сообщения не отправлялись с ящика "по-умолчанию", а отправлялись с той учетной записи, с которой мне необходимо
Ниже код
Код
Sub test()
  
Dim objOutlookApp As Object, objMail As Object
 
    Application.ScreenUpdating = False
    On Error Resume Next
    Set objOutlookApp = CreateObject("Outlook.Application")
    objOutlookApp.Session.Logon
    Set objMail = objOutlookApp.CreateItem(0)   'создаем новое сообщение
    If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub
    On Error GoTo 0
    'создаем сообщение
    With objMail
        .To = Range("A63").Value
        .BCC = Range("A64").Value
        .Subject = Range("A65").Value
        .BodyFormat = 2  'olFormatHTML - формат HTML
        .HTMLBody = ConvertRngToHTM(Selection)
        .Display 'отображаем сообщение
    End With
 
    Set objOutlookApp = Nothing: Set objMail = Nothing
    Application.ScreenUpdating = True
End Sub
Изменено: Andrey Melnikov - 02.09.2020 11:02:26
 
Andrey Melnikov, Доброго дня.
Инфа от сюда ТЫЦ
Код
.SentOnBehalfOfName = "123@mail.ru"

Ещё можно почитать тут ТЫЦ
Изменено: Wild.Godlike - 02.09.2020 10:18:30
 
Цитата
1.SentOnBehalfOfName = "123@mail.ru"
Благодарю, но мне необходимо отправить письмо с другой учетной записи, не от другого имени  
 
Цитата
Andrey Melnikov написал:
с другой учетной записи
по второй ссылке есть упоминание про профили: Session.Logon. Может Вы это имели ввиду?
Потому что есть понятие учетки(это когда в одной сессии Outlook Вы видите два почтовых ящика и оба настроена на отправку и получение). Тогда надо применять SentOnBehalfOfName. Но если речь про два разных профиля в настройках почты(делается через панель управления) - тогда надо применять вход в Outlook(Logon) от нужного профиля с указанием имени и пароля.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 


Дмитрий, у меня получается вот такой Outlook, я пытаюсь с разных POP ящиков отправить сообщения, но  всегда отправляется с первого, который по умолчанию стоит.
Неужели, возможно это использовать только, когда Outlook закрыт через код ниже:
Код
  'objOutlookApp.Session.Logon "profile","1234",False, True
Где
"profile" - имя аккаунта
"1234" - пароль

Возможно ли, что-нибудь добавить сюда, чтобы всё было окей
Код
Set objOutlookApp = CreateObject("Outlook.Application")
    objOutlookApp.Session.Logon
Изменено: Andrey Melnikov - 02.09.2020 11:38:50
 
Попробуйте задать так:
Код
.SendUsingAccount = "имя учетной записи"
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
.SendUsingAccount = "имя учетной записи"
Код
Sub sendmail()

Dim objOutlookApp As Object, objMail As Object
    Dim sTo As String, sSubject As String, sBody As String, sAttachment As String
      
    Application.ScreenUpdating = False
    
    'пробуем подключиться к Outlook, если он уже открыт
    Set objOutlookApp = GetObject(, "Outlook.Application")
    Err.Clear 'Outlook закрыт, очищаем ошибку
    If objOutlookApp Is Nothing Then
        Set objOutlookApp = CreateObject("Outlook.Application")
    End If
    objOutlookApp.Session.Logon
    
    
    lLastR = Cells(Rows.Count, 1).End(xlUp).Row 'определяем последнюю заполненную ячейку в столбце А
    'цикл от второй строки(начало данных с адресами) до последней ячейки таблицы
    For lr = 2 To lLastR
        Set objMail = objOutlookApp.CreateItem(0)   'создаем новое сообщение
        'создаем сообщение
        With objMail
            .To = Cells(lr, 1).Value 'адрес получателя
            .CC = Cells(lr, 2).Value 'копия
            .BCC = Cells(lr, 3).Value 'адрес для скрытой копии
            .Subject = Cells(lr, 4).Value 'тема сообщения
            .Body = Cells(lr, 6).Value 'текст сообщения
            If Not IsEmpty(Cells(lr, 5)) Then
                 If Dir(Cells(lr, 5).Value) <> "" Then
                 .Attachments.Add Cells(lr, 5).Value
                 End If
            End If
            .SendUsingAccount = "testmail@mail.ru"
            .Display 'Display, если необходимо просмотреть сообщение, а не отправлять без просмотра
        End With
    Next lr
          
    Set objOutlookApp = Nothing: Set objMail = Nothing
    Application.ScreenUpdating = True
End Sub
Написал, но, всё также - отправка осуществляется с почты по умолчанию  
 
Цитата
Andrey Melnikov написал:
.SendUsingAccount = "testmail@mail.ru"
а такая учетная запись реально создана? Или Вы просто какой-то адрес вбили и хотите, чтобы отправка от него шла?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
а такая учетная запись реально создана? Или Вы просто какой-то адрес вбили и хотите, чтобы отправка от него шла?
Учетная запись (почта) создана и внесена в outlook ( использую я учетку с другим названием это просто, как пример  
Изменено: Andrey Melnikov - 02.09.2020 15:55:46
 
Даже не знаю. Ознакомьтесь внимательно: Как отправить письмо от другой учетной записи Outlook
возможно, имеет смысл вывести на лист все учетные записи(в статье есть готовые код) и сверить - верно ли указываете в коде(вдруг где пробел затесался, а Вы его не учли).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
возможно, имеет смысл вывести на лист все учетные записи(в статье есть готовые код) и сверить - верно ли указываете в коде(вдруг где пробел затесался, а Вы его не учли).
Учетные записи вывел на лист,  .SentOnBehalfOfName = "account2@mail.thing" - работает хорошо, но это не подходит нам
.SendUsingAccount = "account2@mail.thing" - не работает, макрос создаётся, но письма посылаются с почты по умолчанию
Изменено: Andrey Melnikov - 02.09.2020 16:50:36
 
Цитата
Andrey Melnikov написал:
работает хорошо, но это не подходит нам
интересно. И чем именно не подходит, если работает? Можете как-то пояснить свою позицию?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата

интересно. И чем именно не подходит, если работает? Можете как-то пояснить свою позицию?

Все сообщения получаются в таком формате, а необходимо, чтобы они были просто от Novo@...
 
Цитата
Andrey Melnikov написал:
чтобы они были просто от
тут уже нечем помочь. Пробовали просто, без кодов, отправить от этой учетной записи? В каком виде письмо приходит? Получатель определяется как-то иначе?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Письмо получается в таком виде, если никаких макросов не использовать, а просто отправить
Это как раз то что нужно, возможно ли такое в макросе провернуть
Сейчас переставил почту по умолчанию на novo@ , но всё равно все сообщения созданные с помощью макроса отправляются с другой почты  8-0  
 
Добрый день, нужно так:
Код
Set .SendUsingAccount = objOutlookApp.Session.Accounts.Item("testmail@mail.ru")

Это относится к коду сообщения #7.
Всесто текстового значения аккаунта (обычно -адреса) можно использовать числовой индекс аккаунта: 1, 2 и т.п.
Изменено: ZVI - 02.09.2020 19:11:55
 
Владимир, спасибо! И ведь точно - совсем запамятовал, что это объект, в отличии от SentOnBehalfOfName.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий, да, это часто путается, сам тоже участвовал  :)
 
Цитата
Добрый день, нужно так:
Благодарю, всё заработало  
 
del
Изменено: Сергей Евдокимов - 26.03.2022 17:55:00
Компьютер никогда не заменит человека (©️ Hannibal Lecter)
Страницы: 1
Наверх