7 votos

Cómo Recibir un Correo electrónico después de que un script se ejecute?

Estoy trabajando mi camino a través de mi primer intento de tareas programadas con modelbuilder y python. Hasta ahora tengo:

  1. Creado un modelo que reconcilia a nuestro SDE versiones y, a continuación, comprime la base de datos.

  2. Exportar el modelo a una secuencia de comandos para que yo pueda poner para arriba en el Programador de Tareas de Windows

Su una manera muy directa modelo, por lo que espero que funcione, sin embargo, me gustaría configurarlo a mi correo electrónico cuando se haya completado y incluir los mensajes de geoprocesamiento.

He encontrado este artículo de soporte que incluye un script que hace eso.

Mi pregunta es: ¿Cómo puedo incluir esta referencia o esta en mi conciliar y comprimir modelo?

3voto

Cocoro Cara Puntos 21

Me di cuenta de que tengo que añadir la de enviar por correo electrónico el código de la secuencia de comandos de python. Yo era capaz de encontrar este documento de ayuda que bastante mucho puesto que el proceso para mí. He hecho algunos ajustes menores y se acercó con:

import smtplib, time, arcpy, arceditor

#block new connections to the database.
arcpy.AcceptConnections('Database Connections/MyConnection.sde', False)

# wait 5 minutes
time.sleep(300)

# Disconnect all users from the database.
arcpy.DisconnectUser('Database Connections/MyConnection.sde', "ALL")

# Get a list of versions to pass into the ReconcileVersions tool.
versionList = arcpy.ListVersions('Database Connections/MyConnection.sde')

# Execute the ReconcileVersions tool.
arcpy.ReconcileVersions_management('Database Connections/MyConnection.sde', "ALL_VERSIONS", "sde.DEFAULT", versionList, "LOCK_ACQUIRED", "ABORT_CONFLICTS", "BY_OBJECT", "FAVOR_TARGET_VERSION", "POST", "KEEP_VERSION", "c:/path/to/log.txt")

# Run the compress tool. 
arcpy.Compress_management('Database Connections/MyConnection.sde')

#Allow the database to begin accepting connections again
arcpy.AcceptConnections('Database Connections/MyConnection.sde', True)

# Get Messages
ScriptMessages = arcpy.GetMessages()

# Send Email when script is complete
SERVER = "mailserver.yourcompany.com"
FROM = "GIS Admin <mail@yourcompany.com>"
TO = "johndoe@yourcompany.com"
SUBJECT = "The Script Has Completed"
MSG = "This is an auto generated Message.\n\rThe Reconcile & Compress script has completed.\n\n"  + ScriptMessages

# Prepare actual message
MESSAGE = """\
From: %s
To: %s
Subject: %s

%s
""" % (FROM, ", ".join(TO), SUBJECT, MSG)

# Send the mail
server = smtplib.SMTP(SERVER)
server.sendmail(FROM, TO, MESSAGE)
server.quit()

0voto

Aaron Puntos 25882

Tratar de integrar la siguiente secuencia de comandos como un scripttool en su ModelBuilder flujo de trabajo. Usted no tiene que programar cualquier tipo de eventos, basta con conectarlo a cualquier proceso y se le envía un mensaje. Tenga en cuenta que esto está dirigido a gmail.

import smtplib, os
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders

# This will log you into your gmail account--this is where the mail will be sent from.
gmail_user = sys.argv[1] # String e.g. mypassword
gmail_pwd = sys.argv[2] # String e.g. Password

# The parameters
to = sys.argv[3] # String  e.g. recipient@gmail.com
subject = sys.argv[4] # String e.g. "This is a test"
text = sys.argv[5] # String e.g. "Subject test"

def mail(to, subject, text):
    msg = MIMEMultipart()

    msg['From'] = gmail_user
    msg['To'] = to
    msg['Subject'] = subject

    msg.attach(MIMEText(text))   
    mailServer =smtplib.SMTP("smtp.gmail.com", 587)
    mailServer.ehlo()
    mailServer.starttls()
    mailServer.ehlo()
    mailServer.login(gmail_user, gmail_pwd)
    mailServer.sendmail(gmail_user, to, msg.as_string())
    mailServer.close()

mail(to, subject, text)

0voto

jonesdavide Puntos 176

Yo a veces uso smtplib, pero yo uso boto frecuencia (el que tienes que descargar/instalar desde aquí (https://code.google.com/p/boto/)) y un tema de Amazon SNS.

Cuando la adición de un suscriptor, usted puede especificar el correo electrónico o SMS (y algunos otros protocolos que no he utilizado):

enter image description here

import os,boto,traceback

aws_access_key_id = ''
aws_secret_access_key = ''
topicarn=''

def SendNotificationMessage(subject,message):
    try:
        #print 'subject,message',subject,message

        sns = boto.connect_sns(aws_access_key_id,aws_secret_access_key)

        res = sns.publish(topicarn, message, subject)

        #print res
    except:       
        traceback.print_exc()

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X