Получение подписи Outlook по умолчанию в Python при создании электронной почты из общего почтового ящика (аналогично VBAPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Получение подписи Outlook по умолчанию в Python при создании электронной почты из общего почтового ящика (аналогично VBA

Сообщение Anonymous »

Ask - получить подпись по умолчанию от Outlook при создании электронной почты из кода ниже. В то время как код VBA работает без особых усилий, код Python выбирает подпись из основного почтового ящика, даже если указан для рассмотрения общего почтового ящика. Кроме того, требование состоит в том, чтобы сохранить отправленную электронную почту в папке отправленных элементов общего почтового ящика, которая также не работает, как и ожидалось. У меня есть два почтовых ящика в Outlook: моя личная учетная запись и общий почтовый ящик. Автоматизация прекрасно работает с личной учетной записью, но не с общим почтовым ящиком. В то время как VBA может сделать это успешно, Python не может. Python не может установить общий почтовый ящик в качестве отправителя и по умолчанию в личный почтовый ящик, вместо этого применяя его подпись. < /P>
Sub DraftEmailFromSpecificMailbox111()
Dim olApp As Outlook.Application
Dim olNS As Outlook.Namespace
Dim olAccount As Outlook.Account
Dim olMail As Outlook.MailItem
Dim olSignature As String
Dim acc As Outlook.Account
Dim targetEmail As String
targetEmail = "[email protected]"

' Initialize Outlook application and namespace
Set olApp = New Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")

' Assign the specified mailbox to the olAccount variable
For Each acc In olNS.Accounts
If LCase(acc.SmtpAddress) = LCase(targetEmail) Then
Set olAccount = acc
Exit For
End If
Next acc

If olAccount Is Nothing Then
MsgBox "Account not found: " & targetEmail
Exit Sub
End If

' Create new mail item
Set olMail = olApp.CreateItem(0) ' olMailItem

' Assign the account (no Set)
olMail.SendUsingAccount = olAccount

' Display the email to load signature
olMail.Display

' Capture the signature after display
olSignature = olMail.HTMLBody

' Set subject, recipients, and body
olMail.Subject = "Hi All"
olMail.To = "[email protected];"
olMail.HTMLBody = "Hi All,

" & olSignature

' Uncomment to send
' olMail.Send

' Cleanup
Set olMail = Nothing
Set olAccount = Nothing
Set olNS = Nothing
Set olApp = Nothing
End Sub
< /code>

import win32com.client as win32

def send_email(to_email, subject, body):
outlook = win32.Dispatch('Outlook.Application')
namespace = outlook.GetNamespace("MAPI")
accounts = namespace.Accounts

shared_mailbox_email = "[email protected]"
send_account = None

# Find the account matching the shared mailbox email
for account in accounts:
if account.SmtpAddress.lower() == shared_mailbox_email.lower():
send_account = account
break

if send_account is None:
print(f"Shared mailbox account {shared_mailbox_email} not found.")
return False

try:
# Create the email item
mail = outlook.CreateItem(0) # olMailItem

# Assign the account BEFORE displaying
mail.SendUsingAccount = send_account
mail.SentOnBehalfOfName = send_account

# Display the email to load the signature
mail.Display()

# Capture the signature (which is part of the HTMLBody after display)
signature_html = mail.HTMLBody

# Set the email subject and recipients
mail.Subject = subject
mail.To = to_email

# Compose the message with your body plus the signature
mail.HTMLBody = body + "

" + signature_html

# Optionally, set the sent folder if needed
# Find the shared mailbox folder
shared_folder = None
for folder in namespace.Folders:
if folder.Name.lower() == shared_mailbox_email.lower():
# Access the Sent Items folder inside the shared mailbox
shared_folder = folder.Folders['Sent Items']
break
if shared_folder:
mail.SentOnBehalfOfName = shared_mailbox_email
mail.SaveSentMessageFolder = shared_folder

# Send the email
# mail.Send()
return True

except Exception as e:
print(f"Error sending email: {e}")
return False

# Example usage
send_email("[email protected]", "Testing", "Hi All")


Подробнее здесь: https://stackoverflow.com/questions/797 ... from-a-sha
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»