import arcgisscripting, smtplib, os, sys, traceback from email.MIMEMultipart import MIMEMultipart from email.MIMEBase import MIMEBase from email.MIMEText import MIMEText from email.Utils import COMMASPACE, formatdate from email import Encoders gp = arcgisscripting.create(9.3) #********************************************************************** # Description: # Emails a file. File is assumed to be a zip file. Routine either attaches # the zip file to the email or sends the URL to the zip file. # # Parameters: # 1 - File to send. # 2 - Email address to send file. # 3 - Name of outgoing email server. # 4 - Output boolean success flag. #********************************************************************** def send_mail(send_from, send_to, subject, text, f, server, smtpUser="", smtpPwd=""): try: msg = MIMEMultipart() msg['From'] = send_from msg['To'] = COMMASPACE.join(send_to) msg['Date'] = formatdate(localtime=True) msg['Subject'] = subject msg.attach( MIMEText(text) ) part = MIMEBase('application', "zip") # Change if different file type sent. part.set_payload( open(f,"rb").read() ) Encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f)) msg.attach(part) smtp = smtplib.SMTP(server) # If your server requires user/password if smtpUser != "" and smtpPwd != "": smtp.login(smtpUser, smtpPwd) smtp.sendmail(send_from, send_to, msg.as_string()) smtp.close() except: tb = sys.exc_info()[2] tbinfo = traceback.format_tb(tb)[0] pymsg = "PYTHON ERRORS:\nTraceback Info:\n" + tbinfo + "\nError Info:\n " + \ str(sys.exc_type)+ ": " + str(sys.exc_value) + "\n" raise Exception("SendEmailError:" + pymsg) if __name__ == '__main__': sendto = gp.GetParameterAsText(0).split(";") fromaddr = gp.GetParameterAsText(1) subject = gp.GetParameterAsText(2) text = gp.GetParameterAsText(3) zipfile = gp.GetParameterAsText(4).replace("\\",os.sep) maxsize = int(gp.GetParameterAsText(5)) * 1000000 smtpMailServer = gp.GetParameterAsText(6) smtpUser = gp.GetParameterAsText(7) smtpPwd = gp.GetParameterAsText(8) try: zipsize = os.path.getsize(zipfile) #Message"Zip file size = " gp.AddMessage(gp.GetIDMessage(86156) + str(zipsize)) if zipsize <= maxsize: send_mail(fromaddr, sendto, subject, text, zipfile, smtpMailServer, smtpUser, smtpPwd) #Message "Sent zipfile to %s from %s" gp.AddIDMessage("INFORMATIVE", 86154, sendto, fromaddr) gp.SetParameterAsText(9, "True") else: #Message "The resulting zip file is too large (%sMB). Must be less than %MB. Please # digitize a smaller Area of Interest." gp.AddIDMessage("ERROR", 86155, str(round(zipsize / 1000000.0, 2)), str(round(maxsize / 1000000.0, 2))) gp.SetParameterAsText(9, "False") raise Exception except: # Return any python specific errors as well as any errors from the geoprocessor tb = sys.exc_info()[2] tbinfo = traceback.format_tb(tb)[0] pymsg = "PYTHON ERRORS:\nTraceback Info:\n" + tbinfo + "\nError Info:\n " + \ str(sys.exc_type)+ ": " + str(sys.exc_value) + "\n" gp.AddError(pymsg) #Message "Unable to send email" #gp.AddIDMessage("ERROR", 86157) gp.AddError("ERROR, Unable to send email")
Anyone written python email code that sends an email if the python script fails?
# import smtplib module import smtplib # This is the body of the email file = open('c:/temp/log.txt').read() # Create a connection to our email server via the IP address server = smtplib.SMTP('333.333.333.3') # The key here is the word "Subject:" It's a keyword to put the text that follows on the subject line. subj = "Subject: Python Email" # Send out the email (must separate subj+"\n"+file or all will go into subject line) # 3 ARGS only: fromEmail, toEmail, subject and body server.sendmail('rdh@xyz.com','rdh@xyz.xyz.com', subj+"\n"+file) # Terminate the connection to server and quit server.quit()
Any one have this error?[Errno 10061] No connection could be made because the target machine actively refused it
No, can you give me some examples.
server = smtplib.SMTP('333.333.333.3')
server = smtplib.SMTP('my.email.server', 22)
error: [Errno 10061] No connection could be made because the target machine actively refused it
Great. Thanks for the quick reply. Any idea where I would find this information?
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.