2015-07-07 2 views
0

У меня есть шаблон из кода, который я собрал из разных мест, чтобы отправить электронную почту в различных моих сценариях:Отправить себе электронное письмо с помощью win32com.client

import win32com.client 

################################################## 
################################################## 
################################################## 
################################################## 
################################################## 
#this is a mutipurpose email template 

def email_template(recipient, email_subject, mail_body, attachment1, attachment2): 
    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.BodyFormat = Format['RTF'] 

    ######################### 
    #check if there is a mail body 
    try: 
     mainMsg.Subject = email_subject 
    except: 
     mainMsg.Subject = 'No subject' 

    ######################### 
    #check if there is a mail body 
    try: 
     mainMsg.HTMLBody = mail_body 
    except: 
     mainMsg.HTMLBody = 'No email body defined' 

    ######################### 
    #add first attachement if available 
    try: 
     mainMsg.Attachments.Add(attachment1) 
    except: 
     pass 

    ######################### 
    #add second attachement if available 
    try: 
     mainMsg.Attachments.Add(attachment2) 
    except: 
     pass 

    mainMsg.Send() #this line actually sends the email 

прекрасно работает. Просто. Однако у меня небольшая проблема, я строю скрипт, который должен отправить пользователю электронное письмо. Используя этот шаблон, как мне получить адрес электронной почты для пользователей? Я имею в виду что-то вроде использования "me", и он получит мой адрес.

Спасибо!

ответ

0

Свойство класса Namespace или Account позволяет отображать отображаемое имя текущего пользователя в качестве объекта Получателя. Класс Recipient предоставляет свойство , которое возвращает строку, представляющую адрес электронной почты Получателя.

В случае сервера Exchange, возможно, потребуется вызвать дополнительные свойства и методы:

  1. Используйте AddressEntry свойство класса получателя.
  2. Вызвать метод класса AddressEntry GetExchangeUser, который возвращает объект ExchangeUser, который представляет AddressEntry, если AddressEntry принадлежит объекту AddressList Exchange, например Global Address List (GAL) и соответствует пользователю Exchange.
  3. Получите PrimarySmtpAddress значение свойства. Возвращает строку, представляющую основной адрес SMTP-адреса для ExchangeUser.

Наконец, я бы рекомендовал использовать свойство Recipients класса MailItem, которое возвращает коллекцию получателей, которая представляет всех получателей для элемента Outlook. Метод Add создает нового получателя в коллекции получателей.

Sub CreateStatusReportToBoss() 
    Dim myItem As Outlook.MailItem 
    Dim myRecipient As Outlook.Recipient 
    Set myItem = Application.CreateItem(olMailItem) 
    Set myRecipient = myItem.Recipients.Add("Eugene Astafiev") 
    myItem.Subject = "Status Report" 
    myItem.Display 
End Sub 

Не забудьте назвать Resolve или ResolveAll методы класса получателя (ей), чтобы получить получатель разрешенных к адресной книге.

Смежные вопросы