Отправка электронной почты высокой важности через Outlook с использованием Python

Используя пакет win32com.client, я могу отправить электронное письмо в формате HTML с помощью Outlook через Python. Однако мне трудно понять, как пометить электронное письмо как «высокий приоритет» или «высокая важность».

Вот код, который я использую для успешной отправки электронного письма (без маркировки приоритета):

RTFTEMPLATE = """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
08.00.0681.000">
<TITLE>%s</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT =
FACE="Times New Roman">
%s
</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>
<br>
%s
</BODY>
</HTML>"""

Format = { 'UNSPECIFIED' : 0, 'PLAIN' : 1, 'HTML' : 2, 'RTF'  : 3}
profile = "Outlook"


#session = win32com.client.Dispatch("Mapi.Session")
outlook = win32com.client.Dispatch("Outlook.Application")
#session.Logon(profile)
mainMsg = outlook.CreateItem(0)
mainMsg.To = "RECIPIENT"
mainMsg.Subject = subject
mainMsg.BodyFormat = Format['RTF']
mainMsg.HTMLBody = RTFTEMPLATE % (subject,html,bad_table)
mainMsg.Send()

person chungsangh    schedule 30.01.2014    source источник


Ответы (3)


Вы создаете свое сообщение через COM Outlook Object Model. Эта модель полностью задокументирована, что может очень помочь в подобных ситуациях.

Например, создаваемый вами MailItem задокументирован здесь. Как видно из этой страницы, у нее есть свойство Importance. для которого вы можете установить значение 2 (olImportanceHigh), чтобы пометить сообщение как «высокое значение».

В коде

mainMsg.Importance = 2
person Paul-Jan    schedule 02.02.2014
comment
Огромное спасибо! Я искал это ключевое слово: объектная модель Outlook. В полусвязанной заметке планировщик задач Widows, похоже, не любит сценарий Python win32com. Outlook выдаст сообщение об ошибке Мы не смогли запустить вашу программу. Если вы не знаете, я начну другую ветку вопросов. Thansl Paul-Jan EDIT: Похоже, это потому, что Python пытается открыть другой экземпляр Outlook. По крайней мере, это лучшее предположение, которое у меня есть. - person chungsangh; 03.02.2014

Чтобы пометить сообщение, чтобы Outlook распознал его как «высокоприоритетное», добавьте следующую строку в заголовки сообщения:

X-Priority: 1

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

person mti2935    schedule 30.01.2014
comment
Хм... вот тут у меня возникла проблема. Я не слишком знаком с Python, вызывающим приложение Windows (я написал свой код на основе изучения примеров, а не принципов), поэтому я понятия не имею, с чего даже начать... Есть ли у вас какие-либо рекомендации о том, с чего я могу начать? глядя в? - person chungsangh; 31.01.2014
comment
Я не уверен, что вам нужно вызывать приложение Windows (Outlook), чтобы делать то, что вы делаете. Другими словами, я не думаю, что вам нужно программировать Outlook для отправки сообщения только потому, что вы хотите отправить сообщение с атрибутом «высокий приоритет». Вы можете просто отправить сообщение из python обычным способом (через пакет электронной почты) и включить строку выше в заголовки сообщения. По этой ссылке приведен пример, показывающий, как настроить заголовки сообщений: docs. python.org/2/library/email-examples.html - person mti2935; 31.01.2014
comment
Интересный. Это кажется более надежным решением. Я должен буду изучить его, когда у меня будет немного времени. Спасибо за помощь - person chungsangh; 31.01.2014

Попробуйте установить эти дополнительные заголовки;

X-Priority: 1 (Highest)
X-MSMail-Priority: High
Importance: High

См., например. http://www.chilkatsoft.com/p/p_471.asp для примеров кода и обсуждение.

person tripleee    schedule 30.01.2014