Script

FTP

The professional tool to automate FTP, SFTP, FTPS

and schedule FTP batch jobs

send_email.ftp

This script synchronizes a remote folder from a local directory and sends an email if an error is found. The log file is also sent attached. This script uses the free command-line tool Blat for sending emails.
A different error email is sent depending on the error found

# FTP server settings
$ftp_server="ftp.myserver.com"
$ftp_user="myuser"
$ftp_password="mypass"
 
# Set here the directories that this script
# will synchronize.
$remote_dir_to_synchronize="/remotedir/"
$local_dir_to_synchronize="C:\MyDir"
 
 
# Blat parameters. This is the command line program
# used in this example to send emails from ScriptFTP
 
$blat_path="C:\blat\blat.exe"
 
$smtp_server="smtp.myserver.com"
$smtp_user="myuser_at_myserver.com"
$smtp_password="mypassword"
 
$email_from="scriptftp@myserver.com"
$email_to="me@myserver"
$email_subject="ScriptFTP error message"
$email_body1="Could not connect to FTP server"
$email_body2="Could not syncronize files"
 
 
# Build the log file path getting the windows temp path from
# the system environment variable TEMP and the file name "logfile-"
# appended with the current date. For example:
# C:\windows\temp\logfile-20070424.txt
$log_file_path=GETENV("TEMP")."\logfile-".GETDATE(FORMAT3).".txt"
 
# Start logging the script output
LOGTO($log_file_path)
 
 
# The blat command line to send an email should be
# like this (without the line breaks):
#
# C:\blat\blat.exe
# -server smtp.myserver.com
# -u myuser_at_myserver.com
# -pw mypassword
# -f scriptftp@myserver.com
# -to me@myserver
# -subject "ScriptFTP error message"
# -body "Error messsage here"
# -ps "C:\Users\Carlos\AppData\Local\Temp\logfile-20070427.txt"
#
# As there are two different kind of emails depending
# on the two errors that may happen we need to build
# two different blat command lines.
#
# Both have a common part, that is the variables
# $common_part_1, $common_part_2 and $common_part_3.
# The fourth part contains the different body and
# they are called $cmd_line_part_4_1 and $cmd_line_part_4_2
#
$common_part_1=$blat_path." -server ".$smtp_server." -u ".$smtp_user." -pw "
$common_part_2=$smtp_password." -f ".$email_from." -to ".$email_to." -subject ".'"'
$common_part_3=$email_subject.'"'
 
$cmd_line_part_4_1=" -body ".'"'.$email_body1.'"'." -ps ".'"'.$log_file_path.'"'
$cmd_line_part_4_2=" -body ".'"'.$email_body2.'"'." -ps ".'"'.$log_file_path.'"'
 
# Concatenate the text string to build the complete command lines
$blat_cmd_line_1=$common_part_1.$common_part_2.$common_part_3.$cmd_line_part_4_1
$blat_cmd_line_2=$common_part_1.$common_part_2.$common_part_3.$cmd_line_part_4_2
 
 
 
 
# Connect to the FTP server
$result=OPENHOST($ftp_server,$ftp_user,$ftp_password)
IF($result!="OK")
     PRINT("Cannot connect to FTP server. Sending an email and aborting in 5 seconds.")
     EXEC($blat_cmd_line_1)
     SLEEP(5)
     EXIT(1)
END IF
 
# Synchronize the files
$result=SYNC($local_dir_to_synchronize,$remote_dir_to_synchronize,UPLOAD)
IF($result!="OK")
    PRINT("Cannot syncronize. Sending an email and aborting in 5 seconds.")
    EXEC($blat_cmd_line_2)
    SLEEP(5)
    EXIT(2)
END IF
CLOSEHOST
 
 
EXIT(0)