{"id":278969,"date":"2026-05-26T10:39:09","date_gmt":"2026-05-26T08:39:09","guid":{"rendered":"https:\/\/www.unipile.com\/?p=278969"},"modified":"2026-06-01T14:45:13","modified_gmt":"2026-06-01T12:45:13","slug":"imap-api-python","status":"publish","type":"post","link":"https:\/\/www.unipile.com\/tr\/imap-api-python\/","title":{"rendered":"Python'da IMAP API: imaplib, IMAPClient, XOAUTH2 OAuth K\u0131lavuzu (2026)"},"content":{"rendered":"\n[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;40px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.4&#8243; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; sticky_enabled=&#8221;0&#8243;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->\/* ============================================================<!-- [et_pb_line_break_holder] -->   UNIPILE TOC  -  isolated, Divi-safe<!-- [et_pb_line_break_holder] -->   ============================================================ *\/<!-- [et_pb_line_break_holder] -->#unipile-toc,<!-- [et_pb_line_break_holder] -->#unipile-toc *,<!-- [et_pb_line_break_holder] -->#unipile-toc *::before,<!-- [et_pb_line_break_holder] -->#unipile-toc *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: normal !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->  float: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc {<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  width: 100% !important;<!-- [et_pb_line_break_holder] -->  max-width: 1100px !important;<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->  position: relative !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  font-size: 16px !important;<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  padding: 32px !important;<!-- [et_pb_line_break_holder] -->  box-shadow: 0 2px 12px rgba(15, 39, 54, 0.04) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-header {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: space-between !important;<!-- [et_pb_line_break_holder] -->  gap: 12px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 24px !important;<!-- [et_pb_line_break_holder] -->  padding-bottom: 20px !important;<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-header-left {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 12px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-icon-box {<!-- [et_pb_line_break_holder] -->  width: 36px !important;<!-- [et_pb_line_break_holder] -->  height: 36px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.12) !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: center !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-icon-box svg {<!-- [et_pb_line_break_holder] -->  width: 18px !important;<!-- [et_pb_line_break_holder] -->  height: 18px !important;<!-- [et_pb_line_break_holder] -->  stroke: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2.2 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-title {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-toggle {<!-- [et_pb_line_break_holder] -->  display: none !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 6px !important;<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  color: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 10px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 6px !important;<!-- [et_pb_line_break_holder] -->  transition: background 0.2s ease !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-toggle svg {<!-- [et_pb_line_break_holder] -->  width: 14px !important;<!-- [et_pb_line_break_holder] -->  height: 14px !important;<!-- [et_pb_line_break_holder] -->  stroke: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2.5 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->  transition: transform 0.3s ease !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc.utc-collapsed .utc-toggle svg {<!-- [et_pb_line_break_holder] -->  transform: rotate(-90deg) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-grid {<!-- [et_pb_line_break_holder] -->  display: grid !important;<!-- [et_pb_line_break_holder] -->  grid-template-columns: repeat(4, 1fr) !important;<!-- [et_pb_line_break_holder] -->  gap: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-col {<!-- [et_pb_line_break_holder] -->  padding: 0 24px !important;<!-- [et_pb_line_break_holder] -->  border-left: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-col:first-child {<!-- [et_pb_line_break_holder] -->  padding-left: 0 !important;<!-- [et_pb_line_break_holder] -->  border-left: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-col:last-child {<!-- [et_pb_line_break_holder] -->  padding-right: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-col-label {<!-- [et_pb_line_break_holder] -->  font-size: 11px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #94a3b8 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.8px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 14px !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-link-list {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  flex-direction: column !important;<!-- [et_pb_line_break_holder] -->  gap: 10px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-link {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: flex-start !important;<!-- [et_pb_line_break_holder] -->  gap: 10px !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  transition: all 0.2s ease !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  padding: 4px 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-num {<!-- [et_pb_line_break_holder] -->  width: 18px !important;<!-- [et_pb_line_break_holder] -->  height: 18px !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  background: #f4f5f7 !important;<!-- [et_pb_line_break_holder] -->  border-radius: 4px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: center !important;<!-- [et_pb_line_break_holder] -->  font-size: 10px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #94a3b8 !important;<!-- [et_pb_line_break_holder] -->  transition: all 0.2s ease !important;<!-- [et_pb_line_break_holder] -->  margin-top: 1px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-num.utc-num-faq {<!-- [et_pb_line_break_holder] -->  font-size: 8px !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.2px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-link-text {<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 500 !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.45 !important;<!-- [et_pb_line_break_holder] -->  transition: color 0.2s ease !important;<!-- [et_pb_line_break_holder] -->  flex: 1 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-link:hover .utc-num {<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.15) !important;<!-- [et_pb_line_break_holder] -->  color: #3BB98B !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-link:hover .utc-link-text {<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-link.utc-active .utc-num {<!-- [et_pb_line_break_holder] -->  background: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  color: #ffffff !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-link.utc-active .utc-link-text {<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-link.utc-read .utc-num {<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.15) !important;<!-- [et_pb_line_break_holder] -->  color: #3BB98B !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-toc .utc-tag-best {<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->  font-size: 9px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #ffffff !important;<!-- [et_pb_line_break_holder] -->  background: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  padding: 2px 6px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 4px !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-left: 6px !important;<!-- [et_pb_line_break_holder] -->  vertical-align: middle !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 1000px) {<!-- [et_pb_line_break_holder] -->  #unipile-toc .utc-grid {<!-- [et_pb_line_break_holder] -->    grid-template-columns: repeat(2, 1fr) !important;<!-- [et_pb_line_break_holder] -->    gap: 24px 0 !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-toc .utc-col {<!-- [et_pb_line_break_holder] -->    padding: 0 20px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-toc .utc-col:nth-child(2n+1) {<!-- [et_pb_line_break_holder] -->    padding-left: 0 !important;<!-- [et_pb_line_break_holder] -->    border-left: none !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-toc .utc-col:nth-child(2n) {<!-- [et_pb_line_break_holder] -->    padding-right: 0 !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 700px) {<!-- [et_pb_line_break_holder] -->  #unipile-toc .utc-card {<!-- [et_pb_line_break_holder] -->    padding: 22px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-toc .utc-header {<!-- [et_pb_line_break_holder] -->    margin-bottom: 0 !important;<!-- [et_pb_line_break_holder] -->    padding-bottom: 0 !important;<!-- [et_pb_line_break_holder] -->    border-bottom: none !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-toc .utc-toggle {<!-- [et_pb_line_break_holder] -->    display: flex !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-toc .utc-grid {<!-- [et_pb_line_break_holder] -->    grid-template-columns: 1fr !important;<!-- [et_pb_line_break_holder] -->    gap: 22px !important;<!-- [et_pb_line_break_holder] -->    overflow: hidden !important;<!-- [et_pb_line_break_holder] -->    transition: max-height 0.4s ease, margin-top 0.3s ease, padding-top 0.3s ease !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  \/* === COLLAPSED PAR DEFAUT EN CSS sur mobile (avant meme le JS) === *\/<!-- [et_pb_line_break_holder] -->  #unipile-toc .utc-grid {<!-- [et_pb_line_break_holder] -->    max-height: 0 !important;<!-- [et_pb_line_break_holder] -->    margin-top: 0 !important;<!-- [et_pb_line_break_holder] -->    padding-top: 0 !important;<!-- [et_pb_line_break_holder] -->    border-top: none !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  \/* Si le JS a tourne et l'utilisateur ouvre, cette classe re-affiche *\/<!-- [et_pb_line_break_holder] -->  #unipile-toc.utc-expanded .utc-grid {<!-- [et_pb_line_break_holder] -->    max-height: 2000px !important;<!-- [et_pb_line_break_holder] -->    margin-top: 22px !important;<!-- [et_pb_line_break_holder] -->    padding-top: 22px !important;<!-- [et_pb_line_break_holder] -->    border-top: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-toc .utc-col {<!-- [et_pb_line_break_holder] -->    padding: 0 !important;<!-- [et_pb_line_break_holder] -->    border-left: none !important;<!-- [et_pb_line_break_holder] -->    border-top: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->    padding-top: 18px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-toc .utc-col:first-child {<!-- [et_pb_line_break_holder] -->    border-top: none !important;<!-- [et_pb_line_break_holder] -->    padding-top: 0 !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-toc\"><!-- [et_pb_line_break_holder] -->  <div class=\"utc-card\"><!-- [et_pb_line_break_holder] -->    <div class=\"utc-header\"><!-- [et_pb_line_break_holder] -->      <div class=\"utc-header-left\"><!-- [et_pb_line_break_holder] -->        <div class=\"utc-icon-box\"><!-- [et_pb_line_break_holder] -->          <svg viewBox=\"0 0 24 24\"><!-- [et_pb_line_break_holder] -->            <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"\/><!-- [et_pb_line_break_holder] -->            <line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"\/><!-- [et_pb_line_break_holder] -->            <line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"\/><!-- [et_pb_line_break_holder] -->            <line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"\/><!-- [et_pb_line_break_holder] -->            <line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"\/><!-- [et_pb_line_break_holder] -->            <line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"\/><!-- [et_pb_line_break_holder] -->          <\/svg><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <span class=\"utc-title\">Table of Contents<\/span><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <button type=\"button\" class=\"utc-toggle\" aria-label=\"Toggle table of contents\"><!-- [et_pb_line_break_holder] -->        <span class=\"utc-toggle-label\">Show<\/span><!-- [et_pb_line_break_holder] -->        <svg viewBox=\"0 0 24 24\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg><!-- [et_pb_line_break_holder] -->      <\/button><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"utc-grid\"><!-- [et_pb_line_break_holder] -->      <!-- COLUMN 1 --><!-- [et_pb_line_break_holder] -->      <div class=\"utc-col\"><!-- [et_pb_line_break_holder] -->        <span class=\"utc-col-label\">Python &#038; IMAP<\/span><!-- [et_pb_line_break_holder] -->        <div class=\"utc-link-list\"><!-- [et_pb_line_break_holder] -->          <a class=\"utc-link\" href=\"#iap-what\"><!-- [et_pb_line_break_holder] -->            <span class=\"utc-num\">01<\/span><!-- [et_pb_line_break_holder] -->            <span class=\"utc-link-text\">What Is an IMAP Python Client?<\/span><!-- [et_pb_line_break_holder] -->          <\/a><!-- [et_pb_line_break_holder] -->          <a class=\"utc-link\" href=\"#iap-stack\"><!-- [et_pb_line_break_holder] -->            <span class=\"utc-num\">02<\/span><!-- [et_pb_line_break_holder] -->            <span class=\"utc-link-text\">The 3 Python IMAP Stack Options<\/span><!-- [et_pb_line_break_holder] -->          <\/a><!-- [et_pb_line_break_holder] -->          <a class=\"utc-link\" href=\"#iap-quickstart\"><!-- [et_pb_line_break_holder] -->            <span class=\"utc-num\">03<\/span><!-- [et_pb_line_break_holder] -->            <span class=\"utc-link-text\">Quickstart with imaplib<\/span><!-- [et_pb_line_break_holder] -->          <\/a><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <!-- COLUMN 2 --><!-- [et_pb_line_break_holder] -->      <div class=\"utc-col\"><!-- [et_pb_line_break_holder] -->        <span class=\"utc-col-label\">Libraries &#038; Auth<\/span><!-- [et_pb_line_break_holder] -->        <div class=\"utc-link-list\"><!-- [et_pb_line_break_holder] -->          <a class=\"utc-link\" href=\"#iap-imapclient\"><!-- [et_pb_line_break_holder] -->            <span class=\"utc-num\">04<\/span><!-- [et_pb_line_break_holder] -->            <span class=\"utc-link-text\">IMAPClient for Production<\/span><!-- [et_pb_line_break_holder] -->          <\/a><!-- [et_pb_line_break_holder] -->          <a class=\"utc-link\" href=\"#iap-oauth\"><!-- [et_pb_line_break_holder] -->            <span class=\"utc-num\">05<\/span><!-- [et_pb_line_break_holder] -->            <span class=\"utc-link-text\">OAuth XOAUTH2 in Python<\/span><!-- [et_pb_line_break_holder] -->          <\/a><!-- [et_pb_line_break_holder] -->          <a class=\"utc-link\" href=\"#iap-providers\"><!-- [et_pb_line_break_holder] -->            <span class=\"utc-num\">06<\/span><!-- [et_pb_line_break_holder] -->            <span class=\"utc-link-text\">Multi-Provider Reality Check<\/span><!-- [et_pb_line_break_holder] -->          <\/a><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <!-- COLUMN 3 --><!-- [et_pb_line_break_holder] -->      <div class=\"utc-col\"><!-- [et_pb_line_break_holder] -->        <span class=\"utc-col-label\">Production<\/span><!-- [et_pb_line_break_holder] -->        <div class=\"utc-link-list\"><!-- [et_pb_line_break_holder] -->          <a class=\"utc-link\" href=\"#iap-pitfalls\"><!-- [et_pb_line_break_holder] -->            <span class=\"utc-num\">07<\/span><!-- [et_pb_line_break_holder] -->            <span class=\"utc-link-text\">Common Pitfalls in Production<\/span><!-- [et_pb_line_break_holder] -->          <\/a><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <!-- COLUMN 4 --><!-- [et_pb_line_break_holder] -->      <div class=\"utc-col\"><!-- [et_pb_line_break_holder] -->        <span class=\"utc-col-label\">Unified API<\/span><!-- [et_pb_line_break_holder] -->        <div class=\"utc-link-list\"><!-- [et_pb_line_break_holder] -->          <a class=\"utc-link\" href=\"#iap-unipile\"><!-- [et_pb_line_break_holder] -->            <span class=\"utc-num\">08<\/span><!-- [et_pb_line_break_holder] -->            <span class=\"utc-link-text\">When to Skip IMAP Entirely<span class=\"utc-tag-best\">Best<\/span><\/span><!-- [et_pb_line_break_holder] -->          <\/a><!-- [et_pb_line_break_holder] -->          <a class=\"utc-link\" href=\"#iap-faq\"><!-- [et_pb_line_break_holder] -->            <span class=\"utc-num utc-num-faq\">FAQ<\/span><!-- [et_pb_line_break_holder] -->            <span class=\"utc-link-text\">Frequently Asked Questions<\/span><!-- [et_pb_line_break_holder] -->          <\/a><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] -->  var toc = document.getElementById('unipile-toc');<!-- [et_pb_line_break_holder] -->  if (!toc) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  var MOBILE_BP = 700;<!-- [et_pb_line_break_holder] -->  var toggleBtn = toc.querySelector('.utc-toggle');<!-- [et_pb_line_break_holder] -->  var toggleLabel = toc.querySelector('.utc-toggle-label');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  function syncInitial(){<!-- [et_pb_line_break_holder] -->    if (window.innerWidth <= MOBILE_BP) {<!-- [et_pb_line_break_holder] -->      toc.classList.remove('utc-expanded');<!-- [et_pb_line_break_holder] -->      if (toggleLabel) toggleLabel.textContent = 'Show';<!-- [et_pb_line_break_holder] -->    } else {<!-- [et_pb_line_break_holder] -->      toc.classList.add('utc-expanded');<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  syncInitial();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  if (toggleBtn) {<!-- [et_pb_line_break_holder] -->    toggleBtn.addEventListener('click', function(){<!-- [et_pb_line_break_holder] -->      var isOpen = toc.classList.toggle('utc-expanded');<!-- [et_pb_line_break_holder] -->      if (toggleLabel) toggleLabel.textContent = isOpen ? 'Hide' : 'Show';<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  var resizeTimer = null;<!-- [et_pb_line_break_holder] -->  window.addEventListener('resize', function(){<!-- [et_pb_line_break_holder] -->    if (resizeTimer) clearTimeout(resizeTimer);<!-- [et_pb_line_break_holder] -->    resizeTimer = setTimeout(syncInitial, 150);<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  var links = toc.querySelectorAll('.utc-link');<!-- [et_pb_line_break_holder] -->  links.forEach(function(link){<!-- [et_pb_line_break_holder] -->    link.addEventListener('click', function(e){<!-- [et_pb_line_break_holder] -->      var href = link.getAttribute('href');<!-- [et_pb_line_break_holder] -->      if (!href || href.charAt(0) !== '#') return;<!-- [et_pb_line_break_holder] -->      var target = document.getElementById(href.substring(1));<!-- [et_pb_line_break_holder] -->      if (target) {<!-- [et_pb_line_break_holder] -->        e.preventDefault();<!-- [et_pb_line_break_holder] -->        var offset = 80;<!-- [et_pb_line_break_holder] -->        var top = target.getBoundingClientRect().top + window.pageYOffset - offset;<!-- [et_pb_line_break_holder] -->        window.scrollTo({ top: top, behavior: 'smooth' });<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  var sectionIds = [];<!-- [et_pb_line_break_holder] -->  links.forEach(function(link){<!-- [et_pb_line_break_holder] -->    var href = link.getAttribute('href');<!-- [et_pb_line_break_holder] -->    if (href && href.charAt(0) === '#') sectionIds.push(href.substring(1));<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  function updateActive(){<!-- [et_pb_line_break_holder] -->    var scrollY = window.pageYOffset + 120;<!-- [et_pb_line_break_holder] -->    var activeId = null;<!-- [et_pb_line_break_holder] -->    var readIds = [];<!-- [et_pb_line_break_holder] -->    sectionIds.forEach(function(id){<!-- [et_pb_line_break_holder] -->      var el = document.getElementById(id);<!-- [et_pb_line_break_holder] -->      if (el) {<!-- [et_pb_line_break_holder] -->        var top = el.getBoundingClientRect().top + window.pageYOffset;<!-- [et_pb_line_break_holder] -->        if (top <= scrollY) {<!-- [et_pb_line_break_holder] -->          activeId = id;<!-- [et_pb_line_break_holder] -->          readIds.push(id);<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->    links.forEach(function(link){<!-- [et_pb_line_break_holder] -->      var href = link.getAttribute('href');<!-- [et_pb_line_break_holder] -->      var id = href ? href.substring(1) : '';<!-- [et_pb_line_break_holder] -->      link.classList.remove('utc-active', 'utc-read');<!-- [et_pb_line_break_holder] -->      if (id === activeId) {<!-- [et_pb_line_break_holder] -->        link.classList.add('utc-active');<!-- [et_pb_line_break_holder] -->      } else if (readIds.indexOf(id) !== -1) {<!-- [et_pb_line_break_holder] -->        link.classList.add('utc-read');<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  if ('IntersectionObserver' in window) {<!-- [et_pb_line_break_holder] -->    var observer = new IntersectionObserver(function(){<!-- [et_pb_line_break_holder] -->      updateActive();<!-- [et_pb_line_break_holder] -->    }, { rootMargin: '-120px 0px -60% 0px' });<!-- [et_pb_line_break_holder] -->    sectionIds.forEach(function(id){<!-- [et_pb_line_break_holder] -->      var el = document.getElementById(id);<!-- [et_pb_line_break_holder] -->      if (el) observer.observe(el);<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  window.addEventListener('scroll', updateActive, { passive: true });<!-- [et_pb_line_break_holder] -->  updateActive();<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.4&#8243; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; sticky_enabled=&#8221;0&#8243;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-iap-hero,<!-- [et_pb_line_break_holder] -->#unipile-iap-hero *,<!-- [et_pb_line_break_holder] -->#unipile-iap-hero *::before,<!-- [et_pb_line_break_holder] -->#unipile-iap-hero *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero {<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  width: 100% !important;<!-- [et_pb_line_break_holder] -->  overflow-x: hidden !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-hero-wrap {<!-- [et_pb_line_break_holder] -->  max-width: 1100px !important;<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->  padding: 60px 20px 50px !important;<!-- [et_pb_line_break_holder] -->  display: grid !important;<!-- [et_pb_line_break_holder] -->  grid-template-columns: 1fr 1fr !important;<!-- [et_pb_line_break_holder] -->  gap: 48px !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-hero-left {}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-badge {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.12) !important;<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-badge-dot {<!-- [et_pb_line_break_holder] -->  width: 7px !important;<!-- [et_pb_line_break_holder] -->  height: 7px !important;<!-- [et_pb_line_break_holder] -->  background: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-h1 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 40px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.18 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-accent {<!-- [et_pb_line_break_holder] -->  color: #3BB98B !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-desc {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 28px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-meta {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 16px !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 28px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-meta-item {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 6px !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  color: #718096 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-meta-item svg {<!-- [et_pb_line_break_holder] -->  width: 14px !important;<!-- [et_pb_line_break_holder] -->  height: 14px !important;<!-- [et_pb_line_break_holder] -->  stroke: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-meta-sep {<!-- [et_pb_line_break_holder] -->  width: 4px !important;<!-- [et_pb_line_break_holder] -->  height: 4px !important;<!-- [et_pb_line_break_holder] -->  background: #cbd5e0 !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-tags {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 32px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-tag {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  color: #4a5568 !important;<!-- [et_pb_line_break_holder] -->  padding: 5px 12px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 6px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 500 !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e2e8f0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-actions {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 14px !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-cta-primary {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  padding: 14px 24px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  border: 2px solid #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->  transition: transform 0.25s ease !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-cta-primary:hover {<!-- [et_pb_line_break_holder] -->  transform: translateY(-5px) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-cta-primary svg {<!-- [et_pb_line_break_holder] -->  width: 16px !important;<!-- [et_pb_line_break_holder] -->  height: 16px !important;<!-- [et_pb_line_break_holder] -->  stroke: currentColor !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2.5 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-cta-secondary {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 22px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  border: 2px solid #0f2736 !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->  transition: all 0.25s ease !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-cta-secondary:hover {<!-- [et_pb_line_break_holder] -->  background: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  color: #ffffff !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/* Code mockup *\/<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-hero-right {}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-code-wrap {<!-- [et_pb_line_break_holder] -->  border-radius: 14px !important;<!-- [et_pb_line_break_holder] -->  overflow: hidden !important;<!-- [et_pb_line_break_holder] -->  background: #0d1117 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-editor-bar {<!-- [et_pb_line_break_holder] -->  background: #161b22 !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 18px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid rgba(255,255,255,0.06) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-dot {<!-- [et_pb_line_break_holder] -->  width: 12px !important;<!-- [et_pb_line_break_holder] -->  height: 12px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-dot-r { background: #ff5f57 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-dot-y { background: #febc2e !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-dot-g { background: #28c840 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-filename {<!-- [et_pb_line_break_holder] -->  color: #8b949e !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  margin-left: 6px !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-pre {<!-- [et_pb_line_break_holder] -->  padding: 22px 24px !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.8 !important;<!-- [et_pb_line_break_holder] -->  overflow-x: auto !important;<!-- [et_pb_line_break_holder] -->  background: #0d1117 !important;<!-- [et_pb_line_break_holder] -->  white-space: pre-wrap !important;<!-- [et_pb_line_break_holder] -->  word-break: break-word !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-pre code {<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->  white-space: pre-wrap !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  word-break: break-word !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .c { color: #8b949e !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .k { color: #ff7b72 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .fn { color: #d2a8ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .s { color: #a5d6ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .n { color: #79c0ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .w { color: #e6edf3 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-editor-ok {<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.1) !important;<!-- [et_pb_line_break_holder] -->  border-top: 1px solid rgba(59, 185, 139, 0.25) !important;<!-- [et_pb_line_break_holder] -->  color: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  padding: 11px 24px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12.5px !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-hero .iap-ok-dot {<!-- [et_pb_line_break_holder] -->  width: 7px !important;<!-- [et_pb_line_break_holder] -->  height: 7px !important;<!-- [et_pb_line_break_holder] -->  background: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-hero .iap-hero-wrap {<!-- [et_pb_line_break_holder] -->    grid-template-columns: 1fr !important;<!-- [et_pb_line_break_holder] -->    gap: 36px !important;<!-- [et_pb_line_break_holder] -->    padding: 50px 20px 40px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-hero .iap-h1 {<!-- [et_pb_line_break_holder] -->    font-size: 30px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-hero .iap-hero-wrap {<!-- [et_pb_line_break_holder] -->    padding: 40px 16px 32px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-hero .iap-h1 {<!-- [et_pb_line_break_holder] -->    font-size: 26px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-hero .iap-desc {<!-- [et_pb_line_break_holder] -->    font-size: 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-hero .iap-actions {<!-- [et_pb_line_break_holder] -->    flex-direction: column !important;<!-- [et_pb_line_break_holder] -->    width: 100% !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-hero .iap-cta-primary,<!-- [et_pb_line_break_holder] -->  #unipile-iap-hero .iap-cta-secondary {<!-- [et_pb_line_break_holder] -->    width: 100% !important;<!-- [et_pb_line_break_holder] -->    justify-content: center !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-iap-hero\"><!-- [et_pb_line_break_holder] -->  <div class=\"iap-hero-wrap\"><!-- [et_pb_line_break_holder] -->    <div class=\"iap-hero-left\"><!-- [et_pb_line_break_holder] -->      <div class=\"iap-badge\"><span class=\"iap-badge-dot\"><\/span><span>IMAP API Python Guide<\/span><\/div><!-- [et_pb_line_break_holder] -->      <h2 class=\"iap-h1\">IMAP API in <span class=\"iap-accent\">Python<\/span>: imaplib, IMAPClient &#038; OAuth XOAUTH2 Guide<\/h2><!-- [et_pb_line_break_holder] -->      <pee class=\"iap-desc\">A complete guide to building Python IMAP email clients in 2026: from stdlib imaplib basics to IMAPClient production patterns, OAuth XOAUTH2 authentication for Gmail and Outlook, and when a unified email API saves you from the complexity entirely.<\/pee><!-- [et_pb_line_break_holder] -->      <!-- [et_pb_line_break_holder] -->      <!-- [et_pb_line_break_holder] -->      <div class=\"iap-actions\"><!-- [et_pb_line_break_holder] -->        <a class=\"iap-cta-primary\" href=\"https:\/\/dashboard.unipile.com\/signup\/\" target=\"_blank\" rel=\"noopener\"><!-- [et_pb_line_break_holder] -->          <svg viewBox=\"0 0 24 24\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><!-- [et_pb_line_break_holder] -->          <span>Build with Unipile<\/span><!-- [et_pb_line_break_holder] -->        <\/a><!-- [et_pb_line_break_holder] -->        <a class=\"iap-cta-secondary\" href=\"https:\/\/developer.unipile.com\/docs\/\" target=\"_blank\" rel=\"noopener\"><!-- [et_pb_line_break_holder] -->          <span>Read the docs<\/span><!-- [et_pb_line_break_holder] -->        <\/a><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->    <div class=\"iap-hero-right\"><!-- [et_pb_line_break_holder] -->      <div class=\"iap-code-wrap\"><!-- [et_pb_line_break_holder] -->        <div class=\"iap-editor-bar\"><!-- [et_pb_line_break_holder] -->          <span class=\"iap-dot iap-dot-r\"><\/span><!-- [et_pb_line_break_holder] -->          <span class=\"iap-dot iap-dot-y\"><\/span><!-- [et_pb_line_break_holder] -->          <span class=\"iap-dot iap-dot-g\"><\/span><!-- [et_pb_line_break_holder] -->          <span class=\"iap-filename\">imap_client.py<\/span><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-pre\"><code><span class=\"k\">import<\/span> <span class=\"w\">imaplib, email<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">from<\/span> <span class=\"w\">email.header<\/span> <span class=\"k\">import<\/span> <span class=\"w\">decode_header<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Connect with OAuth XOAUTH2<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">mail <\/span><span class=\"k\">=<\/span> <span class=\"w\">imaplib.<\/span><span class=\"fn\">IMAP4_SSL<\/span><span class=\"w\">(<\/span><span class=\"s\">'imap.gmail.com'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">auth_str <\/span><span class=\"k\">=<\/span> <span class=\"fn\">build_xoauth2<\/span><span class=\"w\">(user, token)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">mail.<\/span><span class=\"fn\">authenticate<\/span><span class=\"w\">(<\/span><span class=\"s\">'XOAUTH2'<\/span><span class=\"w\">, <\/span><span class=\"k\">lambda<\/span> <span class=\"w\">x: auth_str)<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Fetch unread messages<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">mail.<\/span><span class=\"fn\">select<\/span><span class=\"w\">(<\/span><span class=\"s\">'INBOX'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">_, ids <\/span><span class=\"k\">=<\/span> <span class=\"w\">mail.<\/span><span class=\"fn\">search<\/span><span class=\"w\">(<\/span><span class=\"k\">None<\/span><span class=\"w\">, <\/span><span class=\"s\">'UNSEEN'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">for<\/span> <span class=\"w\">uid <\/span><span class=\"k\">in<\/span> <span class=\"w\">ids[<\/span><span class=\"n\">0<\/span><span class=\"w\">].<\/span><span class=\"fn\">split<\/span><span class=\"w\">():<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">_, data <\/span><span class=\"k\">=<\/span> <span class=\"w\">mail.<\/span><span class=\"fn\">fetch<\/span><span class=\"w\">(uid, <\/span><span class=\"s\">'(RFC822)'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">msg <\/span><span class=\"k\">=<\/span> <span class=\"w\">email.<\/span><span class=\"fn\">message_from_bytes<\/span><span class=\"w\">(data[<\/span><span class=\"n\">0<\/span><span class=\"w\">][<\/span><span class=\"n\">1<\/span><span class=\"w\">])<\/span><\/code><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-editor-ok\"><span class=\"iap-ok-dot\"><\/span><span>Fetching emails from Gmail, Outlook, IMAP&#8230;<\/span><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-iap-what,<!-- [et_pb_line_break_holder] -->#unipile-iap-what *,<!-- [et_pb_line_break_holder] -->#unipile-iap-what *::before,<!-- [et_pb_line_break_holder] -->#unipile-iap-what *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what {<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  width: 100% !important;<!-- [et_pb_line_break_holder] -->  overflow-x: hidden !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what .iaw-wrap {<!-- [et_pb_line_break_holder] -->  max-width: 1100px !important;<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what .iaw-badge {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.12) !important;<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 18px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what .iaw-badge-dot {<!-- [et_pb_line_break_holder] -->  width: 7px !important;<!-- [et_pb_line_break_holder] -->  height: 7px !important;<!-- [et_pb_line_break_holder] -->  background: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 35px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.2 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what .iaw-lead {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 32px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what .iaw-def-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 28px 32px !important;<!-- [et_pb_line_break_holder] -->  border-left: 4px solid #3BB98B !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 40px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what .iaw-def-label {<!-- [et_pb_line_break_holder] -->  font-size: 11px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.8px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 12px !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what .iaw-def-text {<!-- [et_pb_line_break_holder] -->  font-size: 16px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.78 !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what .iaw-def-text strong {<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what .iaw-cards {<!-- [et_pb_line_break_holder] -->  display: grid !important;<!-- [et_pb_line_break_holder] -->  grid-template-columns: repeat(3, 1fr) !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what .iaw-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 24px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what .iaw-card-icon {<!-- [et_pb_line_break_holder] -->  width: 44px !important;<!-- [et_pb_line_break_holder] -->  height: 44px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.10) !important;<!-- [et_pb_line_break_holder] -->  border-radius: 10px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: center !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what .iaw-card-icon svg {<!-- [et_pb_line_break_holder] -->  width: 22px !important;<!-- [et_pb_line_break_holder] -->  height: 22px !important;<!-- [et_pb_line_break_holder] -->  stroke: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what .iaw-card-title {<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 10px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what .iaw-card-text {<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.7 !important;<!-- [et_pb_line_break_holder] -->  color: #4a5568 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what .iaw-card-text a {<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  text-decoration: underline !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-what .iaw-card-text a:hover {<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-what .iaw-wrap {<!-- [et_pb_line_break_holder] -->    padding: 50px 20px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-what h2 {<!-- [et_pb_line_break_holder] -->    font-size: 28px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-what .iaw-cards {<!-- [et_pb_line_break_holder] -->    grid-template-columns: 1fr 1fr !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-what .iaw-wrap {<!-- [et_pb_line_break_holder] -->    padding: 40px 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-what h2 {<!-- [et_pb_line_break_holder] -->    font-size: 26px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-what .iaw-cards {<!-- [et_pb_line_break_holder] -->    grid-template-columns: 1fr !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-iap-what\"><!-- [et_pb_line_break_holder] -->  <div class=\"iaw-wrap\"><!-- [et_pb_line_break_holder] -->    <span class=\"iaw-anchor\" id=\"iap-what\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->    <div class=\"iaw-badge\"><span class=\"iaw-badge-dot\"><\/span><span>Definition<\/span><\/div><!-- [et_pb_line_break_holder] -->    <h2>What Is an IMAP Python Client?<\/h2><!-- [et_pb_line_break_holder] -->    <pee class=\"iaw-lead\">An <strong>IMAP API Python<\/strong> client is any Python program that communicates with a mail server using the IMAP4 protocol (RFC 3501) to read, search, organize, and synchronize email messages. Unlike SMTP which only sends mail, IMAP gives your application bidirectional access to a remote mailbox: you can fetch headers, read bodies, set flags, move messages between folders, and listen for new arrivals in real time using IMAP IDLE.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iaw-def-card\"><!-- [et_pb_line_break_holder] -->      <span class=\"iaw-def-label\">Quick Definition<\/span><!-- [et_pb_line_break_holder] -->      <pee class=\"iaw-def-text\"><strong>IMAP (Internet Message Access Protocol)<\/strong> is a standard protocol that lets clients retrieve and manage email stored on a remote server. A Python IMAP client connects over TLS port 993, authenticates (Basic or OAuth XOAUTH2), then issues IMAP commands to fetch, search, flag, and organize messages. Python provides three levels of abstraction: the standard library <code>imaplib<\/code>, the higher-level <code>IMAPClient<\/code> wrapper, and fully async options like <code>aioimaplib<\/code>. For a complete overview of IMAP architecture and use cases, see our <a href=\"https:\/\/www.unipile.com\/the-developers-guide-to-imap-api-solution\/\">IMAP API developer guide<\/a>.<\/pee><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iaw-cards\"><!-- [et_pb_line_break_holder] -->      <div class=\"iaw-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"iaw-card-icon\"><!-- [et_pb_line_break_holder] -->          <svg viewBox=\"0 0 24 24\"><path d=\"M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07A19.5 19.5 0 013 5.18 2 2 0 014.99 3h3a2 2 0 012 1.72c.128.96.361 1.903.7 2.81a2 2 0 01-.45 2.11L9.09 10.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45c.907.339 1.85.572 2.81.7A2 2 0 0122 16.92z\"\/><\/svg><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iaw-card-title\">Email Sync for SaaS<\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"iaw-card-text\">Sync user inboxes into your CRM, ATS, or helpdesk. Python IMAP lets you poll or push (IDLE) new messages into your database without managing a full mail server.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"iaw-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"iaw-card-icon\"><!-- [et_pb_line_break_holder] -->          <svg viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"3\"\/><path d=\"M19.07 4.93a10 10 0 010 14.14M4.93 4.93a10 10 0 000 14.14M16.24 7.76a6 6 0 010 8.48M7.76 7.76a6 6 0 000 8.48\"\/><\/svg><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iaw-card-title\">Automation &#038; AI Pipelines<\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"iaw-card-text\">Extract, classify, and route inbound emails using Python. Your IMAP client feeds a processing queue: invoice parsing, ticket creation, lead scoring, or LLM summarization.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"iaw-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"iaw-card-icon\"><!-- [et_pb_line_break_holder] -->          <svg viewBox=\"0 0 24 24\"><polyline points=\"16 18 22 12 16 6\"\/><polyline points=\"8 6 2 12 8 18\"\/><\/svg><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iaw-card-title\">Developer Tooling<\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"iaw-card-text\">Test email delivery, build inbox zero tools, or audit deliverability. Python IMAP gives you programmatic access to the same mailbox your users see. Check our <a href=\"https:\/\/www.unipile.com\/email-api-guide\/\">email API guide<\/a> for the full ecosystem.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-iap-stack,<!-- [et_pb_line_break_holder] -->#unipile-iap-stack *,<!-- [et_pb_line_break_holder] -->#unipile-iap-stack *::before,<!-- [et_pb_line_break_holder] -->#unipile-iap-stack *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack {<!-- [et_pb_line_break_holder] -->  background: #f4f5f7 !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  width: 100% !important;<!-- [et_pb_line_break_holder] -->  overflow-x: hidden !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-wrap {<!-- [et_pb_line_break_holder] -->  max-width: 1100px !important;<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-badge {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(221, 223, 76, 0.18) !important;<!-- [et_pb_line_break_holder] -->  color: #8a8c2e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 18px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-badge-dot {<!-- [et_pb_line_break_holder] -->  width: 7px !important;<!-- [et_pb_line_break_holder] -->  height: 7px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 35px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.2 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-lead {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/* Comparison table \u2014 mobile cards approach *\/<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-table-wrap {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  overflow: hidden !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 32px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack table {<!-- [et_pb_line_break_holder] -->  width: 100% !important;<!-- [et_pb_line_break_holder] -->  border-collapse: collapse !important;<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack thead tr {<!-- [et_pb_line_break_holder] -->  background: #0f2736 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack thead th {<!-- [et_pb_line_break_holder] -->  padding: 16px 20px !important;<!-- [et_pb_line_break_holder] -->  text-align: left !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #ffffff !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack thead th:first-child {<!-- [et_pb_line_break_holder] -->  border-radius: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack tbody tr {<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid #f0f2f5 !important;<!-- [et_pb_line_break_holder] -->  transition: background 0.15s ease !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack tbody tr:last-child {<!-- [et_pb_line_break_holder] -->  border-bottom: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack tbody tr:hover {<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.04) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack tbody td {<!-- [et_pb_line_break_holder] -->  padding: 16px 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  vertical-align: top !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack tbody td:first-child {<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-tag-lib {<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.10) !important;<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  padding: 2px 8px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 4px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-tag-best {<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->  background: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  color: #ffffff !important;<!-- [et_pb_line_break_holder] -->  padding: 2px 8px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 4px !important;<!-- [et_pb_line_break_holder] -->  font-size: 11px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  margin-left: 6px !important;<!-- [et_pb_line_break_holder] -->  vertical-align: middle !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-check {<!-- [et_pb_line_break_holder] -->  color: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-cross {<!-- [et_pb_line_break_holder] -->  color: #ef4444 !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-warn {<!-- [et_pb_line_break_holder] -->  color: #f59e0b !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/* CTA strip *\/<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-cta-strip {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 24px 28px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: space-between !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-cta-text {<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.6 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-cta-text strong {<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-cta-btn {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 22px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  border: 2px solid #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->  transition: transform 0.25s ease !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-cta-btn:hover {<!-- [et_pb_line_break_holder] -->  transform: translateY(-5px) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-cta-btn svg {<!-- [et_pb_line_break_holder] -->  width: 15px !important;<!-- [et_pb_line_break_holder] -->  height: 15px !important;<!-- [et_pb_line_break_holder] -->  stroke: currentColor !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2.5 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/* Mobile cards for table *\/<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-mobile-cards {<!-- [et_pb_line_break_holder] -->  display: none !important;<!-- [et_pb_line_break_holder] -->  flex-direction: column !important;<!-- [et_pb_line_break_holder] -->  gap: 16px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 32px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-mcard {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-mcard-name {<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 12px !important;<!-- [et_pb_line_break_holder] -->  padding-bottom: 12px !important;<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid #f0f2f5 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-mcard-row {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 8px !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-mcard-label {<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  min-width: 90px !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-stack .ias-mcard-val {<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 768px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-stack .ias-table-wrap {<!-- [et_pb_line_break_holder] -->    display: none !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-stack .ias-mobile-cards {<!-- [et_pb_line_break_holder] -->    display: flex !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-stack .ias-wrap {<!-- [et_pb_line_break_holder] -->    padding: 50px 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-stack h2 {<!-- [et_pb_line_break_holder] -->    font-size: 26px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-stack .ias-cta-strip {<!-- [et_pb_line_break_holder] -->    flex-direction: column !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-stack .ias-cta-btn {<!-- [et_pb_line_break_holder] -->    width: 100% !important;<!-- [et_pb_line_break_holder] -->    justify-content: center !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-stack .ias-lead {<!-- [et_pb_line_break_holder] -->    font-size: 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-iap-stack\"><!-- [et_pb_line_break_holder] -->  <div class=\"ias-wrap\"><!-- [et_pb_line_break_holder] -->    <span id=\"iap-stack\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->    <div class=\"ias-badge\"><span class=\"ias-badge-dot\"><\/span><span>Library Comparison<\/span><\/div><!-- [et_pb_line_break_holder] -->    <h2>The 3 Python IMAP Stack Options<\/h2><!-- [et_pb_line_break_holder] -->    <pee class=\"ias-lead\">Choosing the right Python IMAP library depends on your use case: a quick script, a production service, or an async pipeline. Here is how the main options compare before we dive into code examples for each.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- Desktop table --><!-- [et_pb_line_break_holder] -->    <div class=\"ias-table-wrap\"><!-- [et_pb_line_break_holder] -->      <table><!-- [et_pb_line_break_holder] -->        <thead><!-- [et_pb_line_break_holder] -->          <tr><!-- [et_pb_line_break_holder] -->            <th>Library<\/th><!-- [et_pb_line_break_holder] -->            <th>Type<\/th><!-- [et_pb_line_break_holder] -->            <th>OAuth Support<\/th><!-- [et_pb_line_break_holder] -->            <th>Async<\/th><!-- [et_pb_line_break_holder] -->            <th>Parsing Helpers<\/th><!-- [et_pb_line_break_holder] -->            <th>Best For<\/th><!-- [et_pb_line_break_holder] -->          <\/tr><!-- [et_pb_line_break_holder] -->        <\/thead><!-- [et_pb_line_break_holder] -->        <tbody><!-- [et_pb_line_break_holder] -->          <tr><!-- [et_pb_line_break_holder] -->            <td><span class=\"ias-tag-lib\">imaplib<\/span><\/td><!-- [et_pb_line_break_holder] -->            <td>Stdlib (zero deps)<\/td><!-- [et_pb_line_break_holder] -->            <td><span class=\"ias-warn\">Manual<\/span><\/td><!-- [et_pb_line_break_holder] -->            <td><span class=\"ias-cross\">No<\/span><\/td><!-- [et_pb_line_break_holder] -->            <td><span class=\"ias-cross\">Minimal<\/span><\/td><!-- [et_pb_line_break_holder] -->            <td>Simple scripts, no external deps<\/td><!-- [et_pb_line_break_holder] -->          <\/tr><!-- [et_pb_line_break_holder] -->          <tr><!-- [et_pb_line_break_holder] -->            <td><span class=\"ias-tag-lib\">IMAPClient<\/span><\/td><!-- [et_pb_line_break_holder] -->            <td>Third-party wrapper<\/td><!-- [et_pb_line_break_holder] -->            <td><span class=\"ias-warn\">Manual<\/span><\/td><!-- [et_pb_line_break_holder] -->            <td><span class=\"ias-cross\">No<\/span><\/td><!-- [et_pb_line_break_holder] -->            <td><span class=\"ias-check\">Good<\/span><\/td><!-- [et_pb_line_break_holder] -->            <td>Production IMAP without async<\/td><!-- [et_pb_line_break_holder] -->          <\/tr><!-- [et_pb_line_break_holder] -->          <tr><!-- [et_pb_line_break_holder] -->            <td><span class=\"ias-tag-lib\">aioimaplib<\/span><\/td><!-- [et_pb_line_break_holder] -->            <td>Async library<\/td><!-- [et_pb_line_break_holder] -->            <td><span class=\"ias-warn\">Manual<\/span><\/td><!-- [et_pb_line_break_holder] -->            <td><span class=\"ias-check\">Yes<\/span><\/td><!-- [et_pb_line_break_holder] -->            <td><span class=\"ias-warn\">Limited<\/span><\/td><!-- [et_pb_line_break_holder] -->            <td>asyncio pipelines &#038; IDLE at scale<\/td><!-- [et_pb_line_break_holder] -->          <\/tr><!-- [et_pb_line_break_holder] -->          <tr><!-- [et_pb_line_break_holder] -->            <td><strong>Unipile API<\/strong><span class=\"ias-tag-best\">Best<\/span><\/td><!-- [et_pb_line_break_holder] -->            <td>Unified REST\/SDK<\/td><!-- [et_pb_line_break_holder] -->            <td><span class=\"ias-check\">Built-in<\/span><\/td><!-- [et_pb_line_break_holder] -->            <td><span class=\"ias-check\">Yes<\/span><\/td><!-- [et_pb_line_break_holder] -->            <td><span class=\"ias-check\">Full<\/span><\/td><!-- [et_pb_line_break_holder] -->            <td>Multi-provider production at scale<\/td><!-- [et_pb_line_break_holder] -->          <\/tr><!-- [et_pb_line_break_holder] -->        <\/tbody><!-- [et_pb_line_break_holder] -->      <\/table><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- Mobile cards --><!-- [et_pb_line_break_holder] -->    <div class=\"ias-mobile-cards\"><!-- [et_pb_line_break_holder] -->      <div class=\"ias-mcard\"><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-name\"><span class=\"ias-tag-lib\">imaplib<\/span> \u2014 Stdlib<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-row\"><span class=\"ias-mcard-label\">OAuth:<\/span><span class=\"ias-mcard-val\"><span class=\"ias-warn\">Manual setup<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-row\"><span class=\"ias-mcard-label\">Async:<\/span><span class=\"ias-mcard-val\"><span class=\"ias-cross\">No<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-row\"><span class=\"ias-mcard-label\">Parsing:<\/span><span class=\"ias-mcard-val\"><span class=\"ias-cross\">Minimal<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-row\"><span class=\"ias-mcard-label\">Best for:<\/span><span class=\"ias-mcard-val\">Simple scripts, zero dependencies<\/span><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"ias-mcard\"><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-name\"><span class=\"ias-tag-lib\">IMAPClient<\/span> \u2014 Wrapper<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-row\"><span class=\"ias-mcard-label\">OAuth:<\/span><span class=\"ias-mcard-val\"><span class=\"ias-warn\">Manual setup<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-row\"><span class=\"ias-mcard-label\">Async:<\/span><span class=\"ias-mcard-val\"><span class=\"ias-cross\">No<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-row\"><span class=\"ias-mcard-label\">Parsing:<\/span><span class=\"ias-mcard-val\"><span class=\"ias-check\">Good helpers<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-row\"><span class=\"ias-mcard-label\">Best for:<\/span><span class=\"ias-mcard-val\">Production IMAP, no async<\/span><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"ias-mcard\"><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-name\"><span class=\"ias-tag-lib\">aioimaplib<\/span> \u2014 Async<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-row\"><span class=\"ias-mcard-label\">OAuth:<\/span><span class=\"ias-mcard-val\"><span class=\"ias-warn\">Manual setup<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-row\"><span class=\"ias-mcard-label\">Async:<\/span><span class=\"ias-mcard-val\"><span class=\"ias-check\">Yes (asyncio)<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-row\"><span class=\"ias-mcard-label\">Parsing:<\/span><span class=\"ias-mcard-val\"><span class=\"ias-warn\">Limited<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-row\"><span class=\"ias-mcard-label\">Best for:<\/span><span class=\"ias-mcard-val\">asyncio pipelines, IDLE at scale<\/span><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"ias-mcard\"><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-name\"><strong>Unipile API<\/strong><span class=\"ias-tag-best\">Best<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-row\"><span class=\"ias-mcard-label\">OAuth:<\/span><span class=\"ias-mcard-val\"><span class=\"ias-check\">Built-in<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-row\"><span class=\"ias-mcard-label\">Async:<\/span><span class=\"ias-mcard-val\"><span class=\"ias-check\">Yes<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-row\"><span class=\"ias-mcard-label\">Parsing:<\/span><span class=\"ias-mcard-val\"><span class=\"ias-check\">Full structured JSON<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ias-mcard-row\"><span class=\"ias-mcard-label\">Best for:<\/span><span class=\"ias-mcard-val\">Multi-provider production at scale<\/span><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"ias-cta-strip\"><!-- [et_pb_line_break_holder] -->      <pee class=\"ias-cta-text\"><strong>Skip the IMAP complexity.<\/strong> Unipile abstracts imaplib, OAuth, and multi-provider logic into a single REST API. One integration for Gmail, Outlook, and any IMAP server.<\/pee><!-- [et_pb_line_break_holder] -->      <a class=\"ias-cta-btn\" href=\"https:\/\/dashboard.unipile.com\/signup\/\" target=\"_blank\" rel=\"noopener\"><!-- [et_pb_line_break_holder] -->        <svg viewBox=\"0 0 24 24\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><!-- [et_pb_line_break_holder] -->        <span>Start building free<\/span><!-- [et_pb_line_break_holder] -->      <\/a><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart,<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart *,<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart *::before,<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart {<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  width: 100% !important;<!-- [et_pb_line_break_holder] -->  overflow-x: hidden !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-wrap {<!-- [et_pb_line_break_holder] -->  max-width: 1100px !important;<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-badge {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.12) !important;<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 18px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-badge-dot {<!-- [et_pb_line_break_holder] -->  width: 7px !important;<!-- [et_pb_line_break_holder] -->  height: 7px !important;<!-- [et_pb_line_break_holder] -->  background: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 35px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.2 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-lead {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-steps {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  flex-direction: column !important;<!-- [et_pb_line_break_holder] -->  gap: 24px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-step {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-step-num {<!-- [et_pb_line_break_holder] -->  width: 40px !important;<!-- [et_pb_line_break_holder] -->  height: 40px !important;<!-- [et_pb_line_break_holder] -->  min-width: 40px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.12) !important;<!-- [et_pb_line_break_holder] -->  border-radius: 10px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: center !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-step-body {<!-- [et_pb_line_break_holder] -->  flex: 1 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-step-title {<!-- [et_pb_line_break_holder] -->  font-size: 16px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 10px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-step-text {<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important;<!-- [et_pb_line_break_holder] -->  color: #4a5568 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 14px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-step-text a {<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  text-decoration: underline !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/* Code block *\/<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-code-wrap {<!-- [et_pb_line_break_holder] -->  border-radius: 14px !important;<!-- [et_pb_line_break_holder] -->  overflow: hidden !important;<!-- [et_pb_line_break_holder] -->  background: #0d1117 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 8px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-editor-bar {<!-- [et_pb_line_break_holder] -->  background: #161b22 !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 18px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid rgba(255,255,255,0.06) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-dot {<!-- [et_pb_line_break_holder] -->  width: 12px !important;<!-- [et_pb_line_break_holder] -->  height: 12px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-dot-r { background: #ff5f57 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-dot-y { background: #febc2e !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-dot-g { background: #28c840 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-filename {<!-- [et_pb_line_break_holder] -->  color: #8b949e !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  margin-left: 6px !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-pre {<!-- [et_pb_line_break_holder] -->  padding: 22px 24px !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.8 !important;<!-- [et_pb_line_break_holder] -->  overflow-x: auto !important;<!-- [et_pb_line_break_holder] -->  background: #0d1117 !important;<!-- [et_pb_line_break_holder] -->  white-space: pre-wrap !important;<!-- [et_pb_line_break_holder] -->  word-break: break-word !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-pre code {<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->  white-space: pre-wrap !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  word-break: break-word !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .c { color: #8b949e !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .k { color: #ff7b72 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .fn { color: #d2a8ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .s { color: #a5d6ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .n { color: #79c0ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .w { color: #e6edf3 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-alert {<!-- [et_pb_line_break_holder] -->  background: rgba(245, 158, 11, 0.08) !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid rgba(245, 158, 11, 0.25) !important;<!-- [et_pb_line_break_holder] -->  border-radius: 12px !important;<!-- [et_pb_line_break_holder] -->  padding: 16px 20px !important;<!-- [et_pb_line_break_holder] -->  margin-top: 32px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  gap: 12px !important;<!-- [et_pb_line_break_holder] -->  align-items: flex-start !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-alert-icon {<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  margin-top: 2px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-alert-icon svg {<!-- [et_pb_line_break_holder] -->  width: 18px !important;<!-- [et_pb_line_break_holder] -->  height: 18px !important;<!-- [et_pb_line_break_holder] -->  stroke: #f59e0b !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-alert-text {<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.7 !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-alert-text strong {<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-quickstart .iaq-alert-text a {<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  text-decoration: underline !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-quickstart .iaq-wrap {<!-- [et_pb_line_break_holder] -->    padding: 50px 20px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-quickstart h2 {<!-- [et_pb_line_break_holder] -->    font-size: 28px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-quickstart .iaq-wrap {<!-- [et_pb_line_break_holder] -->    padding: 40px 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-quickstart h2 {<!-- [et_pb_line_break_holder] -->    font-size: 24px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-quickstart .iaq-step {<!-- [et_pb_line_break_holder] -->    flex-direction: column !important;<!-- [et_pb_line_break_holder] -->    gap: 12px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-quickstart .iaq-lead {<!-- [et_pb_line_break_holder] -->    font-size: 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-quickstart .iaq-pre {<!-- [et_pb_line_break_holder] -->    font-size: 12px !important;<!-- [et_pb_line_break_holder] -->    padding: 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-iap-quickstart\"><!-- [et_pb_line_break_holder] -->  <div class=\"iaq-wrap\"><!-- [et_pb_line_break_holder] -->    <span id=\"iap-quickstart\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->    <div class=\"iaq-badge\"><span class=\"iaq-badge-dot\"><\/span><span>Code Tutorial<\/span><\/div><!-- [et_pb_line_break_holder] -->    <h2>Quickstart: Connecting to IMAP with imaplib<\/h2><!-- [et_pb_line_break_holder] -->    <pee class=\"iaq-lead\">The Python standard library ships with <code>imaplib<\/code> &#8211; no install needed. Here is a complete walkthrough from connection to body fetch, with honest commentary on where the pain points are.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iaq-steps\"><!-- [et_pb_line_break_holder] -->      <div class=\"iaq-step\"><!-- [et_pb_line_break_holder] -->        <div class=\"iaq-step-num\">1<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iaq-step-body\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaq-step-title\">Connect and authenticate<\/div><!-- [et_pb_line_break_holder] -->          <pee class=\"iaq-step-text\">Use <code>imaplib.IMAP4_SSL<\/code> on port 993 for an encrypted connection. For Gmail and Outlook, see the server addresses in our <a href=\"https:\/\/www.unipile.com\/imap-server-connection-guide\/\">IMAP server connection guide<\/a>. Basic Auth (password) works for IMAP servers that still allow it &#8211; but Gmail and Outlook now require OAuth XOAUTH2 (covered in Section 5).<\/pee><!-- [et_pb_line_break_holder] -->          <div class=\"iaq-code-wrap\"><!-- [et_pb_line_break_holder] -->            <div class=\"iaq-editor-bar\"><!-- [et_pb_line_break_holder] -->              <span class=\"iaq-dot iaq-dot-r\"><\/span><!-- [et_pb_line_break_holder] -->              <span class=\"iaq-dot iaq-dot-y\"><\/span><!-- [et_pb_line_break_holder] -->              <span class=\"iaq-dot iaq-dot-g\"><\/span><!-- [et_pb_line_break_holder] -->              <span class=\"iaq-filename\">connect.py<\/span><!-- [et_pb_line_break_holder] -->            <\/div><!-- [et_pb_line_break_holder] -->            <div class=\"iaq-pre\"><code><span class=\"k\">import<\/span> <span class=\"w\">imaplib<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Connect to Gmail IMAP (TLS port 993)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">mail <\/span><span class=\"k\">=<\/span> <span class=\"w\">imaplib.<\/span><span class=\"fn\">IMAP4_SSL<\/span><span class=\"w\">(<\/span><span class=\"s\">'imap.gmail.com'<\/span><span class=\"w\">, <\/span><span class=\"n\">993<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Basic auth (app password only - OAuth preferred)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">mail.<\/span><span class=\"fn\">login<\/span><span class=\"w\">(<\/span><span class=\"s\">'user@gmail.com'<\/span><span class=\"w\">, <\/span><span class=\"s\">'app-password'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># List all mailboxes<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">status, mailboxes <\/span><span class=\"k\">=<\/span> <span class=\"w\">mail.<\/span><span class=\"fn\">list<\/span><span class=\"w\">()<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">for<\/span> <span class=\"w\">box <\/span><span class=\"k\">in<\/span> <span class=\"w\">mailboxes:<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"fn\">print<\/span><span class=\"w\">(box.<\/span><span class=\"fn\">decode<\/span><span class=\"w\">(<\/span><span class=\"s\">'utf-8'<\/span><span class=\"w\">))<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"w\">mail.<\/span><span class=\"fn\">logout<\/span><span class=\"w\">()<\/span><\/code><\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"iaq-step\"><!-- [et_pb_line_break_holder] -->        <div class=\"iaq-step-num\">2<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iaq-step-body\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaq-step-title\">Select a folder and search for messages<\/div><!-- [et_pb_line_break_holder] -->          <pee class=\"iaq-step-text\">The <code>select()<\/code> call opens a mailbox and returns the message count. <code>search()<\/code> returns a space-separated byte string of message IDs &#8211; not UIDs. You need to decode and split manually.<\/pee><!-- [et_pb_line_break_holder] -->          <div class=\"iaq-code-wrap\"><!-- [et_pb_line_break_holder] -->            <div class=\"iaq-editor-bar\"><!-- [et_pb_line_break_holder] -->              <span class=\"iaq-dot iaq-dot-r\"><\/span><!-- [et_pb_line_break_holder] -->              <span class=\"iaq-dot iaq-dot-y\"><\/span><!-- [et_pb_line_break_holder] -->              <span class=\"iaq-dot iaq-dot-g\"><\/span><!-- [et_pb_line_break_holder] -->              <span class=\"iaq-filename\">search.py<\/span><!-- [et_pb_line_break_holder] -->            <\/div><!-- [et_pb_line_break_holder] -->            <div class=\"iaq-pre\"><code><span class=\"c\"># Select INBOX (or any folder)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">status, count <\/span><span class=\"k\">=<\/span> <span class=\"w\">mail.<\/span><span class=\"fn\">select<\/span><span class=\"w\">(<\/span><span class=\"s\">'INBOX'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"fn\">print<\/span><span class=\"w\">(<\/span><span class=\"s\">f'Messages: {count[0].decode()}'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Search UNSEEN messages<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">status, msg_ids <\/span><span class=\"k\">=<\/span> <span class=\"w\">mail.<\/span><span class=\"fn\">search<\/span><span class=\"w\">(<\/span><span class=\"k\">None<\/span><span class=\"w\">, <\/span><span class=\"s\">'UNSEEN'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">ids <\/span><span class=\"k\">=<\/span> <span class=\"w\">msg_ids[<\/span><span class=\"n\">0<\/span><span class=\"w\">].<\/span><span class=\"fn\">split<\/span><span class=\"w\">()<\/span><!-- [et_pb_line_break_holder] --><span class=\"fn\">print<\/span><span class=\"w\">(<\/span><span class=\"s\">f'Unread count: {len(ids)}'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Search by sender<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">_, from_ids <\/span><span class=\"k\">=<\/span> <span class=\"w\">mail.<\/span><span class=\"fn\">search<\/span><span class=\"w\">(<\/span><span class=\"k\">None<\/span><span class=\"w\">, <\/span><span class=\"s\">'FROM'<\/span><span class=\"w\">, <\/span><span class=\"s\">'boss@company.com'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Search by date range<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">_, recent <\/span><span class=\"k\">=<\/span> <span class=\"w\">mail.<\/span><span class=\"fn\">search<\/span><span class=\"w\">(<\/span><span class=\"k\">None<\/span><span class=\"w\">, <\/span><span class=\"s\">'SINCE'<\/span><span class=\"w\">, <\/span><span class=\"s\">'01-Jan-2026'<\/span><span class=\"w\">)<\/span><\/code><\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"iaq-step\"><!-- [et_pb_line_break_holder] -->        <div class=\"iaq-step-num\">3<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iaq-step-body\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaq-step-title\">Fetch headers and parse the body<\/div><!-- [et_pb_line_break_holder] -->          <pee class=\"iaq-step-text\">This is where <code>imaplib<\/code> gets messy. The raw response is a list of tuples containing bytes. You must index <code>data[0][1]<\/code> to reach the raw message, then pass it to the <code>email<\/code> module for parsing. Headers are RFC 2047-encoded and require <code>decode_header()<\/code>.<\/pee><!-- [et_pb_line_break_holder] -->          <div class=\"iaq-code-wrap\"><!-- [et_pb_line_break_holder] -->            <div class=\"iaq-editor-bar\"><!-- [et_pb_line_break_holder] -->              <span class=\"iaq-dot iaq-dot-r\"><\/span><!-- [et_pb_line_break_holder] -->              <span class=\"iaq-dot iaq-dot-y\"><\/span><!-- [et_pb_line_break_holder] -->              <span class=\"iaq-dot iaq-dot-g\"><\/span><!-- [et_pb_line_break_holder] -->              <span class=\"iaq-filename\">fetch_body.py<\/span><!-- [et_pb_line_break_holder] -->            <\/div><!-- [et_pb_line_break_holder] -->            <div class=\"iaq-pre\"><code><span class=\"k\">import<\/span> <span class=\"w\">email<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">from<\/span> <span class=\"w\">email.header<\/span> <span class=\"k\">import<\/span> <span class=\"w\">decode_header<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"k\">def<\/span> <span class=\"fn\">decode_str<\/span><span class=\"w\">(value):<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"s\">\"\"\"Decode RFC 2047 encoded header value.\"\"\"<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">parts <\/span><span class=\"k\">=<\/span> <span class=\"fn\">decode_header<\/span><span class=\"w\">(value)<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">decoded <\/span><span class=\"k\">=<\/span> <span class=\"w\">[]<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"k\">for<\/span> <span class=\"w\">part, enc <\/span><span class=\"k\">in<\/span> <span class=\"w\">parts:<\/span><!-- [et_pb_line_break_holder] -->        <span class=\"k\">if<\/span> <span class=\"fn\">isinstance<\/span><span class=\"w\">(part, <\/span><span class=\"fn\">bytes<\/span><span class=\"w\">):<\/span><!-- [et_pb_line_break_holder] -->            <span class=\"w\">decoded.<\/span><span class=\"fn\">append<\/span><span class=\"w\">(part.<\/span><span class=\"fn\">decode<\/span><span class=\"w\">(enc <\/span><span class=\"k\">or<\/span> <span class=\"s\">'utf-8'<\/span><span class=\"w\">, errors=<\/span><span class=\"s\">'replace'<\/span><span class=\"w\">))<\/span><!-- [et_pb_line_break_holder] -->        <span class=\"k\">else<\/span><span class=\"w\">:<\/span><!-- [et_pb_line_break_holder] -->            <span class=\"w\">decoded.<\/span><span class=\"fn\">append<\/span><span class=\"w\">(part)<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"k\">return<\/span> <span class=\"s\">' '<\/span><span class=\"w\">.<\/span><span class=\"fn\">join<\/span><span class=\"w\">(decoded)<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"k\">for<\/span> <span class=\"w\">uid <\/span><span class=\"k\">in<\/span> <span class=\"w\">ids[-<\/span><span class=\"n\">5<\/span><span class=\"w\">:]:<\/span>  <span class=\"c\"># last 5 messages<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">_, data <\/span><span class=\"k\">=<\/span> <span class=\"w\">mail.<\/span><span class=\"fn\">fetch<\/span><span class=\"w\">(uid, <\/span><span class=\"s\">'(RFC822)'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">raw <\/span><span class=\"k\">=<\/span> <span class=\"w\">data[<\/span><span class=\"n\">0<\/span><span class=\"w\">][<\/span><span class=\"n\">1<\/span><span class=\"w\">]<\/span>  <span class=\"c\"># tuple unpacking pain<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">msg <\/span><span class=\"k\">=<\/span> <span class=\"w\">email.<\/span><span class=\"fn\">message_from_bytes<\/span><span class=\"w\">(raw)<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <span class=\"w\">subject <\/span><span class=\"k\">=<\/span> <span class=\"fn\">decode_str<\/span><span class=\"w\">(msg[<\/span><span class=\"s\">'Subject'<\/span><span class=\"w\">] <\/span><span class=\"k\">or<\/span> <span class=\"s\">''<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">sender  <\/span><span class=\"k\">=<\/span> <span class=\"fn\">decode_str<\/span><span class=\"w\">(msg[<\/span><span class=\"s\">'From'<\/span><span class=\"w\">] <\/span><span class=\"k\">or<\/span> <span class=\"s\">''<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <span class=\"c\"># Walk MIME parts for plain text body<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"k\">if<\/span> <span class=\"w\">msg.<\/span><span class=\"fn\">is_multipart<\/span><span class=\"w\">():<\/span><!-- [et_pb_line_break_holder] -->        <span class=\"k\">for<\/span> <span class=\"w\">part <\/span><span class=\"k\">in<\/span> <span class=\"w\">msg.<\/span><span class=\"fn\">walk<\/span><span class=\"w\">():<\/span><!-- [et_pb_line_break_holder] -->            <span class=\"k\">if<\/span> <span class=\"w\">part.<\/span><span class=\"fn\">get_content_type<\/span><span class=\"w\">() <\/span><span class=\"k\">==<\/span> <span class=\"s\">'text\/plain'<\/span><span class=\"w\">:<\/span><!-- [et_pb_line_break_holder] -->                <span class=\"w\">body <\/span><span class=\"k\">=<\/span> <span class=\"w\">part.<\/span><span class=\"fn\">get_payload<\/span><span class=\"w\">(decode=<\/span><span class=\"k\">True<\/span><span class=\"w\">).<\/span><span class=\"fn\">decode<\/span><span class=\"w\">(<\/span><span class=\"s\">'utf-8'<\/span><span class=\"w\">, errors=<\/span><span class=\"s\">'replace'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"fn\">print<\/span><span class=\"w\">(<\/span><span class=\"s\">f'From: {sender} | Subject: {subject}'<\/span><span class=\"w\">)<\/span><\/code><\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iaq-alert\"><!-- [et_pb_line_break_holder] -->      <div class=\"iaq-alert-icon\"><svg viewBox=\"0 0 24 24\"><path d=\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->      <pee class=\"iaq-alert-text\"><strong>The imaplib pain points:<\/strong> raw byte responses require careful tuple indexing (<code>data[0][1]<\/code>), headers are RFC 2047-encoded and need <code>decode_header()<\/code>, multipart MIME bodies require a full <code>walk()<\/code>, and there are no built-in helpers for UIDs vs. sequence numbers. For production workloads, consider IMAPClient (Section 4) or a <a href=\"https:\/\/www.unipile.com\/the-developers-guide-to-imap-api-solution\/\">unified IMAP API<\/a> instead.<\/pee><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient,<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient *,<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient *::before,<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient {<!-- [et_pb_line_break_holder] -->  background: #f4f5f7 !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  width: 100% !important;<!-- [et_pb_line_break_holder] -->  overflow-x: hidden !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-wrap {<!-- [et_pb_line_break_holder] -->  max-width: 1100px !important;<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-badge {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(221, 223, 76, 0.18) !important;<!-- [et_pb_line_break_holder] -->  color: #8a8c2e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 18px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-badge-dot {<!-- [et_pb_line_break_holder] -->  width: 7px !important;<!-- [et_pb_line_break_holder] -->  height: 7px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 35px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.2 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-lead {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-grid {<!-- [et_pb_line_break_holder] -->  display: grid !important;<!-- [et_pb_line_break_holder] -->  grid-template-columns: 1fr 1fr !important;<!-- [et_pb_line_break_holder] -->  gap: 24px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-vs-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 24px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-vs-title {<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 14px !important;<!-- [et_pb_line_break_holder] -->  padding-bottom: 10px !important;<!-- [et_pb_line_break_holder] -->  border-bottom: 2px solid #f0f2f5 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-vs-bad { border-bottom-color: rgba(239, 68, 68, 0.25) !important; color: #dc2626 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-vs-good { border-bottom-color: rgba(59, 185, 139, 0.35) !important; color: #2aaa7e !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-item {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: flex-start !important;<!-- [et_pb_line_break_holder] -->  gap: 10px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 10px !important;<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  color: #4a5568 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-item-dot {<!-- [et_pb_line_break_holder] -->  width: 6px !important;<!-- [et_pb_line_break_holder] -->  height: 6px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  margin-top: 6px !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-dot-red { background: #ef4444 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-dot-green { background: #3BB98B !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-code-wrap {<!-- [et_pb_line_break_holder] -->  border-radius: 14px !important;<!-- [et_pb_line_break_holder] -->  overflow: hidden !important;<!-- [et_pb_line_break_holder] -->  background: #0d1117 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 24px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-editor-bar {<!-- [et_pb_line_break_holder] -->  background: #161b22 !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 18px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid rgba(255,255,255,0.06) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-dot-m {<!-- [et_pb_line_break_holder] -->  width: 12px !important;<!-- [et_pb_line_break_holder] -->  height: 12px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-dot-m-r { background: #ff5f57 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-dot-m-y { background: #febc2e !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-dot-m-g { background: #28c840 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-filename {<!-- [et_pb_line_break_holder] -->  color: #8b949e !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  margin-left: 6px !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-pre {<!-- [et_pb_line_break_holder] -->  padding: 22px 24px !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.8 !important;<!-- [et_pb_line_break_holder] -->  overflow-x: auto !important;<!-- [et_pb_line_break_holder] -->  background: #0d1117 !important;<!-- [et_pb_line_break_holder] -->  white-space: pre-wrap !important;<!-- [et_pb_line_break_holder] -->  word-break: break-word !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-pre code {<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->  white-space: pre-wrap !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  word-break: break-word !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .c { color: #8b949e !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .k { color: #ff7b72 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .fn { color: #d2a8ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .s { color: #a5d6ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .n { color: #79c0ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .w { color: #e6edf3 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-cta-strip {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 24px 28px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: space-between !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-cta-text {<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.6 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-cta-text strong {<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-cta-btn {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 22px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  border: 2px solid #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->  transition: transform 0.25s ease !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-cta-btn:hover {<!-- [et_pb_line_break_holder] -->  transform: translateY(-5px) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-imapclient .iac-cta-btn svg {<!-- [et_pb_line_break_holder] -->  width: 15px !important;<!-- [et_pb_line_break_holder] -->  height: 15px !important;<!-- [et_pb_line_break_holder] -->  stroke: currentColor !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2.5 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-imapclient .iac-wrap {<!-- [et_pb_line_break_holder] -->    padding: 50px 20px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-imapclient h2 {<!-- [et_pb_line_break_holder] -->    font-size: 28px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-imapclient .iac-grid {<!-- [et_pb_line_break_holder] -->    grid-template-columns: 1fr !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-imapclient .iac-wrap {<!-- [et_pb_line_break_holder] -->    padding: 40px 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-imapclient h2 {<!-- [et_pb_line_break_holder] -->    font-size: 24px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-imapclient .iac-lead {<!-- [et_pb_line_break_holder] -->    font-size: 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-imapclient .iac-cta-strip {<!-- [et_pb_line_break_holder] -->    flex-direction: column !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-imapclient .iac-cta-btn {<!-- [et_pb_line_break_holder] -->    width: 100% !important;<!-- [et_pb_line_break_holder] -->    justify-content: center !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-imapclient .iac-pre {<!-- [et_pb_line_break_holder] -->    font-size: 12px !important;<!-- [et_pb_line_break_holder] -->    padding: 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-iap-imapclient\"><!-- [et_pb_line_break_holder] -->  <div class=\"iac-wrap\"><!-- [et_pb_line_break_holder] -->    <span id=\"iap-imapclient\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->    <div class=\"iac-badge\"><span class=\"iac-badge-dot\"><\/span><span>Production Library<\/span><\/div><!-- [et_pb_line_break_holder] -->    <h2>Going Further: IMAPClient for Production<\/h2><!-- [et_pb_line_break_holder] -->    <pee class=\"iac-lead\">Once you hit production with imaplib, you quickly notice its fragile response parsing, inconsistent UID handling, and absence of helpers for common tasks. IMAPClient is a Pythonic wrapper that smooths out these rough edges while staying close to the IMAP spec.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iac-grid\"><!-- [et_pb_line_break_holder] -->      <div class=\"iac-vs-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"iac-vs-title iac-vs-bad\">Why imaplib breaks in production<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iac-item\"><span class=\"iac-item-dot iac-dot-red\"><\/span><span>Responses are raw bytes tuples \u2014 fragile tuple indexing <code>data[0][1]<\/code><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iac-item\"><span class=\"iac-item-dot iac-dot-red\"><\/span><span>No UID-based fetching by default (use <code>uid()<\/code> wrapper manually)<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iac-item\"><span class=\"iac-item-dot iac-dot-red\"><\/span><span>No built-in MIME parsing or body extraction helpers<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iac-item\"><span class=\"iac-item-dot iac-dot-red\"><\/span><span>IDLE requires manual socket management<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iac-item\"><span class=\"iac-item-dot iac-dot-red\"><\/span><span>RFC 2047 header decoding is your problem<\/span><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"iac-vs-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"iac-vs-title iac-vs-good\">What IMAPClient gives you<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iac-item\"><span class=\"iac-item-dot iac-dot-green\"><\/span><span>Structured dict responses &#8211; no tuple unpacking required<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iac-item\"><span class=\"iac-item-dot iac-dot-green\"><\/span><span>UID mode by default (<code>use_uid=True<\/code>)<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iac-item\"><span class=\"iac-item-dot iac-dot-green\"><\/span><span>Cleaner <code>search()<\/code>, <code>fetch()<\/code>, <code>move()<\/code>, <code>copy()<\/code> API<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iac-item\"><span class=\"iac-item-dot iac-dot-green\"><\/span><span>Built-in IDLE support with <code>idle()<\/code> \/ <code>idle_check()<\/code><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iac-item\"><span class=\"iac-item-dot iac-dot-green\"><\/span><span>Works with any IMAP server &#8211; Gmail, Outlook, custom IMAP<\/span><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iac-code-wrap\"><!-- [et_pb_line_break_holder] -->      <div class=\"iac-editor-bar\"><!-- [et_pb_line_break_holder] -->        <span class=\"iac-dot-m iac-dot-m-r\"><\/span><!-- [et_pb_line_break_holder] -->        <span class=\"iac-dot-m iac-dot-m-y\"><\/span><!-- [et_pb_line_break_holder] -->        <span class=\"iac-dot-m iac-dot-m-g\"><\/span><!-- [et_pb_line_break_holder] -->        <span class=\"iac-filename\">imapclient_example.py<\/span><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"iac-pre\"><code><span class=\"k\">from<\/span> <span class=\"w\">imapclient<\/span> <span class=\"k\">import<\/span> <span class=\"w\">IMAPClient<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">import<\/span> <span class=\"w\">pprint<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Connect with IMAPClient (use_uid=True by default)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">server <\/span><span class=\"k\">=<\/span> <span class=\"fn\">IMAPClient<\/span><span class=\"w\">(<\/span><span class=\"s\">'imap.gmail.com'<\/span><span class=\"w\">, ssl=<\/span><span class=\"k\">True<\/span><span class=\"w\">, use_uid=<\/span><span class=\"k\">True<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">server.<\/span><span class=\"fn\">login<\/span><span class=\"w\">(<\/span><span class=\"s\">'user@gmail.com'<\/span><span class=\"w\">, <\/span><span class=\"s\">'app-password'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Select and search<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">server.<\/span><span class=\"fn\">select_folder<\/span><span class=\"w\">(<\/span><span class=\"s\">'INBOX'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">messages <\/span><span class=\"k\">=<\/span> <span class=\"w\">server.<\/span><span class=\"fn\">search<\/span><span class=\"w\">([<\/span><span class=\"s\">'UNSEEN'<\/span><span class=\"w\">])<\/span><!-- [et_pb_line_break_holder] --><span class=\"fn\">print<\/span><span class=\"w\">(<\/span><span class=\"s\">f'{len(messages)} unread messages'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Fetch - returns structured dict, not raw bytes<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">response <\/span><span class=\"k\">=<\/span> <span class=\"w\">server.<\/span><span class=\"fn\">fetch<\/span><span class=\"w\">(messages[:10], [<\/span><span class=\"s\">'ENVELOPE'<\/span><span class=\"w\">, <\/span><span class=\"s\">'BODY[]'<\/span><span class=\"w\">, <\/span><span class=\"s\">'FLAGS'<\/span><span class=\"w\">])<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">for<\/span> <span class=\"w\">uid, data <\/span><span class=\"k\">in<\/span> <span class=\"w\">response.<\/span><span class=\"fn\">items<\/span><span class=\"w\">():<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">envelope <\/span><span class=\"k\">=<\/span> <span class=\"w\">data[<\/span><span class=\"s\">b'ENVELOPE'<\/span><span class=\"w\">]<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"fn\">print<\/span><span class=\"w\">(<\/span><span class=\"s\">f'UID {uid}: {envelope.subject}'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Move messages to folder<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">server.<\/span><span class=\"fn\">move<\/span><span class=\"w\">(messages[:5], <\/span><span class=\"s\">'Archive'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># IDLE - wait for new messages (up to 29 min on Gmail)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">server.<\/span><span class=\"fn\">idle<\/span><span class=\"w\">()<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">responses <\/span><span class=\"k\">=<\/span> <span class=\"w\">server.<\/span><span class=\"fn\">idle_check<\/span><span class=\"w\">(timeout=<\/span><span class=\"n\">60<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"fn\">print<\/span><span class=\"w\">(<\/span><span class=\"s\">'IDLE response:'<\/span><span class=\"w\">, responses)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">server.<\/span><span class=\"fn\">idle_done<\/span><span class=\"w\">()<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"w\">server.<\/span><span class=\"fn\">logout<\/span><span class=\"w\">()<\/span><\/code><\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iac-cta-strip\"><!-- [et_pb_line_break_holder] -->      <pee class=\"iac-cta-text\"><strong>Even IMAPClient requires manual OAuth token management and multi-provider handling.<\/strong> Unipile abstracts all of this &#8211; OAuth refresh, provider quirks, IDLE reconnects &#8211; behind a single REST API. See our complete <a href=\"https:\/\/www.unipile.com\/email-api-guide\/\" style=\"color:#2aaa7e;text-decoration:underline;\">email API guide<\/a>.<\/pee><!-- [et_pb_line_break_holder] -->      <a class=\"iac-cta-btn\" href=\"https:\/\/dashboard.unipile.com\/signup\/\" target=\"_blank\" rel=\"noopener\"><!-- [et_pb_line_break_holder] -->        <svg viewBox=\"0 0 24 24\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><!-- [et_pb_line_break_holder] -->        <span>Build it with Unipile<\/span><!-- [et_pb_line_break_holder] -->      <\/a><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-iap-oauth,<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth *,<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth *::before,<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth {<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  width: 100% !important;<!-- [et_pb_line_break_holder] -->  overflow-x: hidden !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-wrap {<!-- [et_pb_line_break_holder] -->  max-width: 1100px !important;<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-badge {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.12) !important;<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 18px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-badge-dot {<!-- [et_pb_line_break_holder] -->  width: 7px !important;<!-- [et_pb_line_break_holder] -->  height: 7px !important;<!-- [et_pb_line_break_holder] -->  background: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 35px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.2 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-lead {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 32px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-explain-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 24px 28px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 32px !important;<!-- [et_pb_line_break_holder] -->  border-left: 4px solid #3BB98B !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-explain-label {<!-- [et_pb_line_break_holder] -->  font-size: 11px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.8px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 10px !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-explain-text {<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-explain-text code {<!-- [et_pb_line_break_holder] -->  background: rgba(0,0,0,0.06) !important;<!-- [et_pb_line_break_holder] -->  padding: 2px 6px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 4px !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-explain-text a {<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  text-decoration: underline !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-tabs {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  gap: 0 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 24px !important;<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 10px !important;<!-- [et_pb_line_break_holder] -->  padding: 4px !important;<!-- [et_pb_line_break_holder] -->  width: fit-content !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-tab {<!-- [et_pb_line_break_holder] -->  padding: 8px 18px !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  color: #64748b !important;<!-- [et_pb_line_break_holder] -->  border-radius: 7px !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  transition: all 0.2s ease !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-tab img {<!-- [et_pb_line_break_holder] -->  width: 18px !important;<!-- [et_pb_line_break_holder] -->  height: 18px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-tab.active {<!-- [et_pb_line_break_holder] -->  background: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  color: #ffffff !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-panel {<!-- [et_pb_line_break_holder] -->  display: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-panel.active {<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-code-wrap {<!-- [et_pb_line_break_holder] -->  border-radius: 14px !important;<!-- [et_pb_line_break_holder] -->  overflow: hidden !important;<!-- [et_pb_line_break_holder] -->  background: #0d1117 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 24px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-editor-bar {<!-- [et_pb_line_break_holder] -->  background: #161b22 !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 18px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid rgba(255,255,255,0.06) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-dot {<!-- [et_pb_line_break_holder] -->  width: 12px !important;<!-- [et_pb_line_break_holder] -->  height: 12px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-dot-r { background: #ff5f57 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-dot-y { background: #febc2e !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-dot-g { background: #28c840 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-filename {<!-- [et_pb_line_break_holder] -->  color: #8b949e !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  margin-left: 6px !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-pre {<!-- [et_pb_line_break_holder] -->  padding: 22px 24px !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.8 !important;<!-- [et_pb_line_break_holder] -->  overflow-x: auto !important;<!-- [et_pb_line_break_holder] -->  background: #0d1117 !important;<!-- [et_pb_line_break_holder] -->  white-space: pre-wrap !important;<!-- [et_pb_line_break_holder] -->  word-break: break-word !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-pre code {<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->  white-space: pre-wrap !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  word-break: break-word !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .c { color: #8b949e !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .k { color: #ff7b72 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .fn { color: #d2a8ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .s { color: #a5d6ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .n { color: #79c0ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .w { color: #e6edf3 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-info-box {<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.06) !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid rgba(59, 185, 139, 0.2) !important;<!-- [et_pb_line_break_holder] -->  border-radius: 12px !important;<!-- [et_pb_line_break_holder] -->  padding: 16px 20px !important;<!-- [et_pb_line_break_holder] -->  margin-top: 24px !important;<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.7 !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-info-box strong {<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-info-box a {<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  text-decoration: underline !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-cta-strip {<!-- [et_pb_line_break_holder] -->  background: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 28px 32px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: space-between !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->  margin-top: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-cta-text {<!-- [et_pb_line_break_holder] -->  font-size: 16px !important;<!-- [et_pb_line_break_holder] -->  color: rgba(255,255,255,0.9) !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.6 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-cta-text strong {<!-- [et_pb_line_break_holder] -->  color: #ffffff !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-cta-btn {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  padding: 14px 24px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  border: 2px solid #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->  transition: transform 0.25s ease !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-cta-btn:hover {<!-- [et_pb_line_break_holder] -->  transform: translateY(-5px) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-oauth .iao-cta-btn svg {<!-- [et_pb_line_break_holder] -->  width: 15px !important;<!-- [et_pb_line_break_holder] -->  height: 15px !important;<!-- [et_pb_line_break_holder] -->  stroke: currentColor !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2.5 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-oauth .iao-wrap {<!-- [et_pb_line_break_holder] -->    padding: 50px 20px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-oauth h2 {<!-- [et_pb_line_break_holder] -->    font-size: 28px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-oauth .iao-wrap {<!-- [et_pb_line_break_holder] -->    padding: 40px 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-oauth h2 {<!-- [et_pb_line_break_holder] -->    font-size: 24px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-oauth .iao-lead {<!-- [et_pb_line_break_holder] -->    font-size: 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-oauth .iao-cta-strip {<!-- [et_pb_line_break_holder] -->    flex-direction: column !important;<!-- [et_pb_line_break_holder] -->    padding: 20px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-oauth .iao-cta-btn {<!-- [et_pb_line_break_holder] -->    width: 100% !important;<!-- [et_pb_line_break_holder] -->    justify-content: center !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-oauth .iao-pre {<!-- [et_pb_line_break_holder] -->    font-size: 12px !important;<!-- [et_pb_line_break_holder] -->    padding: 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-iap-oauth\"><!-- [et_pb_line_break_holder] -->  <div class=\"iao-wrap\"><!-- [et_pb_line_break_holder] -->    <span id=\"iap-oauth\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->    <div class=\"iao-badge\"><span class=\"iao-badge-dot\"><\/span><span>OAuth XOAUTH2<\/span><\/div><!-- [et_pb_line_break_holder] -->    <h2>OAuth XOAUTH2 in Python: Gmail and Microsoft 365<\/h2><!-- [et_pb_line_break_holder] -->    <pee class=\"iao-lead\">Basic password authentication is dead for major providers. Gmail has blocked it for standard accounts since May 2022. Microsoft 365 deprecated Basic Auth for IMAP in September 2024. XOAUTH2 (an OAuth 2.0 SASL mechanism) is now the only production-grade way to authenticate a Python IMAP client. For the full OAuth flow explanation, see our <a href=\"https:\/\/www.unipile.com\/oauth-email-api\/\" style=\"color:#2aaa7e;text-decoration:underline;\">OAuth email API guide<\/a>.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iao-explain-card\"><!-- [et_pb_line_break_holder] -->      <span class=\"iao-explain-label\">How XOAUTH2 works<\/span><!-- [et_pb_line_break_holder] -->      <pee class=\"iao-explain-text\">XOAUTH2 is a SASL authentication mechanism that encodes an OAuth Bearer token into a base64 string with the format: <code>user={email}\\x01auth=Bearer {token}\\x01\\x01<\/code>. This string is passed to <code>imaplib.IMAP4_SSL.authenticate('XOAUTH2', callback)<\/code>. The callback returns the base64-encoded string. You are responsible for obtaining and refreshing the OAuth access token through Google or Microsoft identity endpoints before making the IMAP connection. For the Gmail scopes required, see our <a href=\"https:\/\/www.unipile.com\/gmail-api-scopes-guide\/\">Gmail API scopes guide<\/a>.<\/pee><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iao-tabs\" id=\"oauth-tabs\"><!-- [et_pb_line_break_holder] -->      <div class=\"iao-tab active\" data-panel=\"gmail\"><!-- [et_pb_line_break_holder] -->        <img decoding=\"async\" src=\"https:\/\/www.unipile.com\/wp-content\/uploads\/2024\/02\/gmail-3.svg\" alt=\"Gmail\"><!-- [et_pb_line_break_holder] -->        <span>Gmail<\/span><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"iao-tab\" data-panel=\"outlook\"><!-- [et_pb_line_break_holder] -->        <img decoding=\"async\" src=\"https:\/\/www.unipile.com\/wp-content\/uploads\/2024\/02\/outlook-2.svg\" alt=\"Outlook\"><!-- [et_pb_line_break_holder] -->        <span>Microsoft 365<\/span><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iao-panel active\" id=\"panel-gmail\"><!-- [et_pb_line_break_holder] -->      <div class=\"iao-code-wrap\"><!-- [et_pb_line_break_holder] -->        <div class=\"iao-editor-bar\"><!-- [et_pb_line_break_holder] -->          <span class=\"iao-dot iao-dot-r\"><\/span><!-- [et_pb_line_break_holder] -->          <span class=\"iao-dot iao-dot-y\"><\/span><!-- [et_pb_line_break_holder] -->          <span class=\"iao-dot iao-dot-g\"><\/span><!-- [et_pb_line_break_holder] -->          <span class=\"iao-filename\">gmail_xoauth2.py<\/span><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iao-pre\"><code><span class=\"k\">import<\/span> <span class=\"w\">imaplib, base64, json<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">from<\/span> <span class=\"w\">google.oauth2.credentials<\/span> <span class=\"k\">import<\/span> <span class=\"w\">Credentials<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">from<\/span> <span class=\"w\">google.auth.transport.requests<\/span> <span class=\"k\">import<\/span> <span class=\"w\">Request<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"k\">def<\/span> <span class=\"fn\">build_xoauth2_string<\/span><span class=\"w\">(user_email, access_token):<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"s\">\"\"\"Build XOAUTH2 SASL string for IMAP authentication.\"\"\"<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">auth_string <\/span><span class=\"k\">=<\/span> <span class=\"s\">f'user={user_email}\\x01auth=Bearer {access_token}\\x01\\x01'<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"k\">return<\/span> <span class=\"fn\">base64<\/span><span class=\"w\">.<\/span><span class=\"fn\">b64encode<\/span><span class=\"w\">(auth_string.<\/span><span class=\"fn\">encode<\/span><span class=\"w\">(<\/span><span class=\"s\">'ascii'<\/span><span class=\"w\">))<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"k\">def<\/span> <span class=\"fn\">get_valid_token<\/span><span class=\"w\">(creds_dict):<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"s\">\"\"\"Refresh token if expired using google-auth library.\"\"\"<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">creds <\/span><span class=\"k\">=<\/span> <span class=\"w\">Credentials.<\/span><span class=\"fn\">from_authorized_user_info<\/span><span class=\"w\">(creds_dict)<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"k\">if<\/span> <span class=\"w\">creds.<\/span><span class=\"fn\">expired<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span> <span class=\"w\">creds.refresh_token:<\/span><!-- [et_pb_line_break_holder] -->        <span class=\"w\">creds.<\/span><span class=\"fn\">refresh<\/span><span class=\"w\">(<\/span><span class=\"fn\">Request<\/span><span class=\"w\">())<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"k\">return<\/span> <span class=\"w\">creds.token<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Required Gmail IMAP scope: https:\/\/mail.google.com\/<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">user_email <\/span><span class=\"k\">=<\/span> <span class=\"s\">'user@gmail.com'<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">access_token <\/span><span class=\"k\">=<\/span> <span class=\"fn\">get_valid_token<\/span><span class=\"w\">(creds_dict)<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"w\">mail <\/span><span class=\"k\">=<\/span> <span class=\"w\">imaplib.<\/span><span class=\"fn\">IMAP4_SSL<\/span><span class=\"w\">(<\/span><span class=\"s\">'imap.gmail.com'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">auth_string <\/span><span class=\"k\">=<\/span> <span class=\"fn\">build_xoauth2_string<\/span><span class=\"w\">(user_email, access_token)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">mail.<\/span><span class=\"fn\">authenticate<\/span><span class=\"w\">(<\/span><span class=\"s\">'XOAUTH2'<\/span><span class=\"w\">, <\/span><span class=\"k\">lambda<\/span> <span class=\"w\">x: auth_string)<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Now use as normal<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">mail.<\/span><span class=\"fn\">select<\/span><span class=\"w\">(<\/span><span class=\"s\">'INBOX'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">_, ids <\/span><span class=\"k\">=<\/span> <span class=\"w\">mail.<\/span><span class=\"fn\">search<\/span><span class=\"w\">(<\/span><span class=\"k\">None<\/span><span class=\"w\">, <\/span><span class=\"s\">'ALL'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"fn\">print<\/span><span class=\"w\">(<\/span><span class=\"s\">f'Total messages: {len(ids[0].split())}'<\/span><span class=\"w\">)<\/span><\/code><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"iao-info-box\"><!-- [et_pb_line_break_holder] -->        <strong>Gmail scope requirement:<\/strong> The access token must be obtained with the <code>https:\/\/mail.google.com\/<\/code> scope (not <code>gmail.readonly<\/code> alone &#8211; that scope does not grant IMAP access). See our <a href=\"https:\/\/www.unipile.com\/gmail-api-scopes-guide\/\">Gmail API scopes guide<\/a> for a full breakdown. You also need to enable IMAP in Gmail settings and use a Google Cloud OAuth 2.0 client ID with the correct redirect URI.<!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iao-panel\" id=\"panel-outlook\"><!-- [et_pb_line_break_holder] -->      <div class=\"iao-code-wrap\"><!-- [et_pb_line_break_holder] -->        <div class=\"iao-editor-bar\"><!-- [et_pb_line_break_holder] -->          <span class=\"iao-dot iao-dot-r\"><\/span><!-- [et_pb_line_break_holder] -->          <span class=\"iao-dot iao-dot-y\"><\/span><!-- [et_pb_line_break_holder] -->          <span class=\"iao-dot iao-dot-g\"><\/span><!-- [et_pb_line_break_holder] -->          <span class=\"iao-filename\">outlook_xoauth2.py<\/span><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iao-pre\"><code><span class=\"k\">import<\/span> <span class=\"w\">imaplib, base64<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">import<\/span> <span class=\"w\">msal<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"k\">def<\/span> <span class=\"fn\">build_xoauth2_string<\/span><span class=\"w\">(user_email, access_token):<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">auth_string <\/span><span class=\"k\">=<\/span> <span class=\"s\">f'user={user_email}\\x01auth=Bearer {access_token}\\x01\\x01'<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"k\">return<\/span> <span class=\"fn\">base64<\/span><span class=\"w\">.<\/span><span class=\"fn\">b64encode<\/span><span class=\"w\">(auth_string.<\/span><span class=\"fn\">encode<\/span><span class=\"w\">(<\/span><span class=\"s\">'ascii'<\/span><span class=\"w\">))<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># MSAL - Microsoft Authentication Library for Python<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">CLIENT_ID <\/span><span class=\"k\">=<\/span> <span class=\"s\">'your-azure-app-client-id'<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">TENANT_ID <\/span><span class=\"k\">=<\/span> <span class=\"s\">'your-tenant-id'<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># Scope for IMAP access (Outlook \/ Microsoft 365)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">SCOPE <\/span><span class=\"k\">=<\/span> <span class=\"w\">[<\/span><span class=\"s\">'https:\/\/outlook.office365.com\/IMAP.AccessAsUser.All'<\/span><span class=\"w\">]<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"w\">app <\/span><span class=\"k\">=<\/span> <span class=\"w\">msal.<\/span><span class=\"fn\">PublicClientApplication<\/span><span class=\"w\">(CLIENT_ID, authority=<\/span><span class=\"s\">f'https:\/\/login.microsoftonline.com\/{TENANT_ID}'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Acquire token (interactive or via refresh token)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">result <\/span><span class=\"k\">=<\/span> <span class=\"w\">app.<\/span><span class=\"fn\">acquire_token_by_authorization_code<\/span><span class=\"w\">(code, scopes=SCOPE, redirect_uri=redirect_uri)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">access_token <\/span><span class=\"k\">=<\/span> <span class=\"w\">result[<\/span><span class=\"s\">'access_token'<\/span><span class=\"w\">]<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Connect to Outlook IMAP with XOAUTH2<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">user_email <\/span><span class=\"k\">=<\/span> <span class=\"s\">'user@outlook.com'<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">mail <\/span><span class=\"k\">=<\/span> <span class=\"w\">imaplib.<\/span><span class=\"fn\">IMAP4_SSL<\/span><span class=\"w\">(<\/span><span class=\"s\">'outlook.office365.com'<\/span><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">auth_string <\/span><span class=\"k\">=<\/span> <span class=\"fn\">build_xoauth2_string<\/span><span class=\"w\">(user_email, access_token)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">mail.<\/span><span class=\"fn\">authenticate<\/span><span class=\"w\">(<\/span><span class=\"s\">'XOAUTH2'<\/span><span class=\"w\">, <\/span><span class=\"k\">lambda<\/span> <span class=\"w\">x: auth_string)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">mail.<\/span><span class=\"fn\">select<\/span><span class=\"w\">(<\/span><span class=\"s\">'INBOX'<\/span><span class=\"w\">)<\/span><\/code><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"iao-info-box\"><!-- [et_pb_line_break_holder] -->        <strong>Microsoft 365 IMAP note:<\/strong> Since September 2024, Microsoft has disabled Basic Auth for IMAP on all Microsoft 365 tenants. You must use XOAUTH2. Register an Azure AD application, enable &#8220;IMAP.AccessAsUser.All&#8221; permission, and use MSAL for token acquisition. For Microsoft Graph as an alternative to IMAP, see our <a href=\"https:\/\/www.unipile.com\/microsoft-graph-oauth-email\/\">Microsoft Graph OAuth email guide<\/a>.<!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iao-cta-strip\"><!-- [et_pb_line_break_holder] -->      <pee class=\"iao-cta-text\"><strong>OAuth XOAUTH2 is 50+ lines per provider.<\/strong> Unipile handles token refresh, XOAUTH2 handshake, and provider-specific quirks so your Python code stays focused on business logic &#8211; not auth plumbing.<\/pee><!-- [et_pb_line_break_holder] -->      <a class=\"iao-cta-btn\" href=\"https:\/\/dashboard.unipile.com\/signup\/\" target=\"_blank\" rel=\"noopener\"><!-- [et_pb_line_break_holder] -->        <svg viewBox=\"0 0 24 24\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><!-- [et_pb_line_break_holder] -->        <span>Build your OAuth flow<\/span><!-- [et_pb_line_break_holder] -->      <\/a><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] -->  function init(){<!-- [et_pb_line_break_holder] -->    var container = document.getElementById('oauth-tabs');<!-- [et_pb_line_break_holder] -->    if (!container) return;<!-- [et_pb_line_break_holder] -->    var tabs = container.querySelectorAll('.iao-tab');<!-- [et_pb_line_break_holder] -->    tabs.forEach(function(tab){<!-- [et_pb_line_break_holder] -->      tab.addEventListener('click', function(){<!-- [et_pb_line_break_holder] -->        var panel = tab.getAttribute('data-panel');<!-- [et_pb_line_break_holder] -->        tabs.forEach(function(t){ t.classList.remove('active'); });<!-- [et_pb_line_break_holder] -->        tab.classList.add('active');<!-- [et_pb_line_break_holder] -->        var panels = document.querySelectorAll('#unipile-iap-oauth .iao-panel');<!-- [et_pb_line_break_holder] -->        panels.forEach(function(p){ p.classList.remove('active'); });<!-- [et_pb_line_break_holder] -->        var target = document.getElementById('panel-' + panel);<!-- [et_pb_line_break_holder] -->        if (target) target.classList.add('active');<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  if (document.readyState === 'loading') {<!-- [et_pb_line_break_holder] -->    document.addEventListener('DOMContentLoaded', init);<!-- [et_pb_line_break_holder] -->  } else { init(); }<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-iap-providers,<!-- [et_pb_line_break_holder] -->#unipile-iap-providers *,<!-- [et_pb_line_break_holder] -->#unipile-iap-providers *::before,<!-- [et_pb_line_break_holder] -->#unipile-iap-providers *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers {<!-- [et_pb_line_break_holder] -->  background: #f4f5f7 !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  width: 100% !important;<!-- [et_pb_line_break_holder] -->  overflow-x: hidden !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-wrap {<!-- [et_pb_line_break_holder] -->  max-width: 1100px !important;<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-badge {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(221, 223, 76, 0.18) !important;<!-- [et_pb_line_break_holder] -->  color: #8a8c2e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 18px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-badge-dot {<!-- [et_pb_line_break_holder] -->  width: 7px !important;<!-- [et_pb_line_break_holder] -->  height: 7px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 35px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.2 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-lead {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/* Provider cards grid *\/<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-cards {<!-- [et_pb_line_break_holder] -->  display: grid !important;<!-- [et_pb_line_break_holder] -->  grid-template-columns: repeat(3, 1fr) !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 32px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 24px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-card-header {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 12px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->  padding-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid #f0f2f5 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-card-header img {<!-- [et_pb_line_break_holder] -->  width: 28px !important;<!-- [et_pb_line_break_holder] -->  height: 28px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-card-name {<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-card-server {<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  color: #64748b !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-card-row {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 8px !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-card-label {<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  min-width: 70px !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-card-val {<!-- [et_pb_line_break_holder] -->  color: #4a5568 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.4 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-tag-ok {<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.12) !important;<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  padding: 2px 8px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 4px !important;<!-- [et_pb_line_break_holder] -->  font-size: 11px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-tag-warn {<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->  background: rgba(245, 158, 11, 0.12) !important;<!-- [et_pb_line_break_holder] -->  color: #d97706 !important;<!-- [et_pb_line_break_holder] -->  padding: 2px 8px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 4px !important;<!-- [et_pb_line_break_holder] -->  font-size: 11px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-tag-req {<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59, 130, 246, 0.10) !important;<!-- [et_pb_line_break_holder] -->  color: #2563eb !important;<!-- [et_pb_line_break_holder] -->  padding: 2px 8px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 4px !important;<!-- [et_pb_line_break_holder] -->  font-size: 11px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-card-note {<!-- [et_pb_line_break_holder] -->  margin-top: 14px !important;<!-- [et_pb_line_break_holder] -->  padding-top: 12px !important;<!-- [et_pb_line_break_holder] -->  border-top: 1px solid #f0f2f5 !important;<!-- [et_pb_line_break_holder] -->  font-size: 12.5px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.6 !important;<!-- [et_pb_line_break_holder] -->  color: #64748b !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-card-note a {<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  text-decoration: underline !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/* Wide cards for Yahoo\/iCloud *\/<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-cards-2 {<!-- [et_pb_line_break_holder] -->  display: grid !important;<!-- [et_pb_line_break_holder] -->  grid-template-columns: 1fr 1fr !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 32px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-cta-strip {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 24px 28px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: space-between !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-cta-text {<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.6 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-cta-text strong {<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-cta-text a {<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  text-decoration: underline !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-cta-btn {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 22px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  border: 2px solid #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->  transition: transform 0.25s ease !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-cta-btn:hover {<!-- [et_pb_line_break_holder] -->  transform: translateY(-5px) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-providers .iap-cta-btn svg {<!-- [et_pb_line_break_holder] -->  width: 15px !important;<!-- [et_pb_line_break_holder] -->  height: 15px !important;<!-- [et_pb_line_break_holder] -->  stroke: currentColor !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2.5 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-providers .iap-wrap {<!-- [et_pb_line_break_holder] -->    padding: 50px 20px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-providers h2 {<!-- [et_pb_line_break_holder] -->    font-size: 28px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-providers .iap-cards {<!-- [et_pb_line_break_holder] -->    grid-template-columns: 1fr 1fr !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-providers .iap-wrap {<!-- [et_pb_line_break_holder] -->    padding: 40px 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-providers h2 {<!-- [et_pb_line_break_holder] -->    font-size: 24px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-providers .iap-lead {<!-- [et_pb_line_break_holder] -->    font-size: 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-providers .iap-cards {<!-- [et_pb_line_break_holder] -->    grid-template-columns: 1fr !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-providers .iap-cards-2 {<!-- [et_pb_line_break_holder] -->    grid-template-columns: 1fr !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-providers .iap-cta-strip {<!-- [et_pb_line_break_holder] -->    flex-direction: column !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-providers .iap-cta-btn {<!-- [et_pb_line_break_holder] -->    width: 100% !important;<!-- [et_pb_line_break_holder] -->    justify-content: center !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-iap-providers\"><!-- [et_pb_line_break_holder] -->  <div class=\"iap-wrap\"><!-- [et_pb_line_break_holder] -->    <span id=\"iap-providers\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->    <div class=\"iap-badge\"><span class=\"iap-badge-dot\"><\/span><span>Provider Matrix<\/span><\/div><!-- [et_pb_line_break_holder] -->    <h2>Multi-Provider Reality Check<\/h2><!-- [et_pb_line_break_holder] -->    <pee class=\"iap-lead\">Every provider has its own authentication quirks, server addresses, and rate limits. Here is what your Python IMAP client needs to handle for each. For server hostnames and TLS port details, see our dedicated <a href=\"https:\/\/www.unipile.com\/imap-server-connection-guide\/\" style=\"color:#2aaa7e;text-decoration:underline;\">IMAP server connection guide<\/a>.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iap-cards\"><!-- [et_pb_line_break_holder] -->      <div class=\"iap-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-header\"><!-- [et_pb_line_break_holder] -->          <img decoding=\"async\" src=\"https:\/\/www.unipile.com\/wp-content\/uploads\/2024\/02\/gmail-3.svg\" alt=\"Gmail logo\"><!-- [et_pb_line_break_holder] -->          <div><!-- [et_pb_line_break_holder] -->            <div class=\"iap-card-name\">Gmail<\/div><!-- [et_pb_line_break_holder] -->            <div class=\"iap-card-server\">imap.gmail.com:993<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-row\"><span class=\"iap-card-label\">Auth:<\/span><span class=\"iap-card-val\"><span class=\"iap-tag-req\">XOAUTH2 required<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-row\"><span class=\"iap-card-label\">Scope:<\/span><span class=\"iap-card-val\"><code>https:\/\/mail.google.com\/<\/code><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-row\"><span class=\"iap-card-label\">IDLE:<\/span><span class=\"iap-card-val\"><span class=\"iap-tag-ok\">Supported<\/span> (29 min max)<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-row\"><span class=\"iap-card-label\">Quirks:<\/span><span class=\"iap-card-val\">Gmail labels map to IMAP folders. Enable IMAP in settings.<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-note\">Requires Google Cloud project with OAuth 2.0 client. See <a href=\"https:\/\/www.unipile.com\/gmail-api-scopes-guide\/\">Gmail scopes guide<\/a> for scope details.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"iap-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-header\"><!-- [et_pb_line_break_holder] -->          <img decoding=\"async\" src=\"https:\/\/www.unipile.com\/wp-content\/uploads\/2024\/02\/outlook-2.svg\" alt=\"Outlook logo\"><!-- [et_pb_line_break_holder] -->          <div><!-- [et_pb_line_break_holder] -->            <div class=\"iap-card-name\">Outlook \/ Microsoft 365<\/div><!-- [et_pb_line_break_holder] -->            <div class=\"iap-card-server\">outlook.office365.com:993<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-row\"><span class=\"iap-card-label\">Auth:<\/span><span class=\"iap-card-val\"><span class=\"iap-tag-req\">XOAUTH2 required<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-row\"><span class=\"iap-card-label\">Scope:<\/span><span class=\"iap-card-val\"><code>IMAP.AccessAsUser.All<\/code><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-row\"><span class=\"iap-card-label\">IDLE:<\/span><span class=\"iap-card-val\"><span class=\"iap-tag-ok\">Supported<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-row\"><span class=\"iap-card-label\">Quirks:<\/span><span class=\"iap-card-val\">Basic Auth disabled Sept 2024. Azure AD app + admin consent required for M365.<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-note\">For REST-based alternative to IMAP, see <a href=\"https:\/\/www.unipile.com\/microsoft-graph-oauth-email\/\">Microsoft Graph OAuth email guide<\/a>.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"iap-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-header\"><!-- [et_pb_line_break_holder] -->          <img decoding=\"async\" src=\"https:\/\/www.unipile.com\/wp-content\/uploads\/2024\/02\/imap-1.svg\" alt=\"IMAP logo\"><!-- [et_pb_line_break_holder] -->          <div><!-- [et_pb_line_break_holder] -->            <div class=\"iap-card-name\">Generic IMAP<\/div><!-- [et_pb_line_break_holder] -->            <div class=\"iap-card-server\">your-server:993<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-row\"><span class=\"iap-card-label\">Auth:<\/span><span class=\"iap-card-val\"><span class=\"iap-tag-ok\">Login\/password OK<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-row\"><span class=\"iap-card-label\">IDLE:<\/span><span class=\"iap-card-val\"><span class=\"iap-tag-warn\">Varies by server<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-row\"><span class=\"iap-card-label\">Quirks:<\/span><span class=\"iap-card-val\">Server-specific folder naming, CAPABILITIES vary, some lack IDLE.<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-row\"><span class=\"iap-card-label\">Examples:<\/span><span class=\"iap-card-val\">Fastmail, ProtonMail Bridge, Postfix\/Dovecot self-hosted<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-note\">Covers virtually any IMAP4rev1 server. See <a href=\"https:\/\/www.unipile.com\/the-developers-guide-to-imap-api-solution\/\">IMAP API guide<\/a> for full list.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iap-cards-2\"><!-- [et_pb_line_break_holder] -->      <div class=\"iap-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-header\"><!-- [et_pb_line_break_holder] -->          <div><!-- [et_pb_line_break_holder] -->            <div class=\"iap-card-name\">Yahoo Mail<\/div><!-- [et_pb_line_break_holder] -->            <div class=\"iap-card-server\">imap.mail.yahoo.com:993<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-row\"><span class=\"iap-card-label\">Auth:<\/span><span class=\"iap-card-val\"><span class=\"iap-tag-warn\">App password required<\/span> (no XOAUTH2 for third-party)<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-row\"><span class=\"iap-card-label\">IDLE:<\/span><span class=\"iap-card-val\"><span class=\"iap-tag-ok\">Supported<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-note\">Yahoo dropped XOAUTH2 support for third-party apps. Generate an app-specific password in Yahoo Account Security settings.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"iap-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-header\"><!-- [et_pb_line_break_holder] -->          <div><!-- [et_pb_line_break_holder] -->            <div class=\"iap-card-name\">iCloud Mail<\/div><!-- [et_pb_line_break_holder] -->            <div class=\"iap-card-server\">imap.mail.me.com:993<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-row\"><span class=\"iap-card-label\">Auth:<\/span><span class=\"iap-card-val\"><span class=\"iap-tag-warn\">App password required<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-row\"><span class=\"iap-card-label\">IDLE:<\/span><span class=\"iap-card-val\"><span class=\"iap-tag-ok\">Supported<\/span><\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iap-card-note\">Two-Factor Authentication must be enabled on the Apple ID. Generate an app-specific password at appleid.apple.com.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iap-cta-strip\"><!-- [et_pb_line_break_holder] -->      <pee class=\"iap-cta-text\"><strong>Supporting multiple providers means maintaining separate auth flows, server configs, and quirk workarounds.<\/strong> Unipile normalizes Gmail, Outlook, and any IMAP server into a single API. Read our <a href=\"https:\/\/www.unipile.com\/email-api-providers\/\">email API providers comparison<\/a> for context.<\/pee><!-- [et_pb_line_break_holder] -->      <a class=\"iap-cta-btn\" href=\"https:\/\/dashboard.unipile.com\/signup\/\" target=\"_blank\" rel=\"noopener\"><!-- [et_pb_line_break_holder] -->        <svg viewBox=\"0 0 24 24\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><!-- [et_pb_line_break_holder] -->        <span>Build multi-provider email<\/span><!-- [et_pb_line_break_holder] -->      <\/a><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.4&#8243; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; sticky_enabled=&#8221;0&#8243;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-iap-unipile,<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile *,<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile *::before,<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile {<!-- [et_pb_line_break_holder] -->  background: #0f2736 !important;<!-- [et_pb_line_break_holder] -->border-radius:20px;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  width: 100% !important;<!-- [et_pb_line_break_holder] -->  overflow-x: hidden !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-wrap {<!-- [et_pb_line_break_holder] -->  max-width: 1100px !important;<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-badge {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.18) !important;<!-- [et_pb_line_break_holder] -->  color: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 18px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-badge-dot {<!-- [et_pb_line_break_holder] -->  width: 7px !important;<!-- [et_pb_line_break_holder] -->  height: 7px !important;<!-- [et_pb_line_break_holder] -->  background: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 35px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #ffffff !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.2 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-lead {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important;<!-- [et_pb_line_break_holder] -->  color: rgba(255,255,255,0.8) !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 44px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-lead a {<!-- [et_pb_line_break_holder] -->  color: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  text-decoration: underline !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-compare {<!-- [et_pb_line_break_holder] -->  display: grid !important;<!-- [et_pb_line_break_holder] -->  grid-template-columns: 1fr 1fr !important;<!-- [et_pb_line_break_holder] -->  gap: 24px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-col-label {<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 14px !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-col-bad { color: rgba(255,255,255,0.4) !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-col-good { color: #3BB98B !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-code-wrap {<!-- [et_pb_line_break_holder] -->  border-radius: 14px !important;<!-- [et_pb_line_break_holder] -->  overflow: hidden !important;<!-- [et_pb_line_break_holder] -->  background: rgba(0,0,0,0.35) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-good-wrap {<!-- [et_pb_line_break_holder] -->  border-radius: 14px !important;<!-- [et_pb_line_break_holder] -->  overflow: hidden !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.08) !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid rgba(59, 185, 139, 0.25) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-editor-bar {<!-- [et_pb_line_break_holder] -->  padding: 12px 18px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid rgba(255,255,255,0.08) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-editor-bar-good {<!-- [et_pb_line_break_holder] -->  padding: 12px 18px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid rgba(59, 185, 139, 0.2) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-dot {<!-- [et_pb_line_break_holder] -->  width: 12px !important;<!-- [et_pb_line_break_holder] -->  height: 12px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-dot-r { background: #ff5f57 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-dot-y { background: #febc2e !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-dot-g { background: #28c840 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-filename {<!-- [et_pb_line_break_holder] -->  color: rgba(255,255,255,0.4) !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  margin-left: 6px !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-filename-good {<!-- [et_pb_line_break_holder] -->  color: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  margin-left: 6px !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-pre {<!-- [et_pb_line_break_holder] -->  padding: 20px 24px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12.5px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.8 !important;<!-- [et_pb_line_break_holder] -->  overflow-x: auto !important;<!-- [et_pb_line_break_holder] -->  white-space: pre-wrap !important;<!-- [et_pb_line_break_holder] -->  word-break: break-word !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-pre code {<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->  white-space: pre-wrap !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  word-break: break-word !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-pre-bad code { color: rgba(255,255,255,0.45) !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .c { color: #8b949e !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .k { color: #ff7b72 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .fn { color: #d2a8ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .s { color: #a5d6ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .n { color: #79c0ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .w { color: #e6edf3 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .w-good { color: #b2f5e0 !important; }<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-features {<!-- [et_pb_line_break_holder] -->  display: grid !important;<!-- [et_pb_line_break_holder] -->  grid-template-columns: repeat(3, 1fr) !important;<!-- [et_pb_line_break_holder] -->  gap: 16px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-feat {<!-- [et_pb_line_break_holder] -->  background: rgba(255,255,255,0.05) !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid rgba(255,255,255,0.1) !important;<!-- [et_pb_line_break_holder] -->  border-radius: 12px !important;<!-- [et_pb_line_break_holder] -->  padding: 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-feat-icon {<!-- [et_pb_line_break_holder] -->  width: 36px !important;<!-- [et_pb_line_break_holder] -->  height: 36px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.15) !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: center !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 12px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-feat-icon svg {<!-- [et_pb_line_break_holder] -->  width: 18px !important;<!-- [et_pb_line_break_holder] -->  height: 18px !important;<!-- [et_pb_line_break_holder] -->  stroke: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-feat-title {<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #ffffff !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 8px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-feat-text {<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.6 !important;<!-- [et_pb_line_break_holder] -->  color: rgba(255,255,255,0.6) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-cta-row {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 14px !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-cta-primary {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  padding: 14px 26px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  border: 2px solid #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->  transition: transform 0.25s ease !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-cta-primary:hover {<!-- [et_pb_line_break_holder] -->  transform: translateY(-5px) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-cta-primary svg {<!-- [et_pb_line_break_holder] -->  width: 16px !important;<!-- [et_pb_line_break_holder] -->  height: 16px !important;<!-- [et_pb_line_break_holder] -->  stroke: currentColor !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2.5 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-cta-secondary {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  color: rgba(255,255,255,0.85) !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 24px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  border: 2px solid rgba(255,255,255,0.25) !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->  transition: all 0.25s ease !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-unipile .ipu-cta-secondary:hover {<!-- [et_pb_line_break_holder] -->  border-color: rgba(255,255,255,0.6) !important;<!-- [et_pb_line_break_holder] -->  color: #ffffff !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-unipile .ipu-wrap {<!-- [et_pb_line_break_holder] -->    padding: 50px 20px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-unipile h2 {<!-- [et_pb_line_break_holder] -->    font-size: 28px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-unipile .ipu-compare {<!-- [et_pb_line_break_holder] -->    grid-template-columns: 1fr !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-unipile .ipu-features {<!-- [et_pb_line_break_holder] -->    grid-template-columns: 1fr 1fr !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-unipile .ipu-wrap {<!-- [et_pb_line_break_holder] -->    padding: 40px 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-unipile h2 {<!-- [et_pb_line_break_holder] -->    font-size: 24px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-unipile .ipu-lead {<!-- [et_pb_line_break_holder] -->    font-size: 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-unipile .ipu-features {<!-- [et_pb_line_break_holder] -->    grid-template-columns: 1fr !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-unipile .ipu-cta-row {<!-- [et_pb_line_break_holder] -->    flex-direction: column !important;<!-- [et_pb_line_break_holder] -->    width: 100% !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-unipile .ipu-cta-primary,<!-- [et_pb_line_break_holder] -->  #unipile-iap-unipile .ipu-cta-secondary {<!-- [et_pb_line_break_holder] -->    width: 100% !important;<!-- [et_pb_line_break_holder] -->    justify-content: center !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-unipile .ipu-pre {<!-- [et_pb_line_break_holder] -->    font-size: 12px !important;<!-- [et_pb_line_break_holder] -->    padding: 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-iap-unipile\"><!-- [et_pb_line_break_holder] -->  <div class=\"ipu-wrap\"><!-- [et_pb_line_break_holder] -->    <span id=\"iap-unipile\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->    <div class=\"ipu-badge\"><span class=\"ipu-badge-dot\"><\/span><span>Unified API Alternative<\/span><\/div><!-- [et_pb_line_break_holder] -->    <h2>When You Should Skip IMAP Entirely: Unified API Approach<\/h2><!-- [et_pb_line_break_holder] -->    <pee class=\"ipu-lead\">After walking through imaplib, IMAPClient, and XOAUTH2, one truth becomes clear: raw IMAP in Python requires hundreds of lines of boilerplate for every provider you support. Unipile is a <a href=\"https:\/\/www.unipile.com\/the-developers-guide-to-imap-api-solution\/\">unified IMAP API<\/a> that abstracts all of this into a single REST interface. You link user accounts (Gmail, Outlook, or any IMAP server) with OAuth, and Unipile handles every protocol detail on your behalf.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"ipu-compare\"><!-- [et_pb_line_break_holder] -->      <div><!-- [et_pb_line_break_holder] -->        <span class=\"ipu-col-label ipu-col-bad\">With raw imaplib (50+ lines per provider)<\/span><!-- [et_pb_line_break_holder] -->        <div class=\"ipu-code-wrap\"><!-- [et_pb_line_break_holder] -->          <div class=\"ipu-editor-bar\"><!-- [et_pb_line_break_holder] -->            <span class=\"ipu-dot ipu-dot-r\"><\/span><!-- [et_pb_line_break_holder] -->            <span class=\"ipu-dot ipu-dot-y\"><\/span><!-- [et_pb_line_break_holder] -->            <span class=\"ipu-dot ipu-dot-g\"><\/span><!-- [et_pb_line_break_holder] -->            <span class=\"ipu-filename\">raw_imap.py<\/span><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"ipu-pre ipu-pre-bad\"><code><span class=\"c\"># 1. Get OAuth token (50+ lines)<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 2. Build XOAUTH2 string<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 3. Connect + authenticate<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 4. Select folder<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 5. Search messages<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 6. Fetch raw bytes<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 7. Parse tuple data[0][1]<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 8. Decode RFC 2047 headers<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 9. Walk MIME parts<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 10. Handle attachments<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 11. Manage IDLE timeouts<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 12. Reconnect on error<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 13. Repeat for Outlook...<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 14. Repeat for IMAP servers...<\/span><\/code><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div><!-- [et_pb_line_break_holder] -->        <span class=\"ipu-col-label ipu-col-good\">With Unipile REST API (5 lines)<\/span><!-- [et_pb_line_break_holder] -->        <div class=\"ipu-good-wrap\"><!-- [et_pb_line_break_holder] -->          <div class=\"ipu-editor-bar-good\"><!-- [et_pb_line_break_holder] -->            <span class=\"ipu-dot ipu-dot-r\"><\/span><!-- [et_pb_line_break_holder] -->            <span class=\"ipu-dot ipu-dot-y\"><\/span><!-- [et_pb_line_break_holder] -->            <span class=\"ipu-dot ipu-dot-g\"><\/span><!-- [et_pb_line_break_holder] -->            <span class=\"ipu-filename-good\">unipile_email.py<\/span><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"ipu-pre\"><code><span class=\"k\">import<\/span> <span class=\"w-good\">requests<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Fetch emails from any linked account<\/span><!-- [et_pb_line_break_holder] --><span class=\"w-good\">r <\/span><span class=\"k\">=<\/span> <span class=\"w-good\">requests.<\/span><span class=\"fn\">get<\/span><span class=\"w-good\">(<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"s\">'https:\/\/api6.unipile.com\/api\/v1\/emails'<\/span><span class=\"w-good\">,<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w-good\">headers={<\/span><span class=\"s\">'X-API-KEY'<\/span><span class=\"w-good\">: api_key},<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w-good\">params={<\/span><span class=\"s\">'account_id'<\/span><span class=\"w-good\">: account_id}<\/span><!-- [et_pb_line_break_holder] --><span class=\"w-good\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w-good\">emails <\/span><span class=\"k\">=<\/span> <span class=\"w-good\">r.<\/span><span class=\"fn\">json<\/span><span class=\"w-good\">()[<\/span><span class=\"s\">'items'<\/span><span class=\"w-good\">]<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># Works for Gmail, Outlook, any IMAP<\/span><\/code><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"ipu-features\"><!-- [et_pb_line_break_holder] -->      <div class=\"ipu-feat\"><!-- [et_pb_line_break_holder] -->        <div class=\"ipu-feat-icon\"><!-- [et_pb_line_break_holder] -->          <svg viewBox=\"0 0 24 24\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\/><\/svg><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ipu-feat-title\">OAuth handled for you<\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"ipu-feat-text\">Unipile manages XOAUTH2 token acquisition, refresh, and expiry for Gmail and Outlook. No MSAL or google-auth setup needed in your code.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"ipu-feat\"><!-- [et_pb_line_break_holder] -->        <div class=\"ipu-feat-icon\"><!-- [et_pb_line_break_holder] -->          <svg viewBox=\"0 0 24 24\"><rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"\/><line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\"\/><line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\"\/><\/svg><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ipu-feat-title\">Normalized JSON responses<\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"ipu-feat-text\">No raw bytes, no tuple unpacking, no RFC 2047 decoding. Every email comes back as clean structured JSON with parsed headers, body, and attachments.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"ipu-feat\"><!-- [et_pb_line_break_holder] -->        <div class=\"ipu-feat-icon\"><!-- [et_pb_line_break_holder] -->          <svg viewBox=\"0 0 24 24\"><polyline points=\"22 12 18 12 15 21 9 3 6 12 2 12\"\/><\/svg><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ipu-feat-title\">Real-time webhooks<\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"ipu-feat-text\">Instead of managing IDLE sessions and reconnects, Unipile pushes new email events to your webhook endpoint. No polling, no socket management.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"ipu-feat\"><!-- [et_pb_line_break_holder] -->        <div class=\"ipu-feat-icon\"><!-- [et_pb_line_break_holder] -->          <svg viewBox=\"0 0 24 24\"><circle cx=\"18\" cy=\"18\" r=\"3\"\/><circle cx=\"6\" cy=\"6\" r=\"3\"\/><path d=\"M13 6h3a2 2 0 012 2v7\"\/><line x1=\"6\" y1=\"9\" x2=\"6\" y2=\"21\"\/><\/svg><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ipu-feat-title\">Multi-provider by default<\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"ipu-feat-text\">One API endpoint serves Gmail, Outlook, and any IMAP server. Add new providers by linking accounts &#8211; no code changes required on your side.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"ipu-feat\"><!-- [et_pb_line_break_holder] -->        <div class=\"ipu-feat-icon\"><!-- [et_pb_line_break_holder] -->          <svg viewBox=\"0 0 24 24\"><path d=\"M21 16V8a2 2 0 00-1-1.73l-7-4a2 2 0 00-2 0l-7 4A2 2 0 003 8v8a2 2 0 001 1.73l7 4a2 2 0 002 0l7-4A2 2 0 0021 16z\"\/><\/svg><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ipu-feat-title\">Send emails too<\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"ipu-feat-text\">Unipile covers the full email lifecycle. Read, search, move, flag, and send &#8211; all from the same API. See our <a href=\"https:\/\/www.unipile.com\/send-email-api-python\/\" style=\"color:rgba(255,255,255,0.5);text-decoration:underline;\">Python send email guide<\/a> for the sending side.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"ipu-feat\"><!-- [et_pb_line_break_holder] -->        <div class=\"ipu-feat-icon\"><!-- [et_pb_line_break_holder] -->          <svg viewBox=\"0 0 24 24\"><path d=\"M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2\"\/><circle cx=\"9\" cy=\"7\" r=\"4\"\/><path d=\"M23 21v-2a4 4 0 00-3-3.87\"\/><path d=\"M16 3.13a4 4 0 010 7.75\"\/><\/svg><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ipu-feat-title\">Per-user linked accounts<\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"ipu-feat-text\">Each of your users links their own account via OAuth. Unipile acts as an independent technical intermediary on behalf of each authenticated user &#8211; not a shared credential pool.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"ipu-cta-row\"><!-- [et_pb_line_break_holder] -->      <a class=\"ipu-cta-primary\" href=\"https:\/\/dashboard.unipile.com\/signup\/\" target=\"_blank\" rel=\"noopener\"><!-- [et_pb_line_break_holder] -->        <svg viewBox=\"0 0 24 24\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><!-- [et_pb_line_break_holder] -->        <span>Start building for free<\/span><!-- [et_pb_line_break_holder] -->      <\/a><!-- [et_pb_line_break_holder] -->      <a class=\"ipu-cta-secondary\" href=\"https:\/\/developer.unipile.com\/docs\/\" target=\"_blank\" rel=\"noopener\"><!-- [et_pb_line_break_holder] -->        <span>Read the API docs<\/span><!-- [et_pb_line_break_holder] -->      <\/a><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls,<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls *,<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls *::before,<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls {<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  width: 100% !important;<!-- [et_pb_line_break_holder] -->  overflow-x: hidden !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-wrap {<!-- [et_pb_line_break_holder] -->  max-width: 1100px !important;<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-badge {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(239, 68, 68, 0.10) !important;<!-- [et_pb_line_break_holder] -->  color: #dc2626 !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 18px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-badge-dot {<!-- [et_pb_line_break_holder] -->  width: 7px !important;<!-- [et_pb_line_break_holder] -->  height: 7px !important;<!-- [et_pb_line_break_holder] -->  background: #ef4444 !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 35px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.2 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-lead {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-grid {<!-- [et_pb_line_break_holder] -->  display: grid !important;<!-- [et_pb_line_break_holder] -->  grid-template-columns: repeat(2, 1fr) !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 32px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 24px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-card-header {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 12px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 14px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-num {<!-- [et_pb_line_break_holder] -->  width: 32px !important;<!-- [et_pb_line_break_holder] -->  height: 32px !important;<!-- [et_pb_line_break_holder] -->  min-width: 32px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(239, 68, 68, 0.10) !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: center !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #dc2626 !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-card-title {<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-card-text {<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.7 !important;<!-- [et_pb_line_break_holder] -->  color: #4a5568 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 12px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-card-text code {<!-- [et_pb_line_break_holder] -->  background: rgba(0,0,0,0.06) !important;<!-- [et_pb_line_break_holder] -->  padding: 2px 5px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 4px !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->  font-size: 12.5px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-fix {<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.07) !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  padding: 10px 14px !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.6 !important;<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-fix strong {<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #1a7a5a !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-fix code {<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.15) !important;<!-- [et_pb_line_break_holder] -->  padding: 1px 5px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 4px !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  color: #1a7a5a !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/* Alert banner *\/<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-alert {<!-- [et_pb_line_break_holder] -->  background: rgba(239, 68, 68, 0.06) !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid rgba(239, 68, 68, 0.2) !important;<!-- [et_pb_line_break_holder] -->  border-radius: 12px !important;<!-- [et_pb_line_break_holder] -->  padding: 20px 24px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  gap: 16px !important;<!-- [et_pb_line_break_holder] -->  align-items: flex-start !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 32px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-alert-icon {<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  margin-top: 2px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-alert-icon svg {<!-- [et_pb_line_break_holder] -->  width: 22px !important;<!-- [et_pb_line_break_holder] -->  height: 22px !important;<!-- [et_pb_line_break_holder] -->  stroke: #ef4444 !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-alert-body {}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-alert-title {<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 6px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-alert-text {<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.7 !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-alert-text strong {<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-cta-strip {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 24px 28px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: space-between !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-cta-text {<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.6 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-cta-text strong {<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-cta-btn {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 22px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  border: 2px solid #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->  transition: transform 0.25s ease !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-cta-btn:hover {<!-- [et_pb_line_break_holder] -->  transform: translateY(-5px) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-pitfalls .ipp-cta-btn svg {<!-- [et_pb_line_break_holder] -->  width: 15px !important;<!-- [et_pb_line_break_holder] -->  height: 15px !important;<!-- [et_pb_line_break_holder] -->  stroke: currentColor !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2.5 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-pitfalls .ipp-wrap {<!-- [et_pb_line_break_holder] -->    padding: 50px 20px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-pitfalls h2 {<!-- [et_pb_line_break_holder] -->    font-size: 28px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-pitfalls .ipp-grid {<!-- [et_pb_line_break_holder] -->    grid-template-columns: 1fr !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-pitfalls .ipp-wrap {<!-- [et_pb_line_break_holder] -->    padding: 40px 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-pitfalls h2 {<!-- [et_pb_line_break_holder] -->    font-size: 24px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-pitfalls .ipp-lead {<!-- [et_pb_line_break_holder] -->    font-size: 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-pitfalls .ipp-alert {<!-- [et_pb_line_break_holder] -->    flex-direction: column !important;<!-- [et_pb_line_break_holder] -->    gap: 10px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-pitfalls .ipp-cta-strip {<!-- [et_pb_line_break_holder] -->    flex-direction: column !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-pitfalls .ipp-cta-btn {<!-- [et_pb_line_break_holder] -->    width: 100% !important;<!-- [et_pb_line_break_holder] -->    justify-content: center !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-iap-pitfalls\"><!-- [et_pb_line_break_holder] -->  <div class=\"ipp-wrap\"><!-- [et_pb_line_break_holder] -->    <span id=\"iap-pitfalls\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->    <div class=\"ipp-badge\"><span class=\"ipp-badge-dot\"><\/span><span>Production Pitfalls<\/span><\/div><!-- [et_pb_line_break_holder] -->    <h2>Common Pitfalls in Production<\/h2><!-- [et_pb_line_break_holder] -->    <pee class=\"ipp-lead\">After getting a Python IMAP client working locally, production reveals edge cases that can cause silent data loss, connection drops, or broken character encoding. Here are the most common issues and how to fix them.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"ipp-alert\"><!-- [et_pb_line_break_holder] -->      <div class=\"ipp-alert-icon\"><svg viewBox=\"0 0 24 24\"><path d=\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->      <div class=\"ipp-alert-body\"><!-- [et_pb_line_break_holder] -->        <div class=\"ipp-alert-title\">2026 Breaking Change: Microsoft Basic Auth IMAP End-of-Life<\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"ipp-alert-text\">Microsoft completed the removal of Basic Authentication for IMAP on all Microsoft 365 tenants in <strong>September 2024<\/strong>. Any Python code using <code>mail.login(user, password)<\/code> against <code>outlook.office365.com<\/code> will now receive <code>AUTHENTICATE failed<\/code>. Migration to XOAUTH2 (Section 5) is mandatory for all Microsoft 365 \/ Outlook IMAP integrations. Exchange on-premises deployments may still support Basic Auth depending on server configuration.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"ipp-grid\"><!-- [et_pb_line_break_holder] -->      <div class=\"ipp-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"ipp-card-header\"><!-- [et_pb_line_break_holder] -->          <div class=\"ipp-num\">01<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"ipp-card-title\">IMAP IDLE timeout (29 minutes on Gmail)<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"ipp-card-text\">Gmail silently terminates IDLE connections after approximately 29 minutes. If your code does not renew the IDLE session, new messages stop arriving without any exception being raised.<\/pee><!-- [et_pb_line_break_holder] -->        <div class=\"ipp-fix\"><strong>Fix:<\/strong> Set a timer to <code>idle_done()<\/code> every 25 minutes, then immediately call <code>idle()<\/code> again. Use <code>select_folder('INBOX', readonly=False)<\/code> to recheck message count on reconnect.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"ipp-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"ipp-card-header\"><!-- [et_pb_line_break_holder] -->          <div class=\"ipp-num\">02<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"ipp-card-title\">RFC 2047 charset decoding errors<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"ipp-card-text\">Email headers like Subject and From use RFC 2047 encoding (<code>=?UTF-8?B?...?=<\/code>). Calling <code>str(msg['Subject'])<\/code> directly on a bytes value returns garbage or raises <code>UnicodeDecodeError<\/code>.<\/pee><!-- [et_pb_line_break_holder] -->        <div class=\"ipp-fix\"><strong>Fix:<\/strong> Always use <code>email.header.decode_header()<\/code> and handle each part&#8217;s encoding explicitly. Pass <code>errors='replace'<\/code> to <code>.decode()<\/code> to avoid crashes on malformed headers.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"ipp-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"ipp-card-header\"><!-- [et_pb_line_break_holder] -->          <div class=\"ipp-num\">03<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"ipp-card-title\">Attachment parsing from multipart messages<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"ipp-card-text\">Attachments live in nested MIME parts. Calling <code>get_payload()<\/code> on a multipart message returns a list of parts, not the content. Inline images are <code>Content-Disposition: inline<\/code> and have a <code>Content-ID<\/code>.<\/pee><!-- [et_pb_line_break_holder] -->        <div class=\"ipp-fix\"><strong>Fix:<\/strong> Walk all parts with <code>msg.walk()<\/code>, check <code>get_content_disposition()<\/code> for <code>attachment<\/code>, and call <code>get_payload(decode=True)<\/code> on attachment parts to get decoded bytes.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"ipp-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"ipp-card-header\"><!-- [et_pb_line_break_holder] -->          <div class=\"ipp-num\">04<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"ipp-card-title\">Connection pooling and thread safety<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"ipp-card-text\"><code>imaplib.IMAP4_SSL<\/code> instances are NOT thread-safe. Using one connection across multiple threads causes garbled responses. Creating a new connection per request is expensive and rate-limited.<\/pee><!-- [et_pb_line_break_holder] -->        <div class=\"ipp-fix\"><strong>Fix:<\/strong> Use a connection pool (one connection per worker thread) or an async library like <code>aioimaplib<\/code>. Always implement exponential backoff for reconnect attempts after <code>IMAP4.abort<\/code> exceptions.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"ipp-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"ipp-card-header\"><!-- [et_pb_line_break_holder] -->          <div class=\"ipp-num\">05<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"ipp-card-title\">Rate limits and quota exhaustion<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"ipp-card-text\">Gmail limits IMAP connections to 15 concurrent connections per account and enforces bandwidth quotas (2,500 MB\/day via IMAP). Fetching entire RFC822 bodies at scale will hit these limits quickly.<\/pee><!-- [et_pb_line_break_holder] -->        <div class=\"ipp-fix\"><strong>Fix:<\/strong> Fetch headers first (<code>RFC822.HEADER<\/code>), then fetch bodies selectively. Use <code>BODY.PEEK[]<\/code> instead of <code>RFC822<\/code> to avoid auto-marking as read. Implement exponential backoff on <code>[OVERQUOTA]<\/code> responses.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"ipp-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"ipp-card-header\"><!-- [et_pb_line_break_holder] -->          <div class=\"ipp-num\">06<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"ipp-card-title\">OAuth token expiry mid-session<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"ipp-card-text\">Access tokens from Google and Microsoft expire after 3,600 seconds (1 hour). If your IMAP session is still open when the token expires, the next command after expiry will silently fail or return <code>NO<\/code>.<\/pee><!-- [et_pb_line_break_holder] -->        <div class=\"ipp-fix\"><strong>Fix:<\/strong> Track the <code>expires_at<\/code> timestamp. Before each batch operation, check if the token is within 5 minutes of expiry and refresh proactively. Store refresh tokens securely. This is exactly what <a href=\"https:\/\/www.unipile.com\/the-developers-guide-to-imap-api-solution\/\" style=\"color:#1a7a5a;\">Unipile handles automatically<\/a>.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"ipp-cta-strip\"><!-- [et_pb_line_break_holder] -->      <pee class=\"ipp-cta-text\"><strong>Avoiding all 6 pitfalls requires significant infrastructure.<\/strong> Unipile handles IDLE reconnects, token refresh, rate limiting, and multi-provider normalization &#8211; so you can focus on your product logic. Part of our full <a href=\"https:\/\/www.unipile.com\/email-api-guide\/\" style=\"color:#2aaa7e;text-decoration:underline;\">email API guide<\/a>.<\/pee><!-- [et_pb_line_break_holder] -->      <a class=\"ipp-cta-btn\" href=\"https:\/\/dashboard.unipile.com\/signup\/\" target=\"_blank\" rel=\"noopener\"><!-- [et_pb_line_break_holder] -->        <svg viewBox=\"0 0 24 24\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><!-- [et_pb_line_break_holder] -->        <span>Build without the pitfalls<\/span><!-- [et_pb_line_break_holder] -->      <\/a><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<script type=\"application\/ld+json\"><!-- [et_pb_line_break_holder] -->{<!-- [et_pb_line_break_holder] -->  \"@context\": \"https:\/\/schema.org\",<!-- [et_pb_line_break_holder] -->  \"@type\": \"FAQPage\",<!-- [et_pb_line_break_holder] -->  \"mainEntity\": [<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"What is the best Python IMAP library?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"For simple scripts, imaplib from the standard library is sufficient with zero dependencies. For production use, IMAPClient provides a cleaner API with structured responses and built-in IDLE support. For async workloads at scale, aioimaplib integrates with asyncio. If you need multi-provider support (Gmail, Outlook, and custom IMAP servers) with OAuth handled automatically, a unified API like Unipile removes most of the IMAP complexity.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"Can imaplib read Gmail emails?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"Yes, imaplib can connect to Gmail IMAP at imap.gmail.com port 993. However, Gmail no longer accepts plain username\/password login. You must use OAuth XOAUTH2 authentication with an access token obtained from the Google OAuth 2.0 flow using the https:\/\/mail.google.com\/ scope. App passwords (generated in Google Account settings) still work for personal accounts with 2FA enabled, but OAuth is required for applications.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"What is XOAUTH2 in Python?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"XOAUTH2 is a SASL (Simple Authentication and Security Layer) mechanism used to authenticate IMAP connections with an OAuth 2.0 Bearer token instead of a password. In Python, you build a base64-encoded string in the format: user={email}\\\\x01auth=Bearer {token}\\\\x01\\\\x01, then pass it to imaplib.IMAP4_SSL.authenticate('XOAUTH2', callback). This replaces the deprecated Basic Auth login for Gmail and Microsoft 365 IMAP connections.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"How do I use OAuth with imaplib?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"To use OAuth with imaplib: 1) Obtain an access token from the provider (Google OAuth 2.0 or Microsoft MSAL). 2) Build the XOAUTH2 string: base64(f'user={email}\\\\x01auth=Bearer {token}\\\\x01\\\\x01'). 3) Call mail.authenticate('XOAUTH2', lambda x: auth_string). For Gmail, use the google-auth library. For Outlook\/Microsoft 365, use the msal Python library. Both require registering an OAuth application in Google Cloud or Azure AD respectively.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"imaplib vs IMAPClient - which one should I use?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"Use imaplib when you have no external dependencies allowed or only need a simple, one-off script. Use IMAPClient for production code: it returns structured dictionaries instead of raw byte tuples, uses UIDs by default, provides cleaner search\/fetch\/move methods, and includes built-in IDLE support. Both libraries require you to handle OAuth token management yourself. Neither is async - for asyncio-based pipelines, consider aioimaplib.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"How do I read Outlook emails with Python IMAP?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"To read Outlook emails with Python IMAP: connect to outlook.office365.com on port 993 using imaplib.IMAP4_SSL. Since September 2024, Basic Auth is disabled for Microsoft 365 - you must use XOAUTH2. Register an Azure AD application, request the IMAP.AccessAsUser.All permission, obtain an access token using the MSAL Python library, then authenticate with mail.authenticate('XOAUTH2', ...). For personal Outlook.com accounts, the same OAuth flow applies.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"Does IMAP work with Microsoft 365?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"Yes, Microsoft 365 supports IMAP at outlook.office365.com:993. However, since September 2024, Microsoft has fully disabled Basic Authentication for IMAP on Microsoft 365. You must use OAuth 2.0 with the XOAUTH2 SASL mechanism. Your Azure AD administrator may also need to enable IMAP access in the Exchange admin center for specific users or organization-wide. An alternative is to use the Microsoft Graph API (REST) which avoids IMAP entirely.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"How do I handle IMAP IDLE in Python?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"IMAP IDLE allows the server to push notifications when new messages arrive. With IMAPClient: call server.idle() to enter IDLE mode, then server.idle_check(timeout=60) to wait for events. Gmail silently disconnects IDLE connections after approximately 29 minutes, so you must renew: call server.idle_done() every 25 minutes, then server.idle() again. With raw imaplib, IDLE requires manual socket-level management using the .send() and .readline() methods, which is considerably more complex.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"Can I use async IMAP in Python?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"Yes. The aioimaplib library provides an asyncio-compatible IMAP4 client for Python. It supports standard IMAP commands and IDLE in an async context, making it suitable for high-concurrency pipelines where you manage many mailboxes simultaneously. However, aioimaplib has a smaller community than imaplib or IMAPClient, and OAuth support still requires manual XOAUTH2 implementation. For teams prioritizing developer speed, a REST-based unified API handles async delivery via webhooks.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"How does Unipile compare to imaplib for email integration?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"imaplib is a low-level Python standard library that requires you to write 50-200 lines of code per provider: OAuth token management, XOAUTH2 string construction, raw bytes parsing, RFC 2047 header decoding, MIME body walking, IDLE reconnect loops, and error handling. Unipile is a unified REST API that abstracts all of that into a single HTTP call. You get normalized JSON responses, built-in OAuth for Gmail and Outlook, webhook delivery for new emails, and multi-provider support without any protocol-level code. The trade-off: Unipile is a managed service (with its own pricing), while imaplib is free but requires significant infrastructure investment.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  ]<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/script><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-iap-faq,<!-- [et_pb_line_break_holder] -->#unipile-iap-faq *,<!-- [et_pb_line_break_holder] -->#unipile-iap-faq *::before,<!-- [et_pb_line_break_holder] -->#unipile-iap-faq *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq {<!-- [et_pb_line_break_holder] -->  background: #f4f5f7 !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  width: 100% !important;<!-- [et_pb_line_break_holder] -->  overflow-x: hidden !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-wrap {<!-- [et_pb_line_break_holder] -->  max-width: 900px !important;<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 24px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-badge {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.12) !important;<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 18px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-badge-dot {<!-- [et_pb_line_break_holder] -->  width: 7px !important;<!-- [et_pb_line_break_holder] -->  height: 7px !important;<!-- [et_pb_line_break_holder] -->  background: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 35px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.2 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 12px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-intro {<!-- [et_pb_line_break_holder] -->  font-size: 16px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-list {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  flex-direction: column !important;<!-- [et_pb_line_break_holder] -->  gap: 12px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 40px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-item {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  overflow: hidden !important;<!-- [et_pb_line_break_holder] -->  transition: border-color 0.2s ease !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-item.active {<!-- [et_pb_line_break_holder] -->  border-color: #3BB98B !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-header {<!-- [et_pb_line_break_holder] -->  padding: 20px 24px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 16px !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-num {<!-- [et_pb_line_break_holder] -->  width: 38px !important;<!-- [et_pb_line_break_holder] -->  height: 38px !important;<!-- [et_pb_line_break_holder] -->  min-width: 38px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 10px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.10) !important;<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: center !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  transition: all 0.2s ease !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-item.active .iaf-num {<!-- [et_pb_line_break_holder] -->  background: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  color: #ffffff !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-question {<!-- [et_pb_line_break_holder] -->  flex: 1 !important;<!-- [et_pb_line_break_holder] -->  font-size: 16px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.4 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-toggle {<!-- [et_pb_line_break_holder] -->  width: 22px !important;<!-- [et_pb_line_break_holder] -->  height: 22px !important;<!-- [et_pb_line_break_holder] -->  min-width: 22px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 6px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59, 185, 139, 0.08) !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: center !important;<!-- [et_pb_line_break_holder] -->  transition: all 0.2s ease !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-item.active .iaf-toggle {<!-- [et_pb_line_break_holder] -->  background: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  transform: rotate(45deg) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-toggle svg {<!-- [et_pb_line_break_holder] -->  width: 14px !important;<!-- [et_pb_line_break_holder] -->  height: 14px !important;<!-- [et_pb_line_break_holder] -->  stroke: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2.5 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-item.active .iaf-toggle svg {<!-- [et_pb_line_break_holder] -->  stroke: #ffffff !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-body {<!-- [et_pb_line_break_holder] -->  max-height: 0 !important;<!-- [et_pb_line_break_holder] -->  overflow: hidden !important;<!-- [et_pb_line_break_holder] -->  transition: max-height 0.35s ease !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-item.open .iaf-body {<!-- [et_pb_line_break_holder] -->  max-height: 800px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-answer {<!-- [et_pb_line_break_holder] -->  padding: 0 28px 28px 76px !important;<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.78 !important;<!-- [et_pb_line_break_holder] -->  color: #4a5568 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-answer strong {<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-answer a {<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  text-decoration: underline !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-answer code {<!-- [et_pb_line_break_holder] -->  background: rgba(0,0,0,0.06) !important;<!-- [et_pb_line_break_holder] -->  padding: 2px 5px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 4px !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->  font-size: 12.5px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/* CTA bar *\/<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-cta-bar {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 24px 28px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: space-between !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-cta-text {<!-- [et_pb_line_break_holder] -->  font-size: 15.5px !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.6 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-cta-text strong {<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-cta-btn {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 22px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  border: 2px solid #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->  transition: transform 0.3s ease !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-cta-btn:hover {<!-- [et_pb_line_break_holder] -->  transform: translateY(-3px) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-iap-faq .iaf-cta-btn svg {<!-- [et_pb_line_break_holder] -->  width: 15px !important;<!-- [et_pb_line_break_holder] -->  height: 15px !important;<!-- [et_pb_line_break_holder] -->  stroke: currentColor !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2.5 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-faq .iaf-wrap {<!-- [et_pb_line_break_holder] -->    padding: 50px 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-faq h2 {<!-- [et_pb_line_break_holder] -->    font-size: 28px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-faq .iaf-answer {<!-- [et_pb_line_break_holder] -->    padding: 0 16px 20px 16px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-iap-faq h2 {<!-- [et_pb_line_break_holder] -->    font-size: 26px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-faq .iaf-cta-bar {<!-- [et_pb_line_break_holder] -->    flex-direction: column !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-iap-faq .iaf-cta-btn {<!-- [et_pb_line_break_holder] -->    width: 100% !important;<!-- [et_pb_line_break_holder] -->    justify-content: center !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-iap-faq\"><!-- [et_pb_line_break_holder] -->  <div class=\"iaf-wrap\"><!-- [et_pb_line_break_holder] -->    <span id=\"iap-faq\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->    <div class=\"iaf-badge\"><span class=\"iaf-badge-dot\"><\/span><span>FAQ<\/span><\/div><!-- [et_pb_line_break_holder] -->    <h2>Frequently Asked Questions<\/h2><!-- [et_pb_line_break_holder] -->    <pee class=\"iaf-intro\">Common questions about Python IMAP clients, imaplib, IMAPClient, XOAUTH2 authentication, and when to use a unified email API instead.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iaf-list\" id=\"iap-faq-list\"><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"iaf-item\"><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-header\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-num\">01<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-question\">What is the best Python IMAP library?<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-body\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-answer\">For simple scripts, <strong>imaplib<\/strong> from the standard library is sufficient with zero dependencies. For production use, <strong>IMAPClient<\/strong> provides a cleaner API with structured responses and built-in IDLE support. For async workloads at scale, <strong>aioimaplib<\/strong> integrates with asyncio. If you need multi-provider support (Gmail, Outlook, and custom IMAP servers) with OAuth handled automatically, a unified <a href=\"https:\/\/www.unipile.com\/the-developers-guide-to-imap-api-solution\/\">IMAP API<\/a> like Unipile removes most of the complexity.<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"iaf-item\"><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-header\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-num\">02<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-question\">Can imaplib read Gmail emails in Python?<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-body\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-answer\">Yes. Connect to <code>imap.gmail.com<\/code> on port 993 using <code>imaplib.IMAP4_SSL<\/code>. However, Gmail no longer accepts plain username\/password login for third-party apps. You must use <strong>OAuth XOAUTH2<\/strong> authentication with an access token obtained from Google using the <code>https:\/\/mail.google.com\/<\/code> scope. See our <a href=\"https:\/\/www.unipile.com\/gmail-api-scopes-guide\/\">Gmail API scopes guide<\/a> for the full scope breakdown. App passwords still work for personal accounts with 2-step verification enabled, but OAuth is required for applications.<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"iaf-item\"><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-header\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-num\">03<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-question\">What is XOAUTH2 in Python?<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-body\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-answer\">XOAUTH2 is a SASL (Simple Authentication and Security Layer) mechanism used to authenticate IMAP connections with an OAuth 2.0 Bearer token instead of a password. In Python, you encode the string <code>user={email}\\x01auth=Bearer {token}\\x01\\x01<\/code> in base64, then pass it to <code>imaplib.IMAP4_SSL.authenticate('XOAUTH2', callback)<\/code>. This replaces the deprecated Basic Auth login for Gmail and Microsoft 365. Full implementation examples are in Section 5 of this guide. See also our <a href=\"https:\/\/www.unipile.com\/oauth-email-api\/\">OAuth email API guide<\/a>.<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"iaf-item\"><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-header\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-num\">04<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-question\">How do I use OAuth with imaplib?<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-body\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-answer\">To use OAuth with imaplib: <strong>1)<\/strong> Obtain an access token from the provider (Google OAuth 2.0 or Microsoft MSAL). <strong>2)<\/strong> Build the XOAUTH2 string: <code>base64(f'user={email}\\x01auth=Bearer {token}\\x01\\x01')<\/code>. <strong>3)<\/strong> Call <code>mail.authenticate('XOAUTH2', lambda x: auth_string)<\/code>. For Gmail, use the <code>google-auth<\/code> library to manage token refresh. For Outlook\/Microsoft 365, use the <code>msal<\/code> Python library. Both require registering an OAuth application in Google Cloud Console or Azure AD. The full imap python oauth code is in Section 5 above.<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"iaf-item\"><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-header\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-num\">05<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-question\">imaplib vs IMAPClient &#8211; which one should I use?<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-body\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-answer\">Use <strong>imaplib<\/strong> when you need zero external dependencies or only a simple one-off script. Use <strong>IMAPClient<\/strong> for production code: it returns structured dictionaries instead of raw byte tuples, uses UIDs by default, provides cleaner <code>search()<\/code>\/<code>fetch()<\/code>\/<code>move()<\/code> methods, and includes built-in IDLE support. Both require you to handle OAuth token management yourself. Neither is async &#8211; for asyncio-based pipelines, consider <code>aioimaplib<\/code>. Install IMAPClient with <code>pip install imapclient<\/code>.<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"iaf-item\"><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-header\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-num\">06<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-question\">How do I read Outlook emails with Python IMAP?<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-body\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-answer\">Connect to <code>outlook.office365.com<\/code> on port 993 using <code>imaplib.IMAP4_SSL<\/code>. Since September 2024, Basic Auth is disabled for Microsoft 365 &#8211; you must use XOAUTH2. Register an Azure AD application, request the <code>IMAP.AccessAsUser.All<\/code> permission, obtain an access token using the <code>msal<\/code> Python library, then authenticate with <code>mail.authenticate('XOAUTH2', ...)<\/code>. For personal Outlook.com accounts, the same OAuth flow applies. For server details and TLS configuration, see our <a href=\"https:\/\/www.unipile.com\/imap-server-connection-guide\/\">IMAP server connection guide<\/a>.<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"iaf-item\"><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-header\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-num\">07<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-question\">Does IMAP work with Microsoft 365?<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-body\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-answer\">Yes, Microsoft 365 supports IMAP at <code>outlook.office365.com:993<\/code>. However, since September 2024, Microsoft has fully disabled Basic Authentication for IMAP on Microsoft 365 tenants. You must use OAuth 2.0 with the XOAUTH2 SASL mechanism. Your Azure AD administrator may also need to enable IMAP access in the Exchange admin center. An alternative is to use the <a href=\"https:\/\/www.unipile.com\/microsoft-graph-oauth-email\/\">Microsoft Graph API<\/a> (REST) which avoids IMAP entirely and provides richer metadata.<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"iaf-item\"><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-header\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-num\">08<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-question\">How do I handle IMAP IDLE in Python?<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-body\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-answer\">IMAP IDLE lets the server push notifications when new messages arrive. With IMAPClient: call <code>server.idle()<\/code> to enter IDLE mode, then <code>server.idle_check(timeout=60)<\/code> to wait for events. <strong>Gmail silently disconnects after ~29 minutes<\/strong>, so you must renew: call <code>server.idle_done()<\/code> every 25 minutes, then <code>server.idle()<\/code> again. With raw imaplib, IDLE requires manual socket-level management &#8211; considerably more complex. For production real-time email, a webhook-based approach (as Unipile provides) is more reliable than maintaining IDLE sessions.<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"iaf-item\"><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-header\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-num\">09<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-question\">Can I use async IMAP in Python?<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-body\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-answer\">Yes. The <code>aioimaplib<\/code> library provides an asyncio-compatible IMAP4 client for Python. It supports standard IMAP commands and IDLE in an async context, making it suitable for high-concurrency pipelines where you manage many mailboxes simultaneously. However, <code>aioimaplib<\/code> has a smaller community than imaplib or IMAPClient, and OAuth support still requires manual XOAUTH2 implementation. For teams prioritizing developer speed over fine-grained control, a REST-based unified API delivers real-time email via webhooks without async socket management.<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"iaf-item\"><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-header\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-num\">10<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-question\">How does Unipile compare to imaplib for email integration?<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"iaf-body\"><!-- [et_pb_line_break_holder] -->          <div class=\"iaf-answer\"><strong>imaplib<\/strong> is a low-level Python standard library requiring 50-200 lines per provider: OAuth token management, XOAUTH2 construction, raw bytes parsing, RFC 2047 header decoding, MIME body walking, IDLE reconnect loops. <strong>Unipile<\/strong> is a unified REST API that abstracts all of that into a single HTTP call with normalized JSON responses, built-in OAuth for Gmail and Outlook, webhook delivery for new emails, and multi-provider support. The trade-off: Unipile is a managed service with its own pricing, while imaplib is free but requires significant infrastructure investment. See our full <a href=\"https:\/\/www.unipile.com\/the-developers-guide-to-imap-api-solution\/\">IMAP API guide<\/a> and <a href=\"https:\/\/www.unipile.com\/email-api-providers\/\">provider comparison<\/a>.<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"iaf-cta-bar\"><!-- [et_pb_line_break_holder] -->      <pee class=\"iaf-cta-text\"><strong>Still have questions about IMAP API in Python?<\/strong> Our team can help you choose the right approach for your use case &#8211; raw IMAP or unified API.<\/pee><!-- [et_pb_line_break_holder] -->      <span class=\"iaf-cta-btn\" onclick=\"if(window.$crisp){$crisp.push(['do','chat:open'])}\"><!-- [et_pb_line_break_holder] -->        <span>Talk to an expert<\/span><!-- [et_pb_line_break_holder] -->        <svg viewBox=\"0 0 24 24\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><!-- [et_pb_line_break_holder] -->      <\/span><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] -->  function init(){<!-- [et_pb_line_break_holder] -->    var list = document.getElementById('iap-faq-list');<!-- [et_pb_line_break_holder] -->    if (!list) return;<!-- [et_pb_line_break_holder] -->    var items = list.querySelectorAll('.iaf-item');<!-- [et_pb_line_break_holder] -->    items.forEach(function(item){<!-- [et_pb_line_break_holder] -->      var header = item.querySelector('.iaf-header');<!-- [et_pb_line_break_holder] -->      var body = item.querySelector('.iaf-body');<!-- [et_pb_line_break_holder] -->      if (!header || !body) return;<!-- [et_pb_line_break_holder] -->      header.addEventListener('click', function(){<!-- [et_pb_line_break_holder] -->        var isOpen = item.classList.contains('active');<!-- [et_pb_line_break_holder] -->        items.forEach(function(i){<!-- [et_pb_line_break_holder] -->          i.classList.remove('active', 'open');<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->        if (!isOpen) {<!-- [et_pb_line_break_holder] -->          item.classList.add('active', 'open');<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  if (document.readyState === 'loading') {<!-- [et_pb_line_break_holder] -->    document.addEventListener('DOMContentLoaded', init);<!-- [et_pb_line_break_holder] -->  } else { init(); }<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]\n","protected":false},"excerpt":{"rendered":"<p>IMAP API Python Guide IMAP API in Python: imaplib, IMAPClient &#038; OAuth XOAUTH2 Guide A complete guide to building Python IMAP email clients in 2026: from stdlib imaplib basics to IMAPClient production patterns, OAuth XOAUTH2 authentication for Gmail and Outlook, and when a unified email API saves you from the complexity entirely. Build with Unipile [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":279076,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[69],"tags":[],"post_folder":[],"class_list":["post-278969","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-api-guidelines"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>IMAP API in Python: imaplib, IMAPClient, XOAUTH2 OAuth Guide (2026) - Unipile<\/title>\n<meta name=\"description\" content=\"Complete Python IMAP guide: stdlib imaplib, IMAPClient wrapper, OAuth XOAUTH2 for Gmail &amp; Outlook, plus a unified API alternative. Code samples included.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.unipile.com\/tr\/imap-api-python\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"IMAP API in Python: imaplib, IMAPClient, XOAUTH2 OAuth Guide (2026) - Unipile\" \/>\n<meta property=\"og:description\" content=\"Complete Python IMAP guide: stdlib imaplib, IMAPClient wrapper, OAuth XOAUTH2 for Gmail &amp; Outlook, plus a unified API alternative. Code samples included.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.unipile.com\/tr\/imap-api-python\/\" \/>\n<meta property=\"og:site_name\" content=\"Unipile\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/unipilefr\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-26T08:39:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-01T12:45:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/05\/em-24-imap-api-python.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1260\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Damien Girardeau\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@UnipileAPI\" \/>\n<meta name=\"twitter:site\" content=\"@UnipileAPI\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Damien Girardeau\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/imap-api-python\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/imap-api-python\\\/\"},\"author\":{\"name\":\"Damien Girardeau\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#\\\/schema\\\/person\\\/a2ac44e22bdc27d497ce8b58716a673e\"},\"headline\":\"IMAP API in Python: imaplib, IMAPClient, XOAUTH2 OAuth Guide (2026)\",\"datePublished\":\"2026-05-26T08:39:09+00:00\",\"dateModified\":\"2026-06-01T12:45:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/imap-api-python\\\/\"},\"wordCount\":4318,\"publisher\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/imap-api-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/em-24-imap-api-python-v7.png\",\"articleSection\":[\"API Guidelines\"],\"inLanguage\":\"tr\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/imap-api-python\\\/\",\"url\":\"https:\\\/\\\/www.unipile.com\\\/imap-api-python\\\/\",\"name\":\"IMAP API in Python: imaplib, IMAPClient, XOAUTH2 OAuth Guide (2026) - Unipile\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/imap-api-python\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/imap-api-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/em-24-imap-api-python-v7.png\",\"datePublished\":\"2026-05-26T08:39:09+00:00\",\"dateModified\":\"2026-06-01T12:45:13+00:00\",\"description\":\"Complete Python IMAP guide: stdlib imaplib, IMAPClient wrapper, OAuth XOAUTH2 for Gmail & Outlook, plus a unified API alternative. Code samples included.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/imap-api-python\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.unipile.com\\\/imap-api-python\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/imap-api-python\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/em-24-imap-api-python-v7.png\",\"contentUrl\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/em-24-imap-api-python-v7.png\",\"width\":2400,\"height\":1600,\"caption\":\"Read inbox, send via SMTP, and ship to production via Unipile.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/imap-api-python\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.unipile.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"IMAP API in Python: imaplib, IMAPClient, XOAUTH2 OAuth Guide (2026)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#website\",\"url\":\"https:\\\/\\\/www.unipile.com\\\/\",\"name\":\"Unipile\",\"description\":\"Integrate Messaging &amp; Email, Connect with Ease via API\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.unipile.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#organization\",\"name\":\"Unipile\",\"url\":\"https:\\\/\\\/www.unipile.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/logo-unipile.png\",\"contentUrl\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/logo-unipile.png\",\"width\":200,\"height\":49,\"caption\":\"Unipile\"},\"image\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/unipilefr\",\"https:\\\/\\\/x.com\\\/UnipileAPI\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/unipile\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#\\\/schema\\\/person\\\/a2ac44e22bdc27d497ce8b58716a673e\",\"name\":\"Damien Girardeau\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g\",\"caption\":\"Damien Girardeau\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Python'da IMAP API: imaplib, IMAPClient, XOAUTH2 OAuth Rehberi (2026) - Unipile","description":"Python IMAP i\u00e7in Kapsaml\u0131 Rehber: stdlib imaplib, IMAPClient sarmalay\u0131c\u0131, Gmail ve Outlook i\u00e7in OAuth XOAUTH2 ve ayr\u0131ca birle\u015fik bir API alternatifi. Kod \u00f6rnekleri dahildir.","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:\/\/www.unipile.com\/tr\/imap-api-python\/","og_locale":"tr_TR","og_type":"article","og_title":"IMAP API in Python: imaplib, IMAPClient, XOAUTH2 OAuth Guide (2026) - Unipile","og_description":"Complete Python IMAP guide: stdlib imaplib, IMAPClient wrapper, OAuth XOAUTH2 for Gmail & Outlook, plus a unified API alternative. Code samples included.","og_url":"https:\/\/www.unipile.com\/tr\/imap-api-python\/","og_site_name":"Unipile","article_publisher":"https:\/\/www.facebook.com\/unipilefr","article_published_time":"2026-05-26T08:39:09+00:00","article_modified_time":"2026-06-01T12:45:13+00:00","og_image":[{"width":2400,"height":1260,"url":"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/05\/em-24-imap-api-python.png","type":"image\/png"}],"author":"Damien Girardeau","twitter_card":"summary_large_image","twitter_creator":"@UnipileAPI","twitter_site":"@UnipileAPI","twitter_misc":{"Yazan:":"Damien Girardeau","Tahmini okuma s\u00fcresi":"15 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.unipile.com\/imap-api-python\/#article","isPartOf":{"@id":"https:\/\/www.unipile.com\/imap-api-python\/"},"author":{"name":"Damien Girardeau","@id":"https:\/\/www.unipile.com\/#\/schema\/person\/a2ac44e22bdc27d497ce8b58716a673e"},"headline":"IMAP API in Python: imaplib, IMAPClient, XOAUTH2 OAuth Guide (2026)","datePublished":"2026-05-26T08:39:09+00:00","dateModified":"2026-06-01T12:45:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.unipile.com\/imap-api-python\/"},"wordCount":4318,"publisher":{"@id":"https:\/\/www.unipile.com\/#organization"},"image":{"@id":"https:\/\/www.unipile.com\/imap-api-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/06\/em-24-imap-api-python-v7.png","articleSection":["API Guidelines"],"inLanguage":"tr"},{"@type":"WebPage","@id":"https:\/\/www.unipile.com\/imap-api-python\/","url":"https:\/\/www.unipile.com\/imap-api-python\/","name":"Python'da IMAP API: imaplib, IMAPClient, XOAUTH2 OAuth Rehberi (2026) - Unipile","isPartOf":{"@id":"https:\/\/www.unipile.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.unipile.com\/imap-api-python\/#primaryimage"},"image":{"@id":"https:\/\/www.unipile.com\/imap-api-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/06\/em-24-imap-api-python-v7.png","datePublished":"2026-05-26T08:39:09+00:00","dateModified":"2026-06-01T12:45:13+00:00","description":"Python IMAP i\u00e7in Kapsaml\u0131 Rehber: stdlib imaplib, IMAPClient sarmalay\u0131c\u0131, Gmail ve Outlook i\u00e7in OAuth XOAUTH2 ve ayr\u0131ca birle\u015fik bir API alternatifi. Kod \u00f6rnekleri dahildir.","breadcrumb":{"@id":"https:\/\/www.unipile.com\/imap-api-python\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.unipile.com\/imap-api-python\/"]}]},{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.unipile.com\/imap-api-python\/#primaryimage","url":"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/06\/em-24-imap-api-python-v7.png","contentUrl":"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/06\/em-24-imap-api-python-v7.png","width":2400,"height":1600,"caption":"Read inbox, send via SMTP, and ship to production via Unipile."},{"@type":"BreadcrumbList","@id":"https:\/\/www.unipile.com\/imap-api-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.unipile.com\/"},{"@type":"ListItem","position":2,"name":"IMAP API in Python: imaplib, IMAPClient, XOAUTH2 OAuth Guide (2026)"}]},{"@type":"WebSite","@id":"https:\/\/www.unipile.com\/#website","url":"https:\/\/www.unipile.com\/","name":"Unipile","description":"Mesajla\u015fma ve E-postay\u0131 Entegre Edin, API ile Kolayca Ba\u011flan\u0131n","publisher":{"@id":"https:\/\/www.unipile.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.unipile.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":"Organization","@id":"https:\/\/www.unipile.com\/#organization","name":"Unipile","url":"https:\/\/www.unipile.com\/","logo":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.unipile.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.unipile.com\/wp-content\/uploads\/2021\/05\/logo-unipile.png","contentUrl":"https:\/\/www.unipile.com\/wp-content\/uploads\/2021\/05\/logo-unipile.png","width":200,"height":49,"caption":"Unipile"},"image":{"@id":"https:\/\/www.unipile.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/unipilefr","https:\/\/x.com\/UnipileAPI","https:\/\/www.linkedin.com\/company\/unipile\/"]},{"@type":"Person","@id":"https:\/\/www.unipile.com\/#\/schema\/person\/a2ac44e22bdc27d497ce8b58716a673e","name":"Damien Girardeau","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/secure.gravatar.com\/avatar\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g","caption":"Damien Girardeau"}}]}},"_links":{"self":[{"href":"https:\/\/www.unipile.com\/tr\/wp-json\/wp\/v2\/posts\/278969","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unipile.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unipile.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unipile.com\/tr\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unipile.com\/tr\/wp-json\/wp\/v2\/comments?post=278969"}],"version-history":[{"count":5,"href":"https:\/\/www.unipile.com\/tr\/wp-json\/wp\/v2\/posts\/278969\/revisions"}],"predecessor-version":[{"id":278982,"href":"https:\/\/www.unipile.com\/tr\/wp-json\/wp\/v2\/posts\/278969\/revisions\/278982"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.unipile.com\/tr\/wp-json\/wp\/v2\/media\/279076"}],"wp:attachment":[{"href":"https:\/\/www.unipile.com\/tr\/wp-json\/wp\/v2\/media?parent=278969"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unipile.com\/tr\/wp-json\/wp\/v2\/categories?post=278969"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unipile.com\/tr\/wp-json\/wp\/v2\/tags?post=278969"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/www.unipile.com\/tr\/wp-json\/wp\/v2\/post_folder?post=278969"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}