{"id":9722,"date":"2019-05-22T05:46:00","date_gmt":"2019-05-22T11:46:00","guid":{"rendered":"https:\/\/swimlane.com\/resource\/swimlane-research-team-py-ews\/"},"modified":"2025-12-22T03:49:25","modified_gmt":"2025-12-22T10:49:25","slug":"equipe-de-recherche-sur-les-couloirs-de-nage-py-ews","status":"publish","type":"sw_resource","link":"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/","title":{"rendered":"L&#039;\u00e9quipe de recherche Swimlane ouvre les sources de py-ews"},"content":{"rendered":"\n\n\n<section class=\"bs-section bs-section-f49668dca89a07af4c4bed27713f079b6839f643 bs-section---default bs-section--blog-inner-banner  \"><style>.bs-section.bs-section-f49668dca89a07af4c4bed27713f079b6839f643{ background-color: #000743;} <\/style><div class=\"container\">\n<div class=\"bs-row row  flex-md-row-reverse bs-row---default\">\n<div class=\" bs-column col-sm-12 col-md-12 col-lg-6   bs-column-3c02e72bbbdd27fbc2206a57dc520373f8b450b2 bs-column---default bs-column--right d-flex flex-column justify-content-end    \"><figure class=\"wp-block-post-featured-image\"><img decoding=\"async\" src=\"https:\/\/swimlane.com\/wp-content\/uploads\/swimlane-research-team-py-ews.png\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"Hands typing on a laptop in a dim, focused workspace\" style=\"object-fit:cover;\" srcset=\"https:\/\/swimlane.com\/wp-content\/uploads\/swimlane-research-team-py-ews.png 800w, https:\/\/swimlane.com\/wp-content\/uploads\/swimlane-research-team-py-ews-300x186.png 300w, https:\/\/swimlane.com\/wp-content\/uploads\/swimlane-research-team-py-ews-768x477.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure><\/div>\n\n\n\n<div class=\" bs-column col-sm-12  col-md-12 col-lg-6   bs-column-6a13826d98ae006805bf00373c567a95c3c65a9a bs-column---default d-flex flex-column    \"><div class=\"wp-block-post-date\"><time datetime=\"2019-05-22T05:46:00-06:00\">Mai 22, 2019<\/time><\/div>\n\n<h1 class=\"wp-block-post-title has-text-color has-white-color\">Swimlane research team open sources py-ews<\/h1>\n\n\n<div class=\"bs-div bs-div-f106fb945b2c4610a440b9e5b4f63c0c1cbbec02 bs-div---default\"><div class=\"bs-div__inner d-flex flex-wrap align-items-center    \">\n<a class=\"bs-post__author has-text-align-center\" href=\"https:\/\/swimlane.com\/fr\/author\/Nick_Tausek\/\">\n\t<div class=\"profile-desc\">\n\t\t<figure>\n\t\t\t<img decoding=\"async\" src=\"https:\/\/swimlane.com\/wp-content\/uploads\/author_Nick_Tausek.jpg\" alt=\"user-avatar\">\n\t\t<\/figure>\n\t\t<span class=\"prefix\"><\/span>\n\t\t<span class=\"name\">\n\t\t\tNick Tausek\t\t<\/span>\n\t<\/div>\n<\/a>\n\n\n\n<div class=\"reading-time\">\n    <span class=\"reading-time__time\">2 <\/span> Minute Read\n<\/div><\/div><\/div>\n<\/div>\n<\/div>\n<\/div><\/section>\n\n\n\n\n\n\n\n\n\n<section class=\"bs-section bs-section-050e6505c2b06c7ce9ca858e2f56661a365e6ba8 bs-section---default bs-section--blog-inner-main-contents  \"><div class=\"container\">\n<div class=\"bs-row row justify-content-between  bs-row---default\">\n<div class=\" bs-column col-sm-12 col-md-1   bs-column-b9d738473a055284b615b4f50be5a383dfe4cc38 bs-column---default     \"><div class=\"heateor_sss_sharing_container heateor_sss_horizontal_sharing\" data-heateor-ss-offset=\"0\" data-heateor-sss-href='https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/'><div class=\"heateor_sss_sharing_ul\"><a aria-label=\"Email\" class=\"heateor_sss_email\" href=\"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/\" onclick=\"event.preventDefault();window.open('mailto:?subject=' + decodeURIComponent('Swimlane%20research%20team%20open%20sources%20py-ews').replace('&', '%26') + '&body=https%3A%2F%2Fswimlane.com%2Ffr%2Fblog%2Fswimlane-research-team-py-ews%2F', '_blank')\" title=\"Email\" rel=\"noopener\" style=\"font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle\"><span class=\"heateor_sss_svg\" style=\"background-color:#649a3f;width:35px;height:35px;border-radius:999px;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box\"><svg style=\"display:block;border-radius:999px;\" focusable=\"false\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"100%\" height=\"100%\" viewBox=\"-.75 -.5 36 36\"><path d=\"M 5.5 11 h 23 v 1 l -11 6 l -11 -6 v -1 m 0 2 l 11 6 l 11 -6 v 11 h -22 v -11\" stroke-width=\"1\" fill=\"#fff\"><\/path><\/svg><\/span><\/a><a aria-label=\"Twitter\" class=\"heateor_sss_button_twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?text=Swimlane%20research%20team%20open%20sources%20py-ews&url=https%3A%2F%2Fswimlane.com%2Ffr%2Fblog%2Fswimlane-research-team-py-ews%2F\" title=\"Twitter\" rel=\"nofollow noopener\" target=\"_blank\" style=\"font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle\"><span class=\"heateor_sss_svg heateor_sss_s__default heateor_sss_s_twitter\" style=\"background-color:#55acee;width:35px;height:35px;border-radius:999px;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box\"><svg style=\"display:block;border-radius:999px;\" focusable=\"false\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"100%\" height=\"100%\" viewBox=\"-4 -4 39 39\"><path d=\"M28 8.557a9.913 9.913 0 0 1-2.828.775 4.93 4.93 0 0 0 2.166-2.725 9.738 9.738 0 0 1-3.13 1.194 4.92 4.92 0 0 0-3.593-1.55 4.924 4.924 0 0 0-4.794 6.049c-4.09-.21-7.72-2.17-10.15-5.15a4.942 4.942 0 0 0-.665 2.477c0 1.71.87 3.214 2.19 4.1a4.968 4.968 0 0 1-2.23-.616v.06c0 2.39 1.7 4.38 3.952 4.83-.414.115-.85.174-1.297.174-.318 0-.626-.03-.928-.086a4.935 4.935 0 0 0 4.6 3.42 9.893 9.893 0 0 1-6.114 2.107c-.398 0-.79-.023-1.175-.068a13.953 13.953 0 0 0 7.55 2.213c9.056 0 14.01-7.507 14.01-14.013 0-.213-.005-.426-.015-.637.96-.695 1.795-1.56 2.455-2.55z\" fill=\"#fff\"><\/path><\/svg><\/span><\/a><a aria-label=\"Facebook\" class=\"heateor_sss_facebook\" href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Fswimlane.com%2Ffr%2Fblog%2Fswimlane-research-team-py-ews%2F\" title=\"Facebook\" rel=\"nofollow noopener\" target=\"_blank\" style=\"font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle\"><span class=\"heateor_sss_svg\" style=\"background-color:#0765FE;width:35px;height:35px;border-radius:999px;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box\"><svg style=\"display:block;border-radius:999px;\" focusable=\"false\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 32 32\"><path fill=\"#fff\" d=\"M28 16c0-6.627-5.373-12-12-12S4 9.373 4 16c0 5.628 3.875 10.35 9.101 11.647v-7.98h-2.474V16H13.1v-1.58c0-4.085 1.849-5.978 5.859-5.978.76 0 2.072.15 2.608.298v3.325c-.283-.03-.775-.045-1.386-.045-1.967 0-2.728.745-2.728 2.683V16h3.92l-.673 3.667h-3.247v8.245C23.395 27.195 28 22.135 28 16Z\"><\/path><\/svg><\/span><\/a><a aria-label=\"Linkedin\" class=\"heateor_sss_button_linkedin\" href=\"https:\/\/www.linkedin.com\/sharing\/share-offsite\/?url=https%3A%2F%2Fswimlane.com%2Ffr%2Fblog%2Fswimlane-research-team-py-ews%2F\" title=\"Linkedin\" rel=\"nofollow noopener\" target=\"_blank\" style=\"font-size:32px!important;box-shadow:none;display:inline-block;vertical-align:middle\"><span class=\"heateor_sss_svg heateor_sss_s__default heateor_sss_s_linkedin\" style=\"background-color:#0077b5;width:35px;height:35px;border-radius:999px;display:inline-block;opacity:1;float:left;font-size:32px;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle;background-repeat:repeat;overflow:hidden;padding:0;cursor:pointer;box-sizing:content-box\"><svg style=\"display:block;border-radius:999px;\" focusable=\"false\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 32 32\"><path d=\"M6.227 12.61h4.19v13.48h-4.19V12.61zm2.095-6.7a2.43 2.43 0 0 1 0 4.86c-1.344 0-2.428-1.09-2.428-2.43s1.084-2.43 2.428-2.43m4.72 6.7h4.02v1.84h.058c.56-1.058 1.927-2.176 3.965-2.176 4.238 0 5.02 2.792 5.02 6.42v7.395h-4.183v-6.56c0-1.564-.03-3.574-2.178-3.574-2.18 0-2.514 1.7-2.514 3.46v6.668h-4.187V12.61z\" fill=\"#fff\"><\/path><\/svg><\/span><\/a><\/div><div class=\"heateorSssClear\"><\/div><\/div>\n<\/div>\n\n\n\n<div class=\" bs-column col-sm-12  col-lg-8 col-md-11   bs-column-5fcbee853797bef68c609dd2715f511e3ead78a3 bs-column---default bs-column--contents     \">\n<h2>&nbsp;<\/h2>\n<p>Phishing impacts every organization, and security operations (SecOps) teams need to act quickly to remediate and prevent unknown threats within their email infrastructure. To help combat these threats, the Swimlane research team has open sourced <a href=\"https:\/\/py-ews.readthedocs.io\/en\/latest\/\" target=\"_blank\" rel=\"noopener\">py-ews<\/a> to enable security and IT teams to interact with Microsoft Exchange Web Services (EWS) using Python.<\/p>\n<h3>Why py-ews?<\/h3>\n<p>Organizations continue to battle against malicious phishing emails in their email environments, but security and IT teams have limited visibility into what currently resides in their users&#8217; mailboxes. <a href=\"https:\/\/py-ews.readthedocs.io\/en\/latest\/\" target=\"_blank\" rel=\"noopener\">Py-ews<\/a> was written to give control back to your security and IT teams so they can remediate threats faster.<\/p>\n<p>On-premises Microsoft Exchange and Microsoft Office 365 can be accessed programmatically using PowerShell or C#-based programs, which is great if you are strictly working on Windows operating systems. Additionally, if you are on macOS or *nix-based system and utilizing PowerShell Core, you can create a remote session to connect to your Exchange environment.<\/p>\n<p>These are all great options, but <a href=\"https:\/\/py-ews.readthedocs.io\/en\/latest\/\" target=\"_blank\" rel=\"noopener\">py-ews<\/a> is cross-platform and works with Python 2 and 3 to interact directly with Exchange Web Services for both on-premises Exchange (2010 to 2019) and Office 365. There is no middle man or compiled code to deal with, which means py-ews is faster.<\/p>\n<p>By utilizing Exchange Web Services SOAP XML, we interact directly with Exchange eDiscovery and other EWS service endpoints. At the time of writing this post, py-ews supports the following endpoints:<\/p>\n<ul>\n<li><strong>GetSearchableMailboxes<\/strong>: Automatically identify all mailboxes in your environment that you have access rights to search.<\/li>\n<li><strong>SearchMailboxes<\/strong>: By using Microsoft\u2019s <a href=\"https:\/\/docs.microsoft.com\/en-us\/exchange\/client-developer\/web-service-reference\/querystring-querystringtype\" target=\"_blank\" rel=\"noopener\">Advanced Query Syntax<\/a> you can search a single or all mailboxes in your environment.<\/li>\n<li><strong>DeleteItem<\/strong>: You can HardDelete, SoftDelete or MoveToDeletedItems a mail item.<\/li>\n<li><strong>Autodiscover<\/strong>: Autodiscover enables you to call a single endpoint when communicating with EWS.<\/li>\n<li><strong>ResolveNames<\/strong>: Translate a users email address into a detailed user object to retrieve properties from.<\/li>\n<li><strong>GetInboxRules<\/strong>: Determine the inbox rules of a single mailbox.<\/li>\n<\/ul>\n<p>To use the eDiscovery endpoints you must have <em>Discovery Management<\/em> rights within <a href=\"https:\/\/docs.microsoft.com\/en-us\/exchange\/security-and-compliance\/in-place-ediscovery\/assign-ediscovery-permissions\" target=\"_blank\" rel=\"noopener\">Exchange<\/a>. Py-ews also supports the ability to impersonate a user\/mailbox but you must have <a href=\"https:\/\/docs.microsoft.com\/en-us\/exchange\/client-developer\/exchange-web-services\/impersonation-and-ews-in-exchange\" target=\"_blank\" rel=\"noopener\">impersonation<\/a> rights within Exchange.<\/p>\n<h3>Scenario<\/h3>\n<p>Many security teams, like yours, need to respond to malicious emails within their environment. By using py-ews, you can retrieve a list of mailboxes within your Exchange environment, search them and then delete any malicious emails identified.<\/p>\n<p>Here is an example of how to do this with py-ews:<\/p>\n<pre>from pyews import UserConfiguration\nfrom pyews import GetSearchableMailboxes\nfrom pyews import SearchMailboxes\nfrom pyews import DeleteItem\nuserconfig = UserConfiguration(\n 'myaccount@company.com',\n 'Password1234'\n)\n# get searchable mailboxes based on your accounts permissions\nreferenceid_list = []\nfor mailbox in GetSearchableMailboxes(userconfig).response:\n referenceid_list.append(mailbox['ReferenceId'])\n# let's search all the referenceid_list items\nmessages_found = []\nfor search in SearchMailboxes('subject:account', userconfig,\nreferenceid_list).response:\n messages_found.append(search['MessageId'])\n# if we wanted to now delete a specific message then we would call the DeleteItem\n# class like this but we can also pass in the entire messages_found list\ndeleted_message_response = DeleteItem(messages_found[2], userconfig).response\n<\/pre>\n<p>Py-ews is available on <a href=\"https:\/\/pypi.org\/project\/py-ews\/\" target=\"_blank\" rel=\"noopener\">pypi<\/a> as of today and can be installed by running pip install pyews.<\/p>\n<p><a href=\"https:\/\/py-ews.readthedocs.io\/en\/latest\/\" target=\"_blank\" rel=\"noopener\">Continue reading about py-ews.<\/a><\/p>\n\n\n\n<div class=\"bs-div bs-div-d9c5723c7452741fa51dcfbad681e189ce0a3446 bs-div---default bs-div--blog-inner-download-guide\"><style>.bs-div.bs-div-d9c5723c7452741fa51dcfbad681e189ce0a3446 {background-image: url(https:\/\/swimlane.com\/wp-content\/uploads\/2022\/10\/download-report.png); background-position: center center;\n    background-size: cover;} <\/style><div class=\"bs-div__inner d-flex flex-wrap justify-content-center  flex-md-row-reverse align-items-md-center justify-content-md-between flex-md-nowrap  \"><div class='media-elements bs-media-element---default enable'>    <div class='bs-common-image'>\n                            <figure class='figure justify-content-start d-flex'>\n                            <picture>\n                            \n                            <img src='https:\/\/swimlane.com\/wp-content\/uploads\/secopshub-stack-logo-color.png' class='img-fluid'   alt='SecOps Hub logo' title=''  \/>\n                            <\/picture>\n                                \n                            <\/figure>\n                        <\/div><\/div>\n\n\n<div class=\"bs-div bs-div-2aebcd1b2c11849d7c87d8462be32842b8c42b50 bs-div---default\"><div class=\"bs-div__inner     \">\n<h2 class=\"wp-block-heading has-white-color has-text-color\" id=\"h-continue-the-conversation\">Continue the conversation<\/h2>\n\n\n\n<p class=\"has-white-color has-text-color\">SecOps Hub is a community of security pros gathered to discuss SecOps strategies, incident response best practices and ways to simplify SecOps with security orchestration, automation and response (SOAR). Continue this conversation and jump in on conversations like this one today!<\/p>\n\n\n\n<span class=\"bs-pro-button bs-pro-button---default bs-pro-button--primary-with-arrow-small bs-pro-button-p-btn-eb84db9e14646293e82bdfe679c4cb23487fceca\"><style>.bs-pro-button-p-btn-eb84db9e14646293e82bdfe679c4cb23487fceca .bs-pro-button__container {background-color: #abb8c3; color: #000000;}<\/style><a href=\"\" target=\"\" rel=\"noopener noreferrer\" class=\"bs-pro-button__container\">Join Now<\/a><\/span>\n<\/div><\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\" bs-column col-sm-12  col-md-12 col-lg-3   bs-column-4ffac197d945e44dadadc9d8f52ba4737135ba21 bs-column---default     \">\n<div class=\"bs-div bs-div-ffc71f24880cf5ca65c4a54e87fb14a656cc562d bs-div---default bs-div--tags\"><div class=\"bs-div__inner     \">\n<h2 class=\"wp-block-heading\" id=\"h-tags\">Tags<\/h2>\n\n\n<div class=\"post-tag-wrapper\">\n    <p><a href='https:\/\/swimlane.com\/fr\/tag\/research\/'><span class='tag-content'>Research<\/span><\/a><\/p><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"bs-div bs-div-69c461f15bb5fa3fc09d1aa73a0e5865005218ff bs-div---default bs-div--related-posts\"><div class=\"bs-div__inner     \">\n<h2 class=\"wp-block-heading\" id=\"h-related-posts\">Related Posts<\/h2>\n\n\n\n<div class=\"bs-related-posts bs-related-posts-block---default\"><div class=\"bs-related-posts__container\"><div class=\"bs-related-posts__items\">\n<div class=\" bs-column col-sm-4   bs-column-4bb8c1b66cb5e72c43988fbaf017046daf38fc18 bs-column---default     \">\t\t\t\t\t<div class=\"bs-post bs-post-69e3d11ca3209 bs-single-post---default enable\" >\n\t\t\t<a class=\"bs-post__trigger\" href='https:\/\/swimlane.com\/fr\/blog\/swimlane-open-sources-graphish\/' target='_self'>\t\t\t<div class=\"bs-post__inner\">\n\t\t\t\t<div class=\"bs-post__details\">    <div class=\"bs-post__date\">\n        <span>Juin 19, 2019<\/span>\n    <\/div>\n    <div class=\"bs-post__title\">\n        <h5>Swimlane open-sources graphish to help SecOps Teams<\/h5>\n    <\/div>\n<div class=\"bs-post__learn-more\">\n    <span class='btn learn-more-text bs-post__learn-more-text'>Read More<\/span><\/div>\n<\/div>\t\t\t<\/div>\n\t\t\t<\/a>\t\t<\/div>\n\t<\/div>\n\n\n\n<div class=\" bs-column col-sm-4   bs-column-4bb8c1b66cb5e72c43988fbaf017046daf38fc18 bs-column---default     \">\t\t\t\t\t<div class=\"bs-post bs-post-69e3d11ca3fe7 bs-single-post---default enable\" >\n\t\t\t<a class=\"bs-post__trigger\" href='https:\/\/swimlane.com\/fr\/blog\/national-read-across-america-day\/' target='_self'>\t\t\t<div class=\"bs-post__inner\">\n\t\t\t\t<div class=\"bs-post__details\">    <div class=\"bs-post__date\">\n        <span>Mar 2, 2020<\/span>\n    <\/div>\n    <div class=\"bs-post__title\">\n        <h5>One team two team red team blue team<\/h5>\n    <\/div>\n<div class=\"bs-post__learn-more\">\n    <span class='btn learn-more-text bs-post__learn-more-text'>Read More<\/span><\/div>\n<\/div>\t\t\t<\/div>\n\t\t\t<\/a>\t\t<\/div>\n\t<\/div>\n\n\n\n<div class=\" bs-column col-sm-4   bs-column-4bb8c1b66cb5e72c43988fbaf017046daf38fc18 bs-column---default     \">\t\t\t\t\t<div class=\"bs-post bs-post-69e3d11ca4fb4 bs-single-post---default enable\" >\n\t\t\t<a class=\"bs-post__trigger\" href='https:\/\/swimlane.com\/fr\/open-source-threat-intelligence-cobalt-strike-attacks\/' target='_self'>\t\t\t<div class=\"bs-post__inner\">\n\t\t\t\t<div class=\"bs-post__details\">    <div class=\"bs-post__date\">\n        <span>Avr 6, 2023<\/span>\n    <\/div>\n    <div class=\"bs-post__title\">\n        <h5>How to Leverage Open Source Threat Intel Against Cobalt Strike Attacks<\/h5>\n    <\/div>\n<div class=\"bs-post__learn-more\">\n    <span class='btn learn-more-text bs-post__learn-more-text'>Read More<\/span><\/div>\n<\/div>\t\t\t<\/div>\n\t\t\t<\/a>\t\t<\/div>\n\t<\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n\n\n<\/div>\n<\/div>\n<\/div><\/section>\n\n\n\n<section class=\"bs-section bs-section-2a4a600ae9ab197b6a4ccafe05152bf1a2fde1d1 bs-section---default bs-section--newsletter bs-section--common-marketo-form bs-section--common-marketo-form-two-columns  \"><style>.bs-section.bs-section-2a4a600ae9ab197b6a4ccafe05152bf1a2fde1d1{ background-color: #000743;} <\/style><div class=\"container-fluid\">\n<div class=\"bs-row row   bs-row---default\">\n<div class=\" bs-column col-sm-0 col-md-0 col-lg-6   bs-column-df5e10bef85c15055718b4d93887855962017939 bs-column---default     \">\n<h2 class=\"wp-block-heading has-white-color has-text-color\" id=\"requestor\">Request a Live Demo<\/h2>\n<\/div>\n\n\n\n<div class=\" bs-column col-sm-0 col-md-0 col-lg-6   bs-column-df5e10bef85c15055718b4d93887855962017939 bs-column---default     \"><div class='media-elements bs-media-element---default enable'>    <div class='bs-common-image'>\n                            <figure class='figure justify-content-start d-flex'>\n                            <picture>\n                            \n                            <img src='https:\/\/swimlane.com\/wp-content\/uploads\/liitp.svg' class='img-fluid'   alt='' title=''  \/>\n                            <\/picture>\n                                \n                            <\/figure>\n                        <\/div><\/div>\n\n<script src=\"\/\/pages.swimlane.com\/js\/forms2\/js\/forms2.min.js\"><\/script>\n<form id=\"mktoForm_1017\"><\/form>\n<script>\n    var embeddedFormId = '05a6905d0187a23e165b2fd995e965fe15cb94f6';\n    var marketoBaseUrl = '\/\/pages.swimlane.com';\n    var munchkinId = '978-QCM-390';\n    var formId = '1017';\n    var responseType = 'redirect';\n    var responseMessage = 'Thank you!';\n    var redirectURL = '';\n    var downloadFileURL = '';\n    var linkOpenType = '_self';\n    var popupVideo = 'url';\n    var popupVideoURL = '';\n    var popupVideoUploadURL = '';\n    MktoForms2.loadForm(marketoBaseUrl, munchkinId, formId, function(form) {\n        form.onSuccess(function(values, followUpUrl) {\n            document.getElementById(\"int_mktoForm_\" + formId).innerHTML = responseMessage;\n                    });\n    });\n<\/script>\n<div class=\"form-submit-note\" id=\"int_mktoForm_1017\"><\/div>\n<!-- Incluing form response options -->\n\n\n\n<script>\n    (function() {\n        \/\/ Please include the email domains you would like to block in this list\n        var invalidDomains = [\"@gmail.\", \"@yahoo.\", \"@hotmail.\", \"@live.\", \"@icloud.\",\"@aol.\", \"@outlook.\", \"@proton.\", \"@mailinator.\"];\n\n\n        MktoForms2.whenReady(function(form) {\n            form.onValidate(function() {\n                var email = form.vals().Email;\n                if (email) {\n                    if (!isEmailGood(email)) {\n                        form.submitable(false);\n                        var emailElem = form.getFormElem().find(\"#Email\");\n                        form.showErrorMessage(\"Must be Business email.\", emailElem);\n                    } else {\n                        form.submitable(true);\n                    }\n                }\n            });\n        });\n\n        function isEmailGood(email) {\n            for (var i = 0; i < invalidDomains.length; i++) {\n                var domain = invalidDomains[i];\n                if (email.indexOf(domain) != -1) {\n                    return false;\n                }\n            }\n            return true;\n        }\n\n\n    })(); \n<\/script>\n<\/div>\n<\/div>\n<\/div><\/section>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":22,"featured_media":9723,"template":"","meta":{"_acf_changed":false,"show_custom_date":false,"custom_date":"","featured":false,"featured_image":0,"learn_more_label":"","image_alt_text":"","learn_more_type":"","learn_more_link":[],"show_popup":false,"disable_iframe":false,"enable_lazy_loading":false,"learn_more_link_file":0,"event_date":false,"event_start_date":"","event_end_date":"","featured_page_list":[],"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","inline_featured_image":false,"footnotes":""},"tags":[86],"resource-type":[67],"resource-topic":[],"resource-industry":[],"blog-category":[69,70],"class_list":["post-9722","sw_resource","type-sw_resource","status-publish","has-post-thumbnail","hentry","tag-research","resource-type-blogs","blog-category-use-cases","blog-category-secops"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.5 (Yoast SEO v27.1.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Swimlane research team open sources py-ews<\/title>\n<meta name=\"description\" content=\"The Swimlane research team has open sourced py-ews to enable security and IT teams to interact with Microsoft Exchange Web Services (EWS) using Python.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/swimlane.com\/fr\/blog\/equipe-de-recherche-sur-les-couloirs-de-nage-py-ews\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Swimlane research team open sources py-ews\" \/>\n<meta property=\"og:description\" content=\"The Swimlane research team has open sourced py-ews to enable security and IT teams to interact with Microsoft Exchange Web Services (EWS) using Python.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/swimlane.com\/fr\/blog\/equipe-de-recherche-sur-les-couloirs-de-nage-py-ews\/\" \/>\n<meta property=\"og:site_name\" content=\"AI Security Automation\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-22T10:49:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/swimlane.com\/wp-content\/uploads\/swimlane-research-team-py-ews.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"497\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@swimlane\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/\",\"url\":\"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/\",\"name\":\"Swimlane research team open sources py-ews\",\"isPartOf\":{\"@id\":\"https:\/\/swimlane.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/swimlane.com\/wp-content\/uploads\/swimlane-research-team-py-ews.png\",\"datePublished\":\"2019-05-22T11:46:00+00:00\",\"dateModified\":\"2025-12-22T10:49:25+00:00\",\"description\":\"The Swimlane research team has open sourced py-ews to enable security and IT teams to interact with Microsoft Exchange Web Services (EWS) using Python.\",\"breadcrumb\":{\"@id\":\"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/#primaryimage\",\"url\":\"https:\/\/swimlane.com\/wp-content\/uploads\/swimlane-research-team-py-ews.png\",\"contentUrl\":\"https:\/\/swimlane.com\/wp-content\/uploads\/swimlane-research-team-py-ews.png\",\"width\":800,\"height\":497,\"caption\":\"Hands typing on a laptop in a dim, focused workspace\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/swimlane.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Swimlane research team open sources py-ews\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/swimlane.com\/fr\/#website\",\"url\":\"https:\/\/swimlane.com\/fr\/\",\"name\":\"Low-Code Security Automation & SOAR Platform | Swimlane\",\"description\":\"Agentic AI automation for every security function\",\"publisher\":{\"@id\":\"https:\/\/swimlane.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/swimlane.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/swimlane.com\/fr\/#organization\",\"name\":\"Low-Code Security Automation & SOAR Platform | Swimlane\",\"url\":\"https:\/\/swimlane.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/swimlane.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/swimlane.com\/wp-content\/uploads\/sw-inline-logo-color-white.svg\",\"contentUrl\":\"https:\/\/swimlane.com\/wp-content\/uploads\/sw-inline-logo-color-white.svg\",\"width\":912,\"height\":190,\"caption\":\"Low-Code Security Automation & SOAR Platform | Swimlane\"},\"image\":{\"@id\":\"https:\/\/swimlane.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/swimlane\",\"https:\/\/www.linkedin.com\/company\/swimlane\/\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"L&#039;\u00e9quipe de recherche Swimlane ouvre les sources de py-ews","description":"L&#039;\u00e9quipe de recherche Swimlane a rendu open source py-ews pour permettre aux \u00e9quipes de s\u00e9curit\u00e9 et informatiques d&#039;interagir avec les services Web Microsoft Exchange (EWS) en utilisant Python.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/swimlane.com\/fr\/blog\/equipe-de-recherche-sur-les-couloirs-de-nage-py-ews\/","og_locale":"fr_FR","og_type":"article","og_title":"Swimlane research team open sources py-ews","og_description":"The Swimlane research team has open sourced py-ews to enable security and IT teams to interact with Microsoft Exchange Web Services (EWS) using Python.","og_url":"https:\/\/swimlane.com\/fr\/blog\/equipe-de-recherche-sur-les-couloirs-de-nage-py-ews\/","og_site_name":"AI Security Automation","article_modified_time":"2025-12-22T10:49:25+00:00","og_image":[{"width":800,"height":497,"url":"https:\/\/swimlane.com\/wp-content\/uploads\/swimlane-research-team-py-ews.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@swimlane","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/","url":"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/","name":"L&#039;\u00e9quipe de recherche Swimlane ouvre les sources de py-ews","isPartOf":{"@id":"https:\/\/swimlane.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/#primaryimage"},"image":{"@id":"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/#primaryimage"},"thumbnailUrl":"https:\/\/swimlane.com\/wp-content\/uploads\/swimlane-research-team-py-ews.png","datePublished":"2019-05-22T11:46:00+00:00","dateModified":"2025-12-22T10:49:25+00:00","description":"L&#039;\u00e9quipe de recherche Swimlane a rendu open source py-ews pour permettre aux \u00e9quipes de s\u00e9curit\u00e9 et informatiques d&#039;interagir avec les services Web Microsoft Exchange (EWS) en utilisant Python.","breadcrumb":{"@id":"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/#primaryimage","url":"https:\/\/swimlane.com\/wp-content\/uploads\/swimlane-research-team-py-ews.png","contentUrl":"https:\/\/swimlane.com\/wp-content\/uploads\/swimlane-research-team-py-ews.png","width":800,"height":497,"caption":"Hands typing on a laptop in a dim, focused workspace"},{"@type":"BreadcrumbList","@id":"https:\/\/swimlane.com\/fr\/blog\/swimlane-research-team-py-ews\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/swimlane.com\/"},{"@type":"ListItem","position":2,"name":"Swimlane research team open sources py-ews"}]},{"@type":"WebSite","@id":"https:\/\/swimlane.com\/fr\/#website","url":"https:\/\/swimlane.com\/fr\/","name":"Plateforme d&#039;automatisation de la s\u00e9curit\u00e9 low-code et SOAR | Swimlane","description":"Automatisation par IA agentique pour chaque fonction de s\u00e9curit\u00e9","publisher":{"@id":"https:\/\/swimlane.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/swimlane.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/swimlane.com\/fr\/#organization","name":"Plateforme d&#039;automatisation de la s\u00e9curit\u00e9 low-code et SOAR | Swimlane","url":"https:\/\/swimlane.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/swimlane.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/swimlane.com\/wp-content\/uploads\/sw-inline-logo-color-white.svg","contentUrl":"https:\/\/swimlane.com\/wp-content\/uploads\/sw-inline-logo-color-white.svg","width":912,"height":190,"caption":"Low-Code Security Automation & SOAR Platform | Swimlane"},"image":{"@id":"https:\/\/swimlane.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/swimlane","https:\/\/www.linkedin.com\/company\/swimlane\/"]}]}},"publishpress_future_workflow_manual_trigger":{"enabledWorkflows":[]},"_links":{"self":[{"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/sw_resource\/9722","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/sw_resource"}],"about":[{"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/types\/sw_resource"}],"author":[{"embeddable":true,"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/users\/22"}],"version-history":[{"count":0,"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/sw_resource\/9722\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/media\/9723"}],"wp:attachment":[{"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/media?parent=9722"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/tags?post=9722"},{"taxonomy":"resource-type","embeddable":true,"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/resource-type?post=9722"},{"taxonomy":"resource-topic","embeddable":true,"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/resource-topic?post=9722"},{"taxonomy":"resource-industry","embeddable":true,"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/resource-industry?post=9722"},{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/swimlane.com\/fr\/wp-json\/wp\/v2\/blog-category?post=9722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}