Что нового

Как создать письмо в Outlook?

vovsla

Осваивающий
Сообщения
607
Репутация
36
Попробовал использовать функцию _INetMail, письмо создается, но помимо получателя еще нужно указывать кто в копии и добавлять подпись.
Что посоветуете?
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Нашел 2 темы по этому поводу
https://www.autoitscript.com/forum/topic/101774-shell-execute-mail-to/#comment-723460
http://forum.ru-board.com/topic.cgi?forum=33&topic=10903&start=600

Все работает, только не понятно как добавлять подпись
Код:
CreateMailItem()
Func CreateMailItem()
    Const $olByValue = 1
    Local $olMailItem    = 0
    Local $olFormatRichText = 3
    Local $olImportanceLow   = 0
    Local $olImportanceNormal= 1
    Local $olImportanceHigh  = 2

    $oOApp = ObjCreate("Outlook.Application")
    $oOMail = $oOApp.CreateItem($olMailItem)

    With $oOMail
        .To = ("[email protected]")
		.CC = ("[email protected]")
        .Subject = "email subject"
        .BodyFormat =  $olFormatRichText
;~         .Importance = $olImportanceHigh
        .Body = "email message"
;~         .Attachments.Add ($file, $olByValue , 1)
        .Display
        ;.Send ; doesn't work for security reason
    EndWith
EndFunc
 

Cornet

Знающий
Сообщения
41
Репутация
6
Нет у аутлука какого-то специального метода вставки подписи.
Если вам нужно вставлять уже готовые подписи — они хранятся в папке C:\Users\[Name]\AppData\Roaming\Microsoft\Signatures\
Берите в любом удобном вам формате и вставляйте в .Body после основного текста (хотя в вашем случае наверное правильнее вставлять в .RTFBody если вы такой формат письму задали)
Вот тут все свойства объекта письмо https://msdn.microsoft.com/en-us/library/dn320330.aspx

P.S. Так как сам сижу в TheBat, решал эти проблемы через шаблоны, может вам будет тоже удобно — в аутлуке тоже есть такая возможность.
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Спасибо за ссылку. Да, нужно вставлять уже готовые подписи.
Но если я совместно использую Body и HTMLBody или RTFBody, то в теле письма остается только тот текст который вставляется последним.
В принципе можно читать HTML файл и перед вставкой добавлять текст письма в HTML код. Но может можно как-то добавить Body а потом HTMLBody без удаления предыдущего текста?
 

Cornet

Знающий
Сообщения
41
Репутация
6
А зачем их совместно использовать? Надо что-то одно выбрать и им пользоваться. Не может письмо быть одновременно и html и текстовым
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Совместно чтобы добавлять текст и отформатированную подпись в HTML формате отдельно, а так придется текст в HTML впихивать, но это уже мелочи.
Спасибо за информацию
 

Cornet

Знающий
Сообщения
41
Репутация
6
Не, такой халявы они не сделали ;)
Ну на самом деле не так и сложно:
Открыть хтмл подпись
найти в ней тег body
найти после него тег div
и потом вставить текст свой
Код:
<p class=MsoNormal>А тут основной текст строка 1</p>
<p class=MsoNormal>А тут основной текст строка 2</p>
<p class=MsoNormal>А тут основной текст строка 3</p>
<p class=MsoNormal><o:p> </o:p></p>
 

pvnn

Осваивающий
Сообщения
305
Репутация
32
Код:
.Attachments.Add ($file, $olByValue , 1)

Добавляет Attachment прямо в тело письма, а как сделать нормально?
 

Вложения

  • 2016-06-16_163120.png
    2016-06-16_163120.png
    3 КБ · Просмотры: 20
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Если использовать не Body а HTMLBody, то вложение прикрепляется нормально
 

Malderin

Новичок
Сообщения
68
Репутация
1
Друзья, поясните в чем проблема.
Код:
CreateMailItem()
Func CreateMailItem()
    Local $olMailItem    = 0
    Local $olFormatRichText = 3
    Local $olImportanceLow   = 0
    Local $olImportanceNormal= 1
    Local $olImportanceHigh  = 2

    $oOApp = ObjCreate("Outlook.Application.14")
    $oOMail = $oOApp.CreateItem($olMailItem)

    With $oOMail
        .To = ("[email protected]")
        .Subject = "email subject"
        .BodyFormat =  $olFormatRichText
        .Importance = $olImportanceHigh
        .Body = "email message"
        .Attach = "myfile"
        .Display
        ;.Send
    EndWith
EndFunc


Код исполняется, сообщение создается. Но при проверке на ошибки выдает вот это:
Код:
"D:\Alex\Utils\_Автоит\Автоит\01_Цех904\ЖИ заполнение\тест.au3"(13,10) : error: missing separator character before keyword.
        .To
~~~~~~~~~^
Что делать не знаю, подскажите как победить?
Версия автоит 3.3.12.0, офис 2010.


Добавлено:
Сообщение автоматически объединено:

Заменил
Код:
.To = ("[email protected]")

на
Код:
.Recipients.Add ("[email protected]")


И все заработало, вопрос снимается.


Добавлено:
Сообщение автоматически объединено:

Нет, все таки первый вопрос остается актуальным. Конструкция
Код:
.Recipients.Add ("[email protected]")

конечно работает, но выводит сообщение о безопасности, победить которое мне увы не удалось (хотя я пытался).

Подскажите все таки, кто знает, как победить:
Код:
"D:\Alex\Utils\_Автоит\AutoIt\01_Цех904\ЖИ заполнение\тест.au3"(13,10) : error: missing separator character before keyword.
        .To
~~~~~~~~~^
 

pvnn

Осваивающий
Сообщения
305
Репутация
32
Вот так все работает
Код:
; Убрать Запускать au3check перед компиляцией или запускать только exe
#AutoIt3Wrapper_Run_AU3Check=n  
CreateMailItem()
Func CreateMailItem()
    Local $olMailItem    = 0
    Local $olFormatRichText = 3
    Local $olImportanceLow   = 0
    Local $olImportanceNormal= 1
    Local $olImportanceHigh  = 2

    $oOApp = ObjCreate("Outlook.Application")
	If Not IsObj($oOApp) Then Exit MsgBox(16,'Ошибка!','Не удалось создать объект utlook.Application')
    $oOMail = $oOApp.CreateItem($olMailItem)

    With $oOMail
        .To = ("[email protected]")
        .Subject = "email subject"
        .BodyFormat =  $olFormatRichText
        .Importance = $olImportanceHigh
        .Body = "email message"
        .Attach = "myfile"
        .Display
        ;.Send
    EndWith
EndFunc
 

Malderin

Новичок
Сообщения
68
Репутация
1
Подсунул Au3Check.exe версии 3.3.13.15 и приписал в разделе [Compatibility] файла CW.ini эту версию:
Au3CheckVersion=3.3.10.x, 3.3.12.x, 3.3.14.x, 3.3.13.x
Проблема ушла.
 
Верх