es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema en def OnForward(self, disp, item): en python utilizando win32.com

Encontré el código a continuación aquí en stackoverflow con el siguiente enlace:

Estoy intentando utilizar este código y agregar “def OnForward(self, disp, item):” para agregar una firma al correo electrónico que reenvío. Pero el reenvío no funciona correctamente. Intentaré explicarlo, cada vez que hago clic en reenviar, aparece el correo electrónico en una nueva ventana, pero también aparece en la ventana principal de Outlook y luego el “def OnRead(self):” deja de funcionar también. No sé si me estoy expresando correctamente, pero cualquier ayuda será apreciada.

outlook main Window

“`python
import win32com.client
import pythoncom

<h1>Handler para el Objeto Application</h1>

class Application_Handler(object):
def OnItemLoad(self, item):
print('Application::OnItemLoad')

<pre><code># Solo quiero trabajar con MailItems
if item.Class == win32com.client.constants.olMail:
# Obtener una interfaz Dispatch para el elemento
cli = win32com.client.Dispatch(item)
# Configurar un controlador
handler = win32com.client.WithEvents(cli, MailItem_Handler)
# Almacenar la interfaz Dispatch del MailItem para su uso posterior
handler.setDisp(cli)
</code></pre>

<h1>Handler para el objeto MailItem</h1>

class MailItem_Handler(object):
def setDisp(self, disp):
self.disp = disp

def OnOpen(self, item):
print('MailItem::OnOpen')

def OnRead(self):
print('MailItem::OnRead')
subj = self._disp.Subject
print('Asunto:', subj)
body = self._disp.Body
print('Cuerpo:', body)

def OnClose(self, item):
return
print('—————MailItem::OnClose——————-')
print('—————————————————–')

def OnForward(self, disp, item):
print('—————MailItem::OnForward——————-')

<pre><code>newMail = self._disp.Forward()
newMail.HTMLBody = self._disp.HTMLBody + 'teste'
newMail.Display()

print('—————————————————–')
</code></pre>

outlook = win32com.client.DispatchWithEvents("Outlook.Application", Application_Handler)

<h1>Bucle de mensajes</h1>

pythoncom.PumpMessages()
“`

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El individuo está tratando de modificar el código para agregar una firma en el correo electrónico que se reenvía, pero al hacer clic en el botón de reenvío, aparece una nueva ventana y se muestra en la ventana principal de Outlook, lo que hace que el “def OnRead(self):” deje de funcionar. Está buscando ayuda para resolver este problema. El código que está utilizando está escrito en Python y utiliza win32com y win32ole para activar eventos en Microsoft Outlook.

Comments are closed.