I got a request from a client who constantly gets CVs and have to download them for the hiring managers to review them and wanted to get some way an automated mechanism of downloading all those emails.
Googling lead me to the exchangelib project which is a great python source for such a purpose. I built my local lab of the following servers to test it
AD 2016 moh10ly.local
Exchange 2016 = exch01.moh10ly.local
AAD = Another 2016 server to test from
I built my local Certification authority and made sure that all servers has the CA installed to avoid any issues on python.
If you are going to use this on your production environment you can basically install Python anywhere even on your own computer and it should work if EWS is exposed and Autodiscover is configured propely and have a valid and trusted 3rd party Certificate.
However, If you would like to schedule this to work on a daily basis and let it download attachments from mailbox then you’ll need a server or at least a computer to rely on that it would be on when the scheduled task works.
Prerequisites :
Windows Server 2016:
Download and install latest version of Python 3.10
If you’re doing this on a local Lab without a trusted 3rd certificate you’ll need to make sure to export your certificatation Authority Certificate in CER format, copy the cert and add it to the end of Python root PEM.
Testing Scenario
I created two mailboxes on my local Exchange server lab
I have sent myself an email to info@moh10ly.com with 3 attachments in it as you can see.
Setup a server to use to download all attachments from the mailbox.
Enter your Exchange server configuration. Since autodiscover didn’t work for me as I don’t have a public certifiate so I went ahead and placed the server configuration.
Configure the local path of where you want to save attachments to on the server where this code is going to be launched from. in my code example I have created a folder called “Temp” on the C root drive and that’s what I will use.
You can pickup a different local path by changing the /temp path in the line “local_path = os.path.join(‘/temp‘, attachment.name)”
import os.path
from exchangelib import Account, FileAttachment, ItemAttachment, Message
some_folder = account.inbox
for item in some_folder.all():
for attachment in item.attachments:
if isinstance(attachment, FileAttachment):
local_path = os.path.join('/temp', attachment.name)
with open(local_path, 'wb') as f:
f.write(attachment.content)
This by now should be working fine and you should see that it is saving all your mailbox attachments to the folder that you have configured in the path section of the code.
Complete code to run
Working config
from exchangelib import DELEGATE, IMPERSONATION, Account, Credentials, EWSDateTime, EWSTimeZone, Configuration, NTLM, GSSAPI, CalendarItem, Message, Mailbox, Attendee, Q, ExtendedProperty, FileAttachment, ItemAttachment, HTMLBody, Build, Version, FolderCollection
credentials = Credentials(username='moh10ly\info', password='Bc12345$')
ews_url = 'https://mail.moh10ly.com/EWS/exchange.asmx'
ews_auth_type = 'NTLM'
primary_smtp_address = 'info@moh10ly.com'
config = Configuration(service_endpoint=ews_url, credentials=credentials, auth_type=ews_auth_type)
account = Account(
primary_smtp_address=primary_smtp_address,
config=config, autodiscover=False,
access_type=DELEGATE)
import os.path
from exchangelib import Account, FileAttachment, ItemAttachment, Message
some_folder = account.inbox
for item in some_folder.all():
for attachment in item.attachments:
if isinstance(attachment, FileAttachment):
local_path = os.path.join('/temp', attachment.name)
with open(local_path, 'wb') as f:
f.write(attachment.content)
-----------------
#To download all attachments in the inbox:
for item in account.inbox.all():
for attachment in item.attachments:
if isinstance(attachment, FileAttachment):
local_path = os.path.join('/sky', attachment.name)
with open(local_path, 'wb') as f, attachment.fp as fp:
buffer = fp.read(1024)
while buffer:
f.write(buffer)
buffer = fp.read(1024)
print('Saved attachment to', local_path)
Website monitoring tools/services help maintain uninterrupted website access, minimize downtime, optimize performance, and functionality to ensure that the site is online and running smoothly 24/7. In case of downtime, they provide alerts by email, phone call, or SMS.
Best Website Monitoring Tools & Software
Following is a handpicked list of Best Website Monitoring Tools, with popular features and website links. The list contains both open source(free) and commercial(paid) website monitoring software.
Fluxguard provides next generation uptime and defacement monitoring. Engineered for the US military, Fluxguard’s multi-vector downtime protection alerts you to breaking changes to content, code, and design.
Features:
Detects downtime with a full Chrome browser that loads all images, Javascript, CSS
Monitors and alerts changes to HTML, text, APIs, network activity
Visualping is a sophisticated yet easy-to-use website change detector and defacement monitoring tool. It sends you alerts whenever a web has changed, which is capable of detecting changes to text, visuals and code. This tool is ideal to minimize downtime but also to get notified of other changes on your website.
Features:
This software is market leader in website change monitoring.
You can get notifications via email, Slack, Teams, Discord or text.
Generous free plan, which provides you 2 checks per day or 65 checks per month with no other limitations.
For higher frequency of checks a range of paid plans are available beginning at $13 a month.
Site24x7 is a SaaS-based all-in-one monitoring solution for DevOps and IT. Site24x7 website monitor tests a website from global locations, helping you measure a site’s performance as well as reduce it’s downtime.
Key Features:
Monitor the performance and uptime of websites and other internet services like DNS server, FTP server, REST APIs etc. from 110+ locations worldwide.
Record and simulate multi-step user interactions in a real browser and optimize them.
Record load time for each static resource on your website.
Monitor SSL/TLS certificates, website defacement etc. and secure your website.
Sematext offers a real user monitoring (RUM) solution, Sematext Experience, and a synthetic monitoring tool, Synthetics that provide end-to-end visibility for faster troubleshooting and optimal user experience.
Features:
A unified location for all your logs, metrics, and events
Identify resources & requests with the biggest negative impact on your website performance
ManageEngine Applications Manager enables you to monitor & track all aspects affecting the performance of websites. It provides four different monitors (URL monitor, URL Sequence Monitor, Website Content Monitor, and Real Browser Monitor) for dynamic monitoring of websites.
Features:
Monitor the performance of a single webpage or sequence of webpages.
Monitor critical page workflows and test applications before launch.
Track unauthorized content changes.
Simulate & analyze end user experience and measure website performance from multiple locations.
Identify and resolve issues faster with automated application discovery, tracing and diagnostics(ADTD).
Anticipate future resource utilization and growth with machine learning enabled analytics.
Web Performance Monitor by Solarwinds helps you troubleshoot internal and external app performance issues from a single dashboard. You can use this tool to customize the web-based performance dashboards, charts, and views.
Features:
You can monitor performance from multiple locations.
It provides a detailed load-time report.
You will get complete website performance monitoring for better visibility.
It offers a browser-related transaction recorder.
You can track any website or app inside or outside the firewall.
It enables you to monitor synthetic transactions continuously
Paessler Website Monitoring is a tool that can monitor the availability of site 365 per year. This application can check the load time of your website.
Features:
It ensures that your website run smoothly with no hassle.
This application can monitor more than one URLs with ease.
StatusCake is a website uptime monitoring tool that sends instant alerts when a user’s website goes down. It can also provide alerts when any technical problem like being slow to load found.
Features:
You can test website availability from over 28 countries.
Provide domain and server monitoring services.
It analyzes the speed at which your website loads.
You can renew your certificate using SSL monitoring of StatusCake.
It ensures that the website is not infected with viruses, trojans, or any other threats.
AlertBot is a website monitoring tool that offers advanced features that are easy to use for testing your websites, web applications, servers and API’s. They provide detailed reports that help pinpoint website problems and identify bottlenecks so you can act quickly.
Features:
It is simple, intuitive, and easy to setup with great customer support.
It offers a real browser transaction web recorder to simulate multi-step user interactions like shopping carts, form, logins and other processes.
You receive detailed summary reports in email.
They offer fast alerting via text, email, or phone call.
Updown is an online uptime monitoring tool that checks website status periodically by sending an HTTP request to any URL. If the website is not responding correctly, then it notifies you by SMS or email.
Features:
It offers multilingual supports.
Updown provides API to build a custom integration.
It conforms to the downtime from a range of locations.
This software matches the presence of string instead of HTTP status.
You will receive alerts for expiring soon or invalid certificates.
12) Uptime
Uptime is software that checks whether your website is down or not. This software will give you an alert by email, phone call, or SMS if your website is down. It checks your website availability from 30+ different locations spread across six continents.
Features:
It provides detailed server report time daily, weekly, or monthly.
It checks the website for the virus.
This software has the capability to monitor HTTP(s), API, TCP, DNS, and real user monitoring.
You can develop a custom app or develop an app from our list of projects.
It provides a range of integration, including Twitter and slack.
SmartBear is a tool for application performance monitoring, software testing and API management, and software development. It has a network of 350+ private monitoring options.
Features:
It detects performance anomalies for websites or web applications.
This tool helps you to analyze multi-step API transactions without writing code.
It monitors and reports on SLA (Service-Level Agreement) requirements.
Provides mobile monitoring for checking the performance of web apps, responsive design, and mobile-enabled sites.
It enhances mobility by monitoring cloud-based applications.
Pingdom is a website uptime monitoring tool that is dedicated to making the web faster and more reliable. With the help of this tool, customers get alerted about any issue so that they can focus on their daily business.
Features:
It examines all parts of a web page
This software provides a performance overview.
You can trace your performance history
It allows you to test from multiple locations.
It can track and analyze the load time of website critical pages.
Host Tracker is a comprehensive web monitoring tool that enables you to see a weak and strong website point. This tool also helps you to identify site response time and page speed.
Features:
You can check the availability of the website from more than 140 locations.
It allows you to download the final report in PDF, XML, or CSV format.
You can get notification of problems through Skype, email, voice call, or hangouts.
This tool can monitor domain and d security certificate expiring.
Host-tracker automatically pauses your Google Ads if your website is down.
Freshworks is a cloud-based solution that can monitor more than 50 URLs from 10 global locations. It gives protection from the false alerts. This tool helps you to get alters without login access.
Features:
It provides instant downtime alerts.
You can communicate the status of your web service and incidents with customers in real time.
More than 30 users receive instant weekly reports and downtime alerts.
It provides multi-channel notification, including Slack, SMS, Twilio, or Email.
This tool can analyze URL, UDP, TCP ports, DNS, etc.
Freshworks allows you to add customer troubleshooting instructions for each and every check.
New Relic APM is the uptime monitoring DevOps tool. This analytics product helps you to check the performance of the application and provide real time data.
Features:
Monitor performance of External Services
It allows full-stack alerting
Organize, visualize, evaluate with in-depth analytics
Provide a precise picture of dynamically changing systems.
The external service’s dashboard offers charts with response time
Create customized queries on metric data and names
Principal Transactions monitor feature to manage and track all the critical business or company transactions.
AppDynamics is application performance management software. It detects anomalies and keeps your business running smoothly. This software enables you to visualize revenue paths with customer and app experience in order to fix app issues.
Features:
It allows you to monitor every critical click, swipe, and tap.
This tool uses machine learning in order to automate anomaly detection.
It provides enterprise-grade security.
You can install, configure, administrate, and manage.
It can be deployed on-premises or as SaaS.
Appdynamics supports public, private, or multi-cloud applications.
Uptime monitoring services are online applications that help you measure the reliability/availability of a domain, server, website, TCP, DNS, and HTTP(S).
🚀 Which are the Best Website Monitoring Tools?
Below are some of the Best Website Monitoring Tools: