Как ввести имя отправителя в тело письма - PullRequest
1 голос
/ 19 июня 2019

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

Работа с электронной почтой работает, и я настраиваюсь на Juypter, запускаю Python 3, пишу по электронной почте из Outlook.

Мой код указан ниже.Mail.SenderName - это часть, которую я хочу получить из учетной записи Outlook пользователя.В VBA это будет эквивалентно использованию Application.UserName

import win32com.client as win32
outlook = win32.Dispatch("outlook.application")
mail = outlook.CreateItem(0)
mail.To = "user@somewhere.com"
mail.Subject = "Report"

#Text for email
mail.HTMLBody = "Dear All,<br><br>" \
"The latest version of the Report is attached in PDF format.<br><br>" \
"Kind Regards <br><br>" \
mail.SenderName

attachment  = filename
mail.Attachments.Add(attachment)

mail.Send()

. Поэтому я бы хотел, чтобы тело письма было:

Дорогие все,

Последнийверсия отчета прилагается в формате PDF.

С уважением

Боб Смит

Любая помощь, высоко ценится.

ОБНОВЛЕНИЕ
Объединив ответ от Error - Syntactical Remorse и Eugene Astafiev, с немного большим поиском, мне удалось решить проблему.Спасибо за руководство.

Полный код:

outlook = win32.Dispatch("outlook.application")
mail = outlook.CreateItem(0)
mail.To = "user@somewhere.com"
mail.Subject = "Report"

sender = outlook.GetNamespace("MAPI").CurrentUser.Name

#Text for email
mail.HTMLBody = "Dear All,<br><br>" \
"The latest version of the Report is attached in PDF format.<br><br>" \
"Kind Regards <br><br>" \
f"{sender}"

attachment  = filename
mail.Attachments.Add(attachment)

mail.Send()

1 Ответ

1 голос
/ 19 июня 2019

Вы можете:

  1. Используйте свойство NameSpace.CurrentUser , которое возвращает отображаемое имя текущего пользователя, вошедшего в систему, как объект Recipient.
      Sub DisplayCurrentUser()  
        Dim myNamespace As Outlook.NameSpace 
        Set myNameSpace = Application.GetNameSpace("MAPI") 
        MsgBox myNameSpace.CurrentUser.Name  
      End Sub
  1. Если он установлен, вы можете использовать свойство MailItem.SendUsingAccount , которое возвращает объект Account, представляющий учетную запись, под которой должен быть отправлен MailItem.
     MailItem.SendUsingAccount.DisplayName
...