gooderp18绿色标准版
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

1060 rindas
103KB

  1. <!DOCTYPE html>
  2. <html lang="en" data-content_root="../">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
  6. <meta property="og:title" content="email.message: Representing an email message" />
  7. <meta property="og:type" content="website" />
  8. <meta property="og:url" content="https://docs.python.org/3/library/email.message.html" />
  9. <meta property="og:site_name" content="Python documentation" />
  10. <meta property="og:description" content="Source code: Lib/email/message.py The central class in the email package is the EmailMessage class, imported from the email.message module. It is the base class for the email object model. EmailMes..." />
  11. <meta property="og:image" content="https://docs.python.org/3/_static/og-image.png" />
  12. <meta property="og:image:alt" content="Python documentation" />
  13. <meta name="description" content="Source code: Lib/email/message.py The central class in the email package is the EmailMessage class, imported from the email.message module. It is the base class for the email object model. EmailMes..." />
  14. <meta property="og:image:width" content="200" />
  15. <meta property="og:image:height" content="200" />
  16. <meta name="theme-color" content="#3776ab" />
  17. <title>email.message: Representing an email message &#8212; Python 3.12.3 documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
  18. <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" />
  19. <link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?v=bb723527" />
  20. <link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="../_static/pygments_dark.css?v=b20cc3f5" />
  21. <script src="../_static/documentation_options.js?v=2c828074"></script>
  22. <script src="../_static/doctools.js?v=888ff710"></script>
  23. <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
  24. <script src="../_static/sidebar.js"></script>
  25. <link rel="search" type="application/opensearchdescription+xml"
  26. title="Search within Python 3.12.3 documentation"
  27. href="../_static/opensearch.xml"/>
  28. <link rel="author" title="About these documents" href="../about.html" />
  29. <link rel="index" title="Index" href="../genindex.html" />
  30. <link rel="search" title="Search" href="../search.html" />
  31. <link rel="copyright" title="Copyright" href="../copyright.html" />
  32. <link rel="next" title="email.parser: Parsing email messages" href="email.parser.html" />
  33. <link rel="prev" title="email — An email and MIME handling package" href="email.html" />
  34. <link rel="canonical" href="https://docs.python.org/3/library/email.message.html" />
  35. <style>
  36. @media only screen {
  37. table.full-width-table {
  38. width: 100%;
  39. }
  40. }
  41. </style>
  42. <link rel="stylesheet" href="../_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
  43. <link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
  44. <script type="text/javascript" src="../_static/copybutton.js"></script>
  45. <script type="text/javascript" src="../_static/menu.js"></script>
  46. <script type="text/javascript" src="../_static/search-focus.js"></script>
  47. <script type="text/javascript" src="../_static/themetoggle.js"></script>
  48. </head>
  49. <body>
  50. <div class="mobile-nav">
  51. <input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
  52. aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
  53. <nav class="nav-content" role="navigation">
  54. <label for="menuToggler" class="toggler__label">
  55. <span></span>
  56. </label>
  57. <span class="nav-items-wrapper">
  58. <a href="https://www.python.org/" class="nav-logo">
  59. <img src="../_static/py.svg" alt="Python logo"/>
  60. </a>
  61. <span class="version_switcher_placeholder"></span>
  62. <form role="search" class="search" action="../search.html" method="get">
  63. <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
  64. <path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
  65. </svg>
  66. <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" />
  67. <input type="submit" value="Go"/>
  68. </form>
  69. </span>
  70. </nav>
  71. <div class="menu-wrapper">
  72. <nav class="menu" role="navigation" aria-label="main navigation">
  73. <div class="language_switcher_placeholder"></div>
  74. <label class="theme-selector-label">
  75. Theme
  76. <select class="theme-selector" oninput="activateTheme(this.value)">
  77. <option value="auto" selected>Auto</option>
  78. <option value="light">Light</option>
  79. <option value="dark">Dark</option>
  80. </select>
  81. </label>
  82. <div>
  83. <h4>Previous topic</h4>
  84. <p class="topless"><a href="email.html"
  85. title="previous chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">email</span></code> — An email and MIME handling package</a></p>
  86. </div>
  87. <div>
  88. <h4>Next topic</h4>
  89. <p class="topless"><a href="email.parser.html"
  90. title="next chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">email.parser</span></code>: Parsing email messages</a></p>
  91. </div>
  92. <div role="note" aria-label="source link">
  93. <h3>This Page</h3>
  94. <ul class="this-page-menu">
  95. <li><a href="../bugs.html">Report a Bug</a></li>
  96. <li>
  97. <a href="https://github.com/python/cpython/blob/main/Doc/library/email.message.rst"
  98. rel="nofollow">Show Source
  99. </a>
  100. </li>
  101. </ul>
  102. </div>
  103. </nav>
  104. </div>
  105. </div>
  106. <div class="related" role="navigation" aria-label="related navigation">
  107. <h3>Navigation</h3>
  108. <ul>
  109. <li class="right" style="margin-right: 10px">
  110. <a href="../genindex.html" title="General Index"
  111. accesskey="I">index</a></li>
  112. <li class="right" >
  113. <a href="../py-modindex.html" title="Python Module Index"
  114. >modules</a> |</li>
  115. <li class="right" >
  116. <a href="email.parser.html" title="email.parser: Parsing email messages"
  117. accesskey="N">next</a> |</li>
  118. <li class="right" >
  119. <a href="email.html" title="email — An email and MIME handling package"
  120. accesskey="P">previous</a> |</li>
  121. <li><img src="../_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"/></li>
  122. <li><a href="https://www.python.org/">Python</a> &#187;</li>
  123. <li class="switchers">
  124. <div class="language_switcher_placeholder"></div>
  125. <div class="version_switcher_placeholder"></div>
  126. </li>
  127. <li>
  128. </li>
  129. <li id="cpython-language-and-version">
  130. <a href="../index.html">3.12.3 Documentation</a> &#187;
  131. </li>
  132. <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> &#187;</li>
  133. <li class="nav-item nav-item-2"><a href="netdata.html" >Internet Data Handling</a> &#187;</li>
  134. <li class="nav-item nav-item-3"><a href="email.html" accesskey="U"><code class="xref py py-mod docutils literal notranslate"><span class="pre">email</span></code> — An email and MIME handling package</a> &#187;</li>
  135. <li class="nav-item nav-item-this"><a href=""><code class="xref py py-mod docutils literal notranslate"><span class="pre">email.message</span></code>: Representing an email message</a></li>
  136. <li class="right">
  137. <div class="inline-search" role="search">
  138. <form class="inline-search" action="../search.html" method="get">
  139. <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box" />
  140. <input type="submit" value="Go" />
  141. </form>
  142. </div>
  143. |
  144. </li>
  145. <li class="right">
  146. <label class="theme-selector-label">
  147. Theme
  148. <select class="theme-selector" oninput="activateTheme(this.value)">
  149. <option value="auto" selected>Auto</option>
  150. <option value="light">Light</option>
  151. <option value="dark">Dark</option>
  152. </select>
  153. </label> |</li>
  154. </ul>
  155. </div>
  156. <div class="document">
  157. <div class="documentwrapper">
  158. <div class="bodywrapper">
  159. <div class="body" role="main">
  160. <section id="module-email.message">
  161. <span id="email-message-representing-an-email-message"></span><h1><a class="reference internal" href="#module-email.message" title="email.message: The base class representing email messages."><code class="xref py py-mod docutils literal notranslate"><span class="pre">email.message</span></code></a>: Representing an email message<a class="headerlink" href="#module-email.message" title="Link to this heading">¶</a></h1>
  162. <p><strong>Source code:</strong> <a class="reference external" href="https://github.com/python/cpython/tree/3.12/Lib/email/message.py">Lib/email/message.py</a></p>
  163. <hr class="docutils" />
  164. <div class="versionadded">
  165. <p><span class="versionmodified added">New in version 3.6: </span><a class="footnote-reference brackets" href="#id2" id="id1" role="doc-noteref"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a></p>
  166. </div>
  167. <p>The central class in the <a class="reference internal" href="email.html#module-email" title="email: Package supporting the parsing, manipulating, and generating email messages."><code class="xref py py-mod docutils literal notranslate"><span class="pre">email</span></code></a> package is the <a class="reference internal" href="#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a>
  168. class, imported from the <a class="reference internal" href="#module-email.message" title="email.message: The base class representing email messages."><code class="xref py py-mod docutils literal notranslate"><span class="pre">email.message</span></code></a> module. It is the base class for
  169. the <a class="reference internal" href="email.html#module-email" title="email: Package supporting the parsing, manipulating, and generating email messages."><code class="xref py py-mod docutils literal notranslate"><span class="pre">email</span></code></a> object model. <a class="reference internal" href="#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a> provides the core
  170. functionality for setting and querying header fields, for accessing message
  171. bodies, and for creating or modifying structured messages.</p>
  172. <p>An email message consists of <em>headers</em> and a <em>payload</em> (which is also referred
  173. to as the <em>content</em>). Headers are <span class="target" id="index-0"></span><a class="rfc reference external" href="https://datatracker.ietf.org/doc/html/rfc5322.html"><strong>RFC 5322</strong></a> or <span class="target" id="index-1"></span><a class="rfc reference external" href="https://datatracker.ietf.org/doc/html/rfc6532.html"><strong>RFC 6532</strong></a> style field names
  174. and values, where the field name and value are separated by a colon. The colon
  175. is not part of either the field name or the field value. The payload may be a
  176. simple text message, or a binary object, or a structured sequence of
  177. sub-messages each with their own set of headers and their own payload. The
  178. latter type of payload is indicated by the message having a MIME type such as
  179. <em class="mimetype">multipart/*</em> or <em class="mimetype">message/rfc822</em>.</p>
  180. <p>The conceptual model provided by an <a class="reference internal" href="#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a> object is that of an
  181. ordered dictionary of headers coupled with a <em>payload</em> that represents the
  182. <span class="target" id="index-2"></span><a class="rfc reference external" href="https://datatracker.ietf.org/doc/html/rfc5322.html"><strong>RFC 5322</strong></a> body of the message, which might be a list of sub-<code class="docutils literal notranslate"><span class="pre">EmailMessage</span></code>
  183. objects. In addition to the normal dictionary methods for accessing the header
  184. names and values, there are methods for accessing specialized information from
  185. the headers (for example the MIME content type), for operating on the payload,
  186. for generating a serialized version of the message, and for recursively walking
  187. over the object tree.</p>
  188. <p>The <a class="reference internal" href="#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a> dictionary-like interface is indexed by the header
  189. names, which must be ASCII values. The values of the dictionary are strings
  190. with some extra methods. Headers are stored and returned in case-preserving
  191. form, but field names are matched case-insensitively. The keys are ordered,
  192. but unlike a real dict, there can be duplicates. Addtional methods are
  193. provided for working with headers that have duplicate keys.</p>
  194. <p>The <em>payload</em> is either a string or bytes object, in the case of simple message
  195. objects, or a list of <a class="reference internal" href="#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a> objects, for MIME container
  196. documents such as <em class="mimetype">multipart/*</em> and <em class="mimetype">message/rfc822</em>
  197. message objects.</p>
  198. <dl class="py class">
  199. <dt class="sig sig-object py" id="email.message.EmailMessage">
  200. <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">email.message.</span></span><span class="sig-name descname"><span class="pre">EmailMessage</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">policy</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">default</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage" title="Link to this definition">¶</a></dt>
  201. <dd><p>If <em>policy</em> is specified use the rules it specifies to update and serialize
  202. the representation of the message. If <em>policy</em> is not set, use the
  203. <a class="reference internal" href="email.policy.html#email.policy.default" title="email.policy.default"><code class="xref py py-class docutils literal notranslate"><span class="pre">default</span></code></a> policy, which follows the rules of the email
  204. RFCs except for line endings (instead of the RFC mandated <code class="docutils literal notranslate"><span class="pre">\r\n</span></code>, it uses
  205. the Python standard <code class="docutils literal notranslate"><span class="pre">\n</span></code> line endings). For more information see the
  206. <a class="reference internal" href="email.policy.html#module-email.policy" title="email.policy: Controlling the parsing and generating of messages"><code class="xref py py-mod docutils literal notranslate"><span class="pre">policy</span></code></a> documentation.</p>
  207. <dl class="py method">
  208. <dt class="sig sig-object py" id="email.message.EmailMessage.as_string">
  209. <span class="sig-name descname"><span class="pre">as_string</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">unixfrom</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">maxheaderlen</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">policy</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.as_string" title="Link to this definition">¶</a></dt>
  210. <dd><p>Return the entire message flattened as a string. When optional
  211. <em>unixfrom</em> is true, the envelope header is included in the returned
  212. string. <em>unixfrom</em> defaults to <code class="docutils literal notranslate"><span class="pre">False</span></code>. For backward compatibility
  213. with the base <a class="reference internal" href="email.compat32-message.html#email.message.Message" title="email.message.Message"><code class="xref py py-class docutils literal notranslate"><span class="pre">Message</span></code></a> class <em>maxheaderlen</em> is
  214. accepted, but defaults to <code class="docutils literal notranslate"><span class="pre">None</span></code>, which means that by default the line
  215. length is controlled by the
  216. <a class="reference internal" href="email.policy.html#email.policy.Policy.max_line_length" title="email.policy.Policy.max_line_length"><code class="xref py py-attr docutils literal notranslate"><span class="pre">max_line_length</span></code></a> of the policy. The
  217. <em>policy</em> argument may be used to override the default policy obtained
  218. from the message instance. This can be used to control some of the
  219. formatting produced by the method, since the specified <em>policy</em> will be
  220. passed to the <a class="reference internal" href="email.generator.html#email.generator.Generator" title="email.generator.Generator"><code class="xref py py-class docutils literal notranslate"><span class="pre">Generator</span></code></a>.</p>
  221. <p>Flattening the message may trigger changes to the <a class="reference internal" href="#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a>
  222. if defaults need to be filled in to complete the transformation to a
  223. string (for example, MIME boundaries may be generated or modified).</p>
  224. <p>Note that this method is provided as a convenience and may not be the
  225. most useful way to serialize messages in your application, especially if
  226. you are dealing with multiple messages. See
  227. <a class="reference internal" href="email.generator.html#email.generator.Generator" title="email.generator.Generator"><code class="xref py py-class docutils literal notranslate"><span class="pre">email.generator.Generator</span></code></a> for a more flexible API for
  228. serializing messages. Note also that this method is restricted to
  229. producing messages serialized as “7 bit clean” when
  230. <a class="reference internal" href="email.policy.html#email.policy.EmailPolicy.utf8" title="email.policy.EmailPolicy.utf8"><code class="xref py py-attr docutils literal notranslate"><span class="pre">utf8</span></code></a> is <code class="docutils literal notranslate"><span class="pre">False</span></code>, which is the default.</p>
  231. <div class="versionchanged">
  232. <p><span class="versionmodified changed">Changed in version 3.6: </span>the default behavior when <em>maxheaderlen</em>
  233. is not specified was changed from defaulting to 0 to defaulting
  234. to the value of <em>max_line_length</em> from the policy.</p>
  235. </div>
  236. </dd></dl>
  237. <dl class="py method">
  238. <dt class="sig sig-object py" id="email.message.EmailMessage.__str__">
  239. <span class="sig-name descname"><span class="pre">__str__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.__str__" title="Link to this definition">¶</a></dt>
  240. <dd><p>Equivalent to <code class="docutils literal notranslate"><span class="pre">as_string(policy=self.policy.clone(utf8=True))</span></code>. Allows
  241. <code class="docutils literal notranslate"><span class="pre">str(msg)</span></code> to produce a string containing the serialized message in a
  242. readable format.</p>
  243. <div class="versionchanged">
  244. <p><span class="versionmodified changed">Changed in version 3.4: </span>the method was changed to use <code class="docutils literal notranslate"><span class="pre">utf8=True</span></code>,
  245. thus producing an <span class="target" id="index-3"></span><a class="rfc reference external" href="https://datatracker.ietf.org/doc/html/rfc6531.html"><strong>RFC 6531</strong></a>-like message representation, instead of
  246. being a direct alias for <a class="reference internal" href="#email.message.EmailMessage.as_string" title="email.message.EmailMessage.as_string"><code class="xref py py-meth docutils literal notranslate"><span class="pre">as_string()</span></code></a>.</p>
  247. </div>
  248. </dd></dl>
  249. <dl class="py method">
  250. <dt class="sig sig-object py" id="email.message.EmailMessage.as_bytes">
  251. <span class="sig-name descname"><span class="pre">as_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">unixfrom</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">policy</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.as_bytes" title="Link to this definition">¶</a></dt>
  252. <dd><p>Return the entire message flattened as a bytes object. When optional
  253. <em>unixfrom</em> is true, the envelope header is included in the returned
  254. string. <em>unixfrom</em> defaults to <code class="docutils literal notranslate"><span class="pre">False</span></code>. The <em>policy</em> argument may be
  255. used to override the default policy obtained from the message instance.
  256. This can be used to control some of the formatting produced by the
  257. method, since the specified <em>policy</em> will be passed to the
  258. <a class="reference internal" href="email.generator.html#email.generator.BytesGenerator" title="email.generator.BytesGenerator"><code class="xref py py-class docutils literal notranslate"><span class="pre">BytesGenerator</span></code></a>.</p>
  259. <p>Flattening the message may trigger changes to the <a class="reference internal" href="#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a>
  260. if defaults need to be filled in to complete the transformation to a
  261. string (for example, MIME boundaries may be generated or modified).</p>
  262. <p>Note that this method is provided as a convenience and may not be the
  263. most useful way to serialize messages in your application, especially if
  264. you are dealing with multiple messages. See
  265. <a class="reference internal" href="email.generator.html#email.generator.BytesGenerator" title="email.generator.BytesGenerator"><code class="xref py py-class docutils literal notranslate"><span class="pre">email.generator.BytesGenerator</span></code></a> for a more flexible API for
  266. serializing messages.</p>
  267. </dd></dl>
  268. <dl class="py method">
  269. <dt class="sig sig-object py" id="email.message.EmailMessage.__bytes__">
  270. <span class="sig-name descname"><span class="pre">__bytes__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.__bytes__" title="Link to this definition">¶</a></dt>
  271. <dd><p>Equivalent to <a class="reference internal" href="#email.message.EmailMessage.as_bytes" title="email.message.EmailMessage.as_bytes"><code class="xref py py-meth docutils literal notranslate"><span class="pre">as_bytes()</span></code></a>. Allows <code class="docutils literal notranslate"><span class="pre">bytes(msg)</span></code> to produce a
  272. bytes object containing the serialized message.</p>
  273. </dd></dl>
  274. <dl class="py method">
  275. <dt class="sig sig-object py" id="email.message.EmailMessage.is_multipart">
  276. <span class="sig-name descname"><span class="pre">is_multipart</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.is_multipart" title="Link to this definition">¶</a></dt>
  277. <dd><p>Return <code class="docutils literal notranslate"><span class="pre">True</span></code> if the message’s payload is a list of
  278. sub-<a class="reference internal" href="#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a> objects, otherwise return <code class="docutils literal notranslate"><span class="pre">False</span></code>. When
  279. <a class="reference internal" href="#email.message.EmailMessage.is_multipart" title="email.message.EmailMessage.is_multipart"><code class="xref py py-meth docutils literal notranslate"><span class="pre">is_multipart()</span></code></a> returns <code class="docutils literal notranslate"><span class="pre">False</span></code>, the payload should be a string
  280. object (which might be a CTE encoded binary payload). Note that
  281. <a class="reference internal" href="#email.message.EmailMessage.is_multipart" title="email.message.EmailMessage.is_multipart"><code class="xref py py-meth docutils literal notranslate"><span class="pre">is_multipart()</span></code></a> returning <code class="docutils literal notranslate"><span class="pre">True</span></code> does not necessarily mean that
  282. “msg.get_content_maintype() == ‘multipart’” will return the <code class="docutils literal notranslate"><span class="pre">True</span></code>.
  283. For example, <code class="docutils literal notranslate"><span class="pre">is_multipart</span></code> will return <code class="docutils literal notranslate"><span class="pre">True</span></code> when the
  284. <a class="reference internal" href="#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a> is of type <code class="docutils literal notranslate"><span class="pre">message/rfc822</span></code>.</p>
  285. </dd></dl>
  286. <dl class="py method">
  287. <dt class="sig sig-object py" id="email.message.EmailMessage.set_unixfrom">
  288. <span class="sig-name descname"><span class="pre">set_unixfrom</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">unixfrom</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.set_unixfrom" title="Link to this definition">¶</a></dt>
  289. <dd><p>Set the message’s envelope header to <em>unixfrom</em>, which should be a
  290. string. (See <a class="reference internal" href="mailbox.html#mailbox.mboxMessage" title="mailbox.mboxMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">mboxMessage</span></code></a> for a brief description of
  291. this header.)</p>
  292. </dd></dl>
  293. <dl class="py method">
  294. <dt class="sig sig-object py" id="email.message.EmailMessage.get_unixfrom">
  295. <span class="sig-name descname"><span class="pre">get_unixfrom</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.get_unixfrom" title="Link to this definition">¶</a></dt>
  296. <dd><p>Return the message’s envelope header. Defaults to <code class="docutils literal notranslate"><span class="pre">None</span></code> if the
  297. envelope header was never set.</p>
  298. </dd></dl>
  299. <p>The following methods implement the mapping-like interface for accessing the
  300. message’s headers. Note that there are some semantic differences
  301. between these methods and a normal mapping (i.e. dictionary) interface. For
  302. example, in a dictionary there are no duplicate keys, but here there may be
  303. duplicate message headers. Also, in dictionaries there is no guaranteed
  304. order to the keys returned by <a class="reference internal" href="#email.message.EmailMessage.keys" title="email.message.EmailMessage.keys"><code class="xref py py-meth docutils literal notranslate"><span class="pre">keys()</span></code></a>, but in an <a class="reference internal" href="#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a>
  305. object, headers are always returned in the order they appeared in the
  306. original message, or in which they were added to the message later. Any
  307. header deleted and then re-added is always appended to the end of the
  308. header list.</p>
  309. <p>These semantic differences are intentional and are biased toward
  310. convenience in the most common use cases.</p>
  311. <p>Note that in all cases, any envelope header present in the message is not
  312. included in the mapping interface.</p>
  313. <dl class="py method">
  314. <dt class="sig sig-object py" id="email.message.EmailMessage.__len__">
  315. <span class="sig-name descname"><span class="pre">__len__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.__len__" title="Link to this definition">¶</a></dt>
  316. <dd><p>Return the total number of headers, including duplicates.</p>
  317. </dd></dl>
  318. <dl class="py method">
  319. <dt class="sig sig-object py" id="email.message.EmailMessage.__contains__">
  320. <span class="sig-name descname"><span class="pre">__contains__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.__contains__" title="Link to this definition">¶</a></dt>
  321. <dd><p>Return <code class="docutils literal notranslate"><span class="pre">True</span></code> if the message object has a field named <em>name</em>. Matching is
  322. done without regard to case and <em>name</em> does not include the trailing
  323. colon. Used for the <code class="docutils literal notranslate"><span class="pre">in</span></code> operator. For example:</p>
  324. <div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="s1">&#39;message-id&#39;</span> <span class="ow">in</span> <span class="n">myMessage</span><span class="p">:</span>
  325. <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Message-ID:&#39;</span><span class="p">,</span> <span class="n">myMessage</span><span class="p">[</span><span class="s1">&#39;message-id&#39;</span><span class="p">])</span>
  326. </pre></div>
  327. </div>
  328. </dd></dl>
  329. <dl class="py method">
  330. <dt class="sig sig-object py" id="email.message.EmailMessage.__getitem__">
  331. <span class="sig-name descname"><span class="pre">__getitem__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.__getitem__" title="Link to this definition">¶</a></dt>
  332. <dd><p>Return the value of the named header field. <em>name</em> does not include the
  333. colon field separator. If the header is missing, <code class="docutils literal notranslate"><span class="pre">None</span></code> is returned; a
  334. <a class="reference internal" href="exceptions.html#KeyError" title="KeyError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">KeyError</span></code></a> is never raised.</p>
  335. <p>Note that if the named field appears more than once in the message’s
  336. headers, exactly which of those field values will be returned is
  337. undefined. Use the <a class="reference internal" href="#email.message.EmailMessage.get_all" title="email.message.EmailMessage.get_all"><code class="xref py py-meth docutils literal notranslate"><span class="pre">get_all()</span></code></a> method to get the values of all the
  338. extant headers named <em>name</em>.</p>
  339. <p>Using the standard (non-<code class="docutils literal notranslate"><span class="pre">compat32</span></code>) policies, the returned value is an
  340. instance of a subclass of <a class="reference internal" href="email.headerregistry.html#email.headerregistry.BaseHeader" title="email.headerregistry.BaseHeader"><code class="xref py py-class docutils literal notranslate"><span class="pre">email.headerregistry.BaseHeader</span></code></a>.</p>
  341. </dd></dl>
  342. <dl class="py method">
  343. <dt class="sig sig-object py" id="email.message.EmailMessage.__setitem__">
  344. <span class="sig-name descname"><span class="pre">__setitem__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">val</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.__setitem__" title="Link to this definition">¶</a></dt>
  345. <dd><p>Add a header to the message with field name <em>name</em> and value <em>val</em>. The
  346. field is appended to the end of the message’s existing headers.</p>
  347. <p>Note that this does <em>not</em> overwrite or delete any existing header with the same
  348. name. If you want to ensure that the new header is the only one present in the
  349. message with field name <em>name</em>, delete the field first, e.g.:</p>
  350. <div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="k">del</span> <span class="n">msg</span><span class="p">[</span><span class="s1">&#39;subject&#39;</span><span class="p">]</span>
  351. <span class="n">msg</span><span class="p">[</span><span class="s1">&#39;subject&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;Python roolz!&#39;</span>
  352. </pre></div>
  353. </div>
  354. <p>If the <a class="reference internal" href="email.policy.html#module-email.policy" title="email.policy: Controlling the parsing and generating of messages"><code class="xref py py-mod docutils literal notranslate"><span class="pre">policy</span></code></a> defines certain headers to be unique (as the standard
  355. policies do), this method may raise a <a class="reference internal" href="exceptions.html#ValueError" title="ValueError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ValueError</span></code></a> when an attempt
  356. is made to assign a value to such a header when one already exists. This
  357. behavior is intentional for consistency’s sake, but do not depend on it
  358. as we may choose to make such assignments do an automatic deletion of the
  359. existing header in the future.</p>
  360. </dd></dl>
  361. <dl class="py method">
  362. <dt class="sig sig-object py" id="email.message.EmailMessage.__delitem__">
  363. <span class="sig-name descname"><span class="pre">__delitem__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.__delitem__" title="Link to this definition">¶</a></dt>
  364. <dd><p>Delete all occurrences of the field with name <em>name</em> from the message’s
  365. headers. No exception is raised if the named field isn’t present in the
  366. headers.</p>
  367. </dd></dl>
  368. <dl class="py method">
  369. <dt class="sig sig-object py" id="email.message.EmailMessage.keys">
  370. <span class="sig-name descname"><span class="pre">keys</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.keys" title="Link to this definition">¶</a></dt>
  371. <dd><p>Return a list of all the message’s header field names.</p>
  372. </dd></dl>
  373. <dl class="py method">
  374. <dt class="sig sig-object py" id="email.message.EmailMessage.values">
  375. <span class="sig-name descname"><span class="pre">values</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.values" title="Link to this definition">¶</a></dt>
  376. <dd><p>Return a list of all the message’s field values.</p>
  377. </dd></dl>
  378. <dl class="py method">
  379. <dt class="sig sig-object py" id="email.message.EmailMessage.items">
  380. <span class="sig-name descname"><span class="pre">items</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.items" title="Link to this definition">¶</a></dt>
  381. <dd><p>Return a list of 2-tuples containing all the message’s field headers and
  382. values.</p>
  383. </dd></dl>
  384. <dl class="py method">
  385. <dt class="sig sig-object py" id="email.message.EmailMessage.get">
  386. <span class="sig-name descname"><span class="pre">get</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">failobj</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.get" title="Link to this definition">¶</a></dt>
  387. <dd><p>Return the value of the named header field. This is identical to
  388. <a class="reference internal" href="../reference/datamodel.html#object.__getitem__" title="object.__getitem__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__getitem__()</span></code></a> except that optional <em>failobj</em> is returned if the
  389. named header is missing (<em>failobj</em> defaults to <code class="docutils literal notranslate"><span class="pre">None</span></code>).</p>
  390. </dd></dl>
  391. <p>Here are some additional useful header related methods:</p>
  392. <dl class="py method">
  393. <dt class="sig sig-object py" id="email.message.EmailMessage.get_all">
  394. <span class="sig-name descname"><span class="pre">get_all</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">failobj</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.get_all" title="Link to this definition">¶</a></dt>
  395. <dd><p>Return a list of all the values for the field named <em>name</em>. If there are
  396. no such named headers in the message, <em>failobj</em> is returned (defaults to
  397. <code class="docutils literal notranslate"><span class="pre">None</span></code>).</p>
  398. </dd></dl>
  399. <dl class="py method">
  400. <dt class="sig sig-object py" id="email.message.EmailMessage.add_header">
  401. <span class="sig-name descname"><span class="pre">add_header</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_value</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">_params</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.add_header" title="Link to this definition">¶</a></dt>
  402. <dd><p>Extended header setting. This method is similar to <a class="reference internal" href="#email.message.EmailMessage.__setitem__" title="email.message.EmailMessage.__setitem__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__setitem__()</span></code></a>
  403. except that additional header parameters can be provided as keyword
  404. arguments. <em>_name</em> is the header field to add and <em>_value</em> is the
  405. <em>primary</em> value for the header.</p>
  406. <p>For each item in the keyword argument dictionary <em>_params</em>, the key is
  407. taken as the parameter name, with underscores converted to dashes (since
  408. dashes are illegal in Python identifiers). Normally, the parameter will
  409. be added as <code class="docutils literal notranslate"><span class="pre">key=&quot;value&quot;</span></code> unless the value is <code class="docutils literal notranslate"><span class="pre">None</span></code>, in which case
  410. only the key will be added.</p>
  411. <p>If the value contains non-ASCII characters, the charset and language may
  412. be explicitly controlled by specifying the value as a three tuple in the
  413. format <code class="docutils literal notranslate"><span class="pre">(CHARSET,</span> <span class="pre">LANGUAGE,</span> <span class="pre">VALUE)</span></code>, where <code class="docutils literal notranslate"><span class="pre">CHARSET</span></code> is a string
  414. naming the charset to be used to encode the value, <code class="docutils literal notranslate"><span class="pre">LANGUAGE</span></code> can
  415. usually be set to <code class="docutils literal notranslate"><span class="pre">None</span></code> or the empty string (see <span class="target" id="index-4"></span><a class="rfc reference external" href="https://datatracker.ietf.org/doc/html/rfc2231.html"><strong>RFC 2231</strong></a> for other
  416. possibilities), and <code class="docutils literal notranslate"><span class="pre">VALUE</span></code> is the string value containing non-ASCII
  417. code points. If a three tuple is not passed and the value contains
  418. non-ASCII characters, it is automatically encoded in <span class="target" id="index-5"></span><a class="rfc reference external" href="https://datatracker.ietf.org/doc/html/rfc2231.html"><strong>RFC 2231</strong></a> format
  419. using a <code class="docutils literal notranslate"><span class="pre">CHARSET</span></code> of <code class="docutils literal notranslate"><span class="pre">utf-8</span></code> and a <code class="docutils literal notranslate"><span class="pre">LANGUAGE</span></code> of <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p>
  420. <p>Here is an example:</p>
  421. <div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">msg</span><span class="o">.</span><span class="n">add_header</span><span class="p">(</span><span class="s1">&#39;Content-Disposition&#39;</span><span class="p">,</span> <span class="s1">&#39;attachment&#39;</span><span class="p">,</span> <span class="n">filename</span><span class="o">=</span><span class="s1">&#39;bud.gif&#39;</span><span class="p">)</span>
  422. </pre></div>
  423. </div>
  424. <p>This will add a header that looks like</p>
  425. <div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">Content</span><span class="o">-</span><span class="n">Disposition</span><span class="p">:</span> <span class="n">attachment</span><span class="p">;</span> <span class="n">filename</span><span class="o">=</span><span class="s2">&quot;bud.gif&quot;</span>
  426. </pre></div>
  427. </div>
  428. <p>An example of the extended interface with non-ASCII characters:</p>
  429. <div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">msg</span><span class="o">.</span><span class="n">add_header</span><span class="p">(</span><span class="s1">&#39;Content-Disposition&#39;</span><span class="p">,</span> <span class="s1">&#39;attachment&#39;</span><span class="p">,</span>
  430. <span class="n">filename</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;iso-8859-1&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="s1">&#39;Fußballer.ppt&#39;</span><span class="p">))</span>
  431. </pre></div>
  432. </div>
  433. </dd></dl>
  434. <dl class="py method">
  435. <dt class="sig sig-object py" id="email.message.EmailMessage.replace_header">
  436. <span class="sig-name descname"><span class="pre">replace_header</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_value</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.replace_header" title="Link to this definition">¶</a></dt>
  437. <dd><p>Replace a header. Replace the first header found in the message that
  438. matches <em>_name</em>, retaining header order and field name case of the
  439. original header. If no matching header is found, raise a
  440. <a class="reference internal" href="exceptions.html#KeyError" title="KeyError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">KeyError</span></code></a>.</p>
  441. </dd></dl>
  442. <dl class="py method">
  443. <dt class="sig sig-object py" id="email.message.EmailMessage.get_content_type">
  444. <span class="sig-name descname"><span class="pre">get_content_type</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.get_content_type" title="Link to this definition">¶</a></dt>
  445. <dd><p>Return the message’s content type, coerced to lower case of the form
  446. <em class="mimetype">maintype/subtype</em>. If there is no <em class="mailheader">Content-Type</em>
  447. header in the message return the value returned by
  448. <a class="reference internal" href="#email.message.EmailMessage.get_default_type" title="email.message.EmailMessage.get_default_type"><code class="xref py py-meth docutils literal notranslate"><span class="pre">get_default_type()</span></code></a>. If the <em class="mailheader">Content-Type</em> header is
  449. invalid, return <code class="docutils literal notranslate"><span class="pre">text/plain</span></code>.</p>
  450. <p>(According to <span class="target" id="index-6"></span><a class="rfc reference external" href="https://datatracker.ietf.org/doc/html/rfc2045.html"><strong>RFC 2045</strong></a>, messages always have a default type,
  451. <a class="reference internal" href="#email.message.EmailMessage.get_content_type" title="email.message.EmailMessage.get_content_type"><code class="xref py py-meth docutils literal notranslate"><span class="pre">get_content_type()</span></code></a> will always return a value. <span class="target" id="index-7"></span><a class="rfc reference external" href="https://datatracker.ietf.org/doc/html/rfc2045.html"><strong>RFC 2045</strong></a> defines
  452. a message’s default type to be <em class="mimetype">text/plain</em> unless it appears
  453. inside a <em class="mimetype">multipart/digest</em> container, in which case it would
  454. be <em class="mimetype">message/rfc822</em>. If the <em class="mailheader">Content-Type</em> header
  455. has an invalid type specification, <span class="target" id="index-8"></span><a class="rfc reference external" href="https://datatracker.ietf.org/doc/html/rfc2045.html"><strong>RFC 2045</strong></a> mandates that the default
  456. type be <em class="mimetype">text/plain</em>.)</p>
  457. </dd></dl>
  458. <dl class="py method">
  459. <dt class="sig sig-object py" id="email.message.EmailMessage.get_content_maintype">
  460. <span class="sig-name descname"><span class="pre">get_content_maintype</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.get_content_maintype" title="Link to this definition">¶</a></dt>
  461. <dd><p>Return the message’s main content type. This is the <em class="mimetype">maintype</em>
  462. part of the string returned by <a class="reference internal" href="#email.message.EmailMessage.get_content_type" title="email.message.EmailMessage.get_content_type"><code class="xref py py-meth docutils literal notranslate"><span class="pre">get_content_type()</span></code></a>.</p>
  463. </dd></dl>
  464. <dl class="py method">
  465. <dt class="sig sig-object py" id="email.message.EmailMessage.get_content_subtype">
  466. <span class="sig-name descname"><span class="pre">get_content_subtype</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.get_content_subtype" title="Link to this definition">¶</a></dt>
  467. <dd><p>Return the message’s sub-content type. This is the <em class="mimetype">subtype</em>
  468. part of the string returned by <a class="reference internal" href="#email.message.EmailMessage.get_content_type" title="email.message.EmailMessage.get_content_type"><code class="xref py py-meth docutils literal notranslate"><span class="pre">get_content_type()</span></code></a>.</p>
  469. </dd></dl>
  470. <dl class="py method">
  471. <dt class="sig sig-object py" id="email.message.EmailMessage.get_default_type">
  472. <span class="sig-name descname"><span class="pre">get_default_type</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.get_default_type" title="Link to this definition">¶</a></dt>
  473. <dd><p>Return the default content type. Most messages have a default content
  474. type of <em class="mimetype">text/plain</em>, except for messages that are subparts of
  475. <em class="mimetype">multipart/digest</em> containers. Such subparts have a default
  476. content type of <em class="mimetype">message/rfc822</em>.</p>
  477. </dd></dl>
  478. <dl class="py method">
  479. <dt class="sig sig-object py" id="email.message.EmailMessage.set_default_type">
  480. <span class="sig-name descname"><span class="pre">set_default_type</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ctype</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.set_default_type" title="Link to this definition">¶</a></dt>
  481. <dd><p>Set the default content type. <em>ctype</em> should either be
  482. <em class="mimetype">text/plain</em> or <em class="mimetype">message/rfc822</em>, although this is
  483. not enforced. The default content type is not stored in the
  484. <em class="mailheader">Content-Type</em> header, so it only affects the return value of
  485. the <code class="docutils literal notranslate"><span class="pre">get_content_type</span></code> methods when no <em class="mailheader">Content-Type</em>
  486. header is present in the message.</p>
  487. </dd></dl>
  488. <dl class="py method">
  489. <dt class="sig sig-object py" id="email.message.EmailMessage.set_param">
  490. <span class="sig-name descname"><span class="pre">set_param</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">param</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">header</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'Content-Type'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">requote</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">charset</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">language</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">''</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">replace</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.set_param" title="Link to this definition">¶</a></dt>
  491. <dd><p>Set a parameter in the <em class="mailheader">Content-Type</em> header. If the
  492. parameter already exists in the header, replace its value with <em>value</em>.
  493. When <em>header</em> is <code class="docutils literal notranslate"><span class="pre">Content-Type</span></code> (the default) and the header does not
  494. yet exist in the message, add it, set its value to
  495. <em class="mimetype">text/plain</em>, and append the new parameter value. Optional
  496. <em>header</em> specifies an alternative header to <em class="mailheader">Content-Type</em>.</p>
  497. <p>If the value contains non-ASCII characters, the charset and language may
  498. be explicitly specified using the optional <em>charset</em> and <em>language</em>
  499. parameters. Optional <em>language</em> specifies the <span class="target" id="index-9"></span><a class="rfc reference external" href="https://datatracker.ietf.org/doc/html/rfc2231.html"><strong>RFC 2231</strong></a> language,
  500. defaulting to the empty string. Both <em>charset</em> and <em>language</em> should be
  501. strings. The default is to use the <code class="docutils literal notranslate"><span class="pre">utf8</span></code> <em>charset</em> and <code class="docutils literal notranslate"><span class="pre">None</span></code> for
  502. the <em>language</em>.</p>
  503. <p>If <em>replace</em> is <code class="docutils literal notranslate"><span class="pre">False</span></code> (the default) the header is moved to the
  504. end of the list of headers. If <em>replace</em> is <code class="docutils literal notranslate"><span class="pre">True</span></code>, the header
  505. will be updated in place.</p>
  506. <p>Use of the <em>requote</em> parameter with <a class="reference internal" href="#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a> objects is
  507. deprecated.</p>
  508. <p>Note that existing parameter values of headers may be accessed through
  509. the <a class="reference internal" href="email.headerregistry.html#email.headerregistry.ParameterizedMIMEHeader.params" title="email.headerregistry.ParameterizedMIMEHeader.params"><code class="xref py py-attr docutils literal notranslate"><span class="pre">params</span></code></a> attribute of the
  510. header value (for example, <code class="docutils literal notranslate"><span class="pre">msg['Content-Type'].params['charset']</span></code>).</p>
  511. <div class="versionchanged">
  512. <p><span class="versionmodified changed">Changed in version 3.4: </span><code class="docutils literal notranslate"><span class="pre">replace</span></code> keyword was added.</p>
  513. </div>
  514. </dd></dl>
  515. <dl class="py method">
  516. <dt class="sig sig-object py" id="email.message.EmailMessage.del_param">
  517. <span class="sig-name descname"><span class="pre">del_param</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">param</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">header</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'content-type'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">requote</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.del_param" title="Link to this definition">¶</a></dt>
  518. <dd><p>Remove the given parameter completely from the <em class="mailheader">Content-Type</em>
  519. header. The header will be re-written in place without the parameter or
  520. its value. Optional <em>header</em> specifies an alternative to
  521. <em class="mailheader">Content-Type</em>.</p>
  522. <p>Use of the <em>requote</em> parameter with <a class="reference internal" href="#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a> objects is
  523. deprecated.</p>
  524. </dd></dl>
  525. <dl class="py method">
  526. <dt class="sig sig-object py" id="email.message.EmailMessage.get_filename">
  527. <span class="sig-name descname"><span class="pre">get_filename</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">failobj</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.get_filename" title="Link to this definition">¶</a></dt>
  528. <dd><p>Return the value of the <code class="docutils literal notranslate"><span class="pre">filename</span></code> parameter of the
  529. <em class="mailheader">Content-Disposition</em> header of the message. If the header
  530. does not have a <code class="docutils literal notranslate"><span class="pre">filename</span></code> parameter, this method falls back to looking
  531. for the <code class="docutils literal notranslate"><span class="pre">name</span></code> parameter on the <em class="mailheader">Content-Type</em> header. If
  532. neither is found, or the header is missing, then <em>failobj</em> is returned.
  533. The returned string will always be unquoted as per
  534. <a class="reference internal" href="email.utils.html#email.utils.unquote" title="email.utils.unquote"><code class="xref py py-func docutils literal notranslate"><span class="pre">email.utils.unquote()</span></code></a>.</p>
  535. </dd></dl>
  536. <dl class="py method">
  537. <dt class="sig sig-object py" id="email.message.EmailMessage.get_boundary">
  538. <span class="sig-name descname"><span class="pre">get_boundary</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">failobj</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.get_boundary" title="Link to this definition">¶</a></dt>
  539. <dd><p>Return the value of the <code class="docutils literal notranslate"><span class="pre">boundary</span></code> parameter of the
  540. <em class="mailheader">Content-Type</em> header of the message, or <em>failobj</em> if either
  541. the header is missing, or has no <code class="docutils literal notranslate"><span class="pre">boundary</span></code> parameter. The returned
  542. string will always be unquoted as per <a class="reference internal" href="email.utils.html#email.utils.unquote" title="email.utils.unquote"><code class="xref py py-func docutils literal notranslate"><span class="pre">email.utils.unquote()</span></code></a>.</p>
  543. </dd></dl>
  544. <dl class="py method">
  545. <dt class="sig sig-object py" id="email.message.EmailMessage.set_boundary">
  546. <span class="sig-name descname"><span class="pre">set_boundary</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">boundary</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.set_boundary" title="Link to this definition">¶</a></dt>
  547. <dd><p>Set the <code class="docutils literal notranslate"><span class="pre">boundary</span></code> parameter of the <em class="mailheader">Content-Type</em> header to
  548. <em>boundary</em>. <a class="reference internal" href="#email.message.EmailMessage.set_boundary" title="email.message.EmailMessage.set_boundary"><code class="xref py py-meth docutils literal notranslate"><span class="pre">set_boundary()</span></code></a> will always quote <em>boundary</em> if
  549. necessary. A <a class="reference internal" href="email.errors.html#email.errors.HeaderParseError" title="email.errors.HeaderParseError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">HeaderParseError</span></code></a> is raised if the
  550. message object has no <em class="mailheader">Content-Type</em> header.</p>
  551. <p>Note that using this method is subtly different from deleting the old
  552. <em class="mailheader">Content-Type</em> header and adding a new one with the new
  553. boundary via <a class="reference internal" href="#email.message.EmailMessage.add_header" title="email.message.EmailMessage.add_header"><code class="xref py py-meth docutils literal notranslate"><span class="pre">add_header()</span></code></a>, because <a class="reference internal" href="#email.message.EmailMessage.set_boundary" title="email.message.EmailMessage.set_boundary"><code class="xref py py-meth docutils literal notranslate"><span class="pre">set_boundary()</span></code></a> preserves
  554. the order of the <em class="mailheader">Content-Type</em> header in the list of
  555. headers.</p>
  556. </dd></dl>
  557. <dl class="py method">
  558. <dt class="sig sig-object py" id="email.message.EmailMessage.get_content_charset">
  559. <span class="sig-name descname"><span class="pre">get_content_charset</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">failobj</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.get_content_charset" title="Link to this definition">¶</a></dt>
  560. <dd><p>Return the <code class="docutils literal notranslate"><span class="pre">charset</span></code> parameter of the <em class="mailheader">Content-Type</em> header,
  561. coerced to lower case. If there is no <em class="mailheader">Content-Type</em> header, or if
  562. that header has no <code class="docutils literal notranslate"><span class="pre">charset</span></code> parameter, <em>failobj</em> is returned.</p>
  563. </dd></dl>
  564. <dl class="py method">
  565. <dt class="sig sig-object py" id="email.message.EmailMessage.get_charsets">
  566. <span class="sig-name descname"><span class="pre">get_charsets</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">failobj</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.get_charsets" title="Link to this definition">¶</a></dt>
  567. <dd><p>Return a list containing the character set names in the message. If the
  568. message is a <em class="mimetype">multipart</em>, then the list will contain one element
  569. for each subpart in the payload, otherwise, it will be a list of length 1.</p>
  570. <p>Each item in the list will be a string which is the value of the
  571. <code class="docutils literal notranslate"><span class="pre">charset</span></code> parameter in the <em class="mailheader">Content-Type</em> header for the
  572. represented subpart. If the subpart has no <em class="mailheader">Content-Type</em>
  573. header, no <code class="docutils literal notranslate"><span class="pre">charset</span></code> parameter, or is not of the <em class="mimetype">text</em> main
  574. MIME type, then that item in the returned list will be <em>failobj</em>.</p>
  575. </dd></dl>
  576. <dl class="py method">
  577. <dt class="sig sig-object py" id="email.message.EmailMessage.is_attachment">
  578. <span class="sig-name descname"><span class="pre">is_attachment</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.is_attachment" title="Link to this definition">¶</a></dt>
  579. <dd><p>Return <code class="docutils literal notranslate"><span class="pre">True</span></code> if there is a <em class="mailheader">Content-Disposition</em> header
  580. and its (case insensitive) value is <code class="docutils literal notranslate"><span class="pre">attachment</span></code>, <code class="docutils literal notranslate"><span class="pre">False</span></code> otherwise.</p>
  581. <div class="versionchanged">
  582. <p><span class="versionmodified changed">Changed in version 3.4.2: </span>is_attachment is now a method instead of a property, for consistency
  583. with <a class="reference internal" href="email.compat32-message.html#email.message.Message.is_multipart" title="email.message.Message.is_multipart"><code class="xref py py-meth docutils literal notranslate"><span class="pre">is_multipart()</span></code></a>.</p>
  584. </div>
  585. </dd></dl>
  586. <dl class="py method">
  587. <dt class="sig sig-object py" id="email.message.EmailMessage.get_content_disposition">
  588. <span class="sig-name descname"><span class="pre">get_content_disposition</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.get_content_disposition" title="Link to this definition">¶</a></dt>
  589. <dd><p>Return the lowercased value (without parameters) of the message’s
  590. <em class="mailheader">Content-Disposition</em> header if it has one, or <code class="docutils literal notranslate"><span class="pre">None</span></code>. The
  591. possible values for this method are <em>inline</em>, <em>attachment</em> or <code class="docutils literal notranslate"><span class="pre">None</span></code>
  592. if the message follows <span class="target" id="index-10"></span><a class="rfc reference external" href="https://datatracker.ietf.org/doc/html/rfc2183.html"><strong>RFC 2183</strong></a>.</p>
  593. <div class="versionadded">
  594. <p><span class="versionmodified added">New in version 3.5.</span></p>
  595. </div>
  596. </dd></dl>
  597. <p>The following methods relate to interrogating and manipulating the content
  598. (payload) of the message.</p>
  599. <dl class="py method">
  600. <dt class="sig sig-object py" id="email.message.EmailMessage.walk">
  601. <span class="sig-name descname"><span class="pre">walk</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.walk" title="Link to this definition">¶</a></dt>
  602. <dd><p>The <a class="reference internal" href="#email.message.EmailMessage.walk" title="email.message.EmailMessage.walk"><code class="xref py py-meth docutils literal notranslate"><span class="pre">walk()</span></code></a> method is an all-purpose generator which can be used to
  603. iterate over all the parts and subparts of a message object tree, in
  604. depth-first traversal order. You will typically use <a class="reference internal" href="#email.message.EmailMessage.walk" title="email.message.EmailMessage.walk"><code class="xref py py-meth docutils literal notranslate"><span class="pre">walk()</span></code></a> as the
  605. iterator in a <code class="docutils literal notranslate"><span class="pre">for</span></code> loop; each iteration returns the next subpart.</p>
  606. <p>Here’s an example that prints the MIME type of every part of a multipart
  607. message structure:</p>
  608. <div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">msg</span><span class="o">.</span><span class="n">walk</span><span class="p">():</span>
  609. <span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">get_content_type</span><span class="p">())</span>
  610. <span class="go">multipart/report</span>
  611. <span class="go">text/plain</span>
  612. <span class="go">message/delivery-status</span>
  613. <span class="go">text/plain</span>
  614. <span class="go">text/plain</span>
  615. <span class="go">message/rfc822</span>
  616. <span class="go">text/plain</span>
  617. </pre></div>
  618. </div>
  619. <p><code class="docutils literal notranslate"><span class="pre">walk</span></code> iterates over the subparts of any part where
  620. <a class="reference internal" href="#email.message.EmailMessage.is_multipart" title="email.message.EmailMessage.is_multipart"><code class="xref py py-meth docutils literal notranslate"><span class="pre">is_multipart()</span></code></a> returns <code class="docutils literal notranslate"><span class="pre">True</span></code>, even though
  621. <code class="docutils literal notranslate"><span class="pre">msg.get_content_maintype()</span> <span class="pre">==</span> <span class="pre">'multipart'</span></code> may return <code class="docutils literal notranslate"><span class="pre">False</span></code>. We
  622. can see this in our example by making use of the <code class="docutils literal notranslate"><span class="pre">_structure</span></code> debug
  623. helper function:</p>
  624. <div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">email.iterators</span> <span class="kn">import</span> <span class="n">_structure</span>
  625. <span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">msg</span><span class="o">.</span><span class="n">walk</span><span class="p">():</span>
  626. <span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">get_content_maintype</span><span class="p">()</span> <span class="o">==</span> <span class="s1">&#39;multipart&#39;</span><span class="p">,</span>
  627. <span class="gp">... </span> <span class="n">part</span><span class="o">.</span><span class="n">is_multipart</span><span class="p">())</span>
  628. <span class="go">True True</span>
  629. <span class="go">False False</span>
  630. <span class="go">False True</span>
  631. <span class="go">False False</span>
  632. <span class="go">False False</span>
  633. <span class="go">False True</span>
  634. <span class="go">False False</span>
  635. <span class="gp">&gt;&gt;&gt; </span><span class="n">_structure</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
  636. <span class="go">multipart/report</span>
  637. <span class="go"> text/plain</span>
  638. <span class="go"> message/delivery-status</span>
  639. <span class="go"> text/plain</span>
  640. <span class="go"> text/plain</span>
  641. <span class="go"> message/rfc822</span>
  642. <span class="go"> text/plain</span>
  643. </pre></div>
  644. </div>
  645. <p>Here the <code class="docutils literal notranslate"><span class="pre">message</span></code> parts are not <code class="docutils literal notranslate"><span class="pre">multiparts</span></code>, but they do contain
  646. subparts. <code class="docutils literal notranslate"><span class="pre">is_multipart()</span></code> returns <code class="docutils literal notranslate"><span class="pre">True</span></code> and <code class="docutils literal notranslate"><span class="pre">walk</span></code> descends
  647. into the subparts.</p>
  648. </dd></dl>
  649. <dl class="py method">
  650. <dt class="sig sig-object py" id="email.message.EmailMessage.get_body">
  651. <span class="sig-name descname"><span class="pre">get_body</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">preferencelist</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">('related',</span> <span class="pre">'html',</span> <span class="pre">'plain')</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.get_body" title="Link to this definition">¶</a></dt>
  652. <dd><p>Return the MIME part that is the best candidate to be the “body” of the
  653. message.</p>
  654. <p><em>preferencelist</em> must be a sequence of strings from the set <code class="docutils literal notranslate"><span class="pre">related</span></code>,
  655. <code class="docutils literal notranslate"><span class="pre">html</span></code>, and <code class="docutils literal notranslate"><span class="pre">plain</span></code>, and indicates the order of preference for the
  656. content type of the part returned.</p>
  657. <p>Start looking for candidate matches with the object on which the
  658. <code class="docutils literal notranslate"><span class="pre">get_body</span></code> method is called.</p>
  659. <p>If <code class="docutils literal notranslate"><span class="pre">related</span></code> is not included in <em>preferencelist</em>, consider the root
  660. part (or subpart of the root part) of any related encountered as a
  661. candidate if the (sub-)part matches a preference.</p>
  662. <p>When encountering a <code class="docutils literal notranslate"><span class="pre">multipart/related</span></code>, check the <code class="docutils literal notranslate"><span class="pre">start</span></code> parameter
  663. and if a part with a matching <em class="mailheader">Content-ID</em> is found, consider
  664. only it when looking for candidate matches. Otherwise consider only the
  665. first (default root) part of the <code class="docutils literal notranslate"><span class="pre">multipart/related</span></code>.</p>
  666. <p>If a part has a <em class="mailheader">Content-Disposition</em> header, only consider
  667. the part a candidate match if the value of the header is <code class="docutils literal notranslate"><span class="pre">inline</span></code>.</p>
  668. <p>If none of the candidates matches any of the preferences in
  669. <em>preferencelist</em>, return <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p>
  670. <p>Notes: (1) For most applications the only <em>preferencelist</em> combinations
  671. that really make sense are <code class="docutils literal notranslate"><span class="pre">('plain',)</span></code>, <code class="docutils literal notranslate"><span class="pre">('html',</span> <span class="pre">'plain')</span></code>, and the
  672. default <code class="docutils literal notranslate"><span class="pre">('related',</span> <span class="pre">'html',</span> <span class="pre">'plain')</span></code>. (2) Because matching starts
  673. with the object on which <code class="docutils literal notranslate"><span class="pre">get_body</span></code> is called, calling <code class="docutils literal notranslate"><span class="pre">get_body</span></code> on
  674. a <code class="docutils literal notranslate"><span class="pre">multipart/related</span></code> will return the object itself unless
  675. <em>preferencelist</em> has a non-default value. (3) Messages (or message parts)
  676. that do not specify a <em class="mailheader">Content-Type</em> or whose
  677. <em class="mailheader">Content-Type</em> header is invalid will be treated as if they
  678. are of type <code class="docutils literal notranslate"><span class="pre">text/plain</span></code>, which may occasionally cause <code class="docutils literal notranslate"><span class="pre">get_body</span></code> to
  679. return unexpected results.</p>
  680. </dd></dl>
  681. <dl class="py method">
  682. <dt class="sig sig-object py" id="email.message.EmailMessage.iter_attachments">
  683. <span class="sig-name descname"><span class="pre">iter_attachments</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.iter_attachments" title="Link to this definition">¶</a></dt>
  684. <dd><p>Return an iterator over all of the immediate sub-parts of the message
  685. that are not candidate “body” parts. That is, skip the first occurrence
  686. of each of <code class="docutils literal notranslate"><span class="pre">text/plain</span></code>, <code class="docutils literal notranslate"><span class="pre">text/html</span></code>, <code class="docutils literal notranslate"><span class="pre">multipart/related</span></code>, or
  687. <code class="docutils literal notranslate"><span class="pre">multipart/alternative</span></code> (unless they are explicitly marked as
  688. attachments via <em class="mailheader">Content-Disposition: attachment</em>), and
  689. return all remaining parts. When applied directly to a
  690. <code class="docutils literal notranslate"><span class="pre">multipart/related</span></code>, return an iterator over the all the related parts
  691. except the root part (ie: the part pointed to by the <code class="docutils literal notranslate"><span class="pre">start</span></code> parameter,
  692. or the first part if there is no <code class="docutils literal notranslate"><span class="pre">start</span></code> parameter or the <code class="docutils literal notranslate"><span class="pre">start</span></code>
  693. parameter doesn’t match the <em class="mailheader">Content-ID</em> of any of the
  694. parts). When applied directly to a <code class="docutils literal notranslate"><span class="pre">multipart/alternative</span></code> or a
  695. non-<code class="docutils literal notranslate"><span class="pre">multipart</span></code>, return an empty iterator.</p>
  696. </dd></dl>
  697. <dl class="py method">
  698. <dt class="sig sig-object py" id="email.message.EmailMessage.iter_parts">
  699. <span class="sig-name descname"><span class="pre">iter_parts</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.iter_parts" title="Link to this definition">¶</a></dt>
  700. <dd><p>Return an iterator over all of the immediate sub-parts of the message,
  701. which will be empty for a non-<code class="docutils literal notranslate"><span class="pre">multipart</span></code>. (See also
  702. <a class="reference internal" href="#email.message.EmailMessage.walk" title="email.message.EmailMessage.walk"><code class="xref py py-meth docutils literal notranslate"><span class="pre">walk()</span></code></a>.)</p>
  703. </dd></dl>
  704. <dl class="py method">
  705. <dt class="sig sig-object py" id="email.message.EmailMessage.get_content">
  706. <span class="sig-name descname"><span class="pre">get_content</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">content_manager</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.get_content" title="Link to this definition">¶</a></dt>
  707. <dd><p>Call the <a class="reference internal" href="email.contentmanager.html#email.contentmanager.ContentManager.get_content" title="email.contentmanager.ContentManager.get_content"><code class="xref py py-meth docutils literal notranslate"><span class="pre">get_content()</span></code></a> method
  708. of the <em>content_manager</em>, passing self as the message object, and passing
  709. along any other arguments or keywords as additional arguments. If
  710. <em>content_manager</em> is not specified, use the <code class="docutils literal notranslate"><span class="pre">content_manager</span></code> specified
  711. by the current <a class="reference internal" href="email.policy.html#module-email.policy" title="email.policy: Controlling the parsing and generating of messages"><code class="xref py py-mod docutils literal notranslate"><span class="pre">policy</span></code></a>.</p>
  712. </dd></dl>
  713. <dl class="py method">
  714. <dt class="sig sig-object py" id="email.message.EmailMessage.set_content">
  715. <span class="sig-name descname"><span class="pre">set_content</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">content_manager</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.set_content" title="Link to this definition">¶</a></dt>
  716. <dd><p>Call the <a class="reference internal" href="email.contentmanager.html#email.contentmanager.ContentManager.set_content" title="email.contentmanager.ContentManager.set_content"><code class="xref py py-meth docutils literal notranslate"><span class="pre">set_content()</span></code></a> method
  717. of the <em>content_manager</em>, passing self as the message object, and passing
  718. along any other arguments or keywords as additional arguments. If
  719. <em>content_manager</em> is not specified, use the <code class="docutils literal notranslate"><span class="pre">content_manager</span></code> specified
  720. by the current <a class="reference internal" href="email.policy.html#module-email.policy" title="email.policy: Controlling the parsing and generating of messages"><code class="xref py py-mod docutils literal notranslate"><span class="pre">policy</span></code></a>.</p>
  721. </dd></dl>
  722. <dl class="py method">
  723. <dt class="sig sig-object py" id="email.message.EmailMessage.make_related">
  724. <span class="sig-name descname"><span class="pre">make_related</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">boundary</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.make_related" title="Link to this definition">¶</a></dt>
  725. <dd><p>Convert a non-<code class="docutils literal notranslate"><span class="pre">multipart</span></code> message into a <code class="docutils literal notranslate"><span class="pre">multipart/related</span></code> message,
  726. moving any existing <em class="mailheader">Content-</em> headers and payload into a
  727. (new) first part of the <code class="docutils literal notranslate"><span class="pre">multipart</span></code>. If <em>boundary</em> is specified, use
  728. it as the boundary string in the multipart, otherwise leave the boundary
  729. to be automatically created when it is needed (for example, when the
  730. message is serialized).</p>
  731. </dd></dl>
  732. <dl class="py method">
  733. <dt class="sig sig-object py" id="email.message.EmailMessage.make_alternative">
  734. <span class="sig-name descname"><span class="pre">make_alternative</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">boundary</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.make_alternative" title="Link to this definition">¶</a></dt>
  735. <dd><p>Convert a non-<code class="docutils literal notranslate"><span class="pre">multipart</span></code> or a <code class="docutils literal notranslate"><span class="pre">multipart/related</span></code> into a
  736. <code class="docutils literal notranslate"><span class="pre">multipart/alternative</span></code>, moving any existing <em class="mailheader">Content-</em>
  737. headers and payload into a (new) first part of the <code class="docutils literal notranslate"><span class="pre">multipart</span></code>. If
  738. <em>boundary</em> is specified, use it as the boundary string in the multipart,
  739. otherwise leave the boundary to be automatically created when it is
  740. needed (for example, when the message is serialized).</p>
  741. </dd></dl>
  742. <dl class="py method">
  743. <dt class="sig sig-object py" id="email.message.EmailMessage.make_mixed">
  744. <span class="sig-name descname"><span class="pre">make_mixed</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">boundary</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.make_mixed" title="Link to this definition">¶</a></dt>
  745. <dd><p>Convert a non-<code class="docutils literal notranslate"><span class="pre">multipart</span></code>, a <code class="docutils literal notranslate"><span class="pre">multipart/related</span></code>, or a
  746. <code class="docutils literal notranslate"><span class="pre">multipart-alternative</span></code> into a <code class="docutils literal notranslate"><span class="pre">multipart/mixed</span></code>, moving any existing
  747. <em class="mailheader">Content-</em> headers and payload into a (new) first part of the
  748. <code class="docutils literal notranslate"><span class="pre">multipart</span></code>. If <em>boundary</em> is specified, use it as the boundary string
  749. in the multipart, otherwise leave the boundary to be automatically
  750. created when it is needed (for example, when the message is serialized).</p>
  751. </dd></dl>
  752. <dl class="py method">
  753. <dt class="sig sig-object py" id="email.message.EmailMessage.add_related">
  754. <span class="sig-name descname"><span class="pre">add_related</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">content_manager</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.add_related" title="Link to this definition">¶</a></dt>
  755. <dd><p>If the message is a <code class="docutils literal notranslate"><span class="pre">multipart/related</span></code>, create a new message
  756. object, pass all of the arguments to its <a class="reference internal" href="#email.message.EmailMessage.set_content" title="email.message.EmailMessage.set_content"><code class="xref py py-meth docutils literal notranslate"><span class="pre">set_content()</span></code></a> method,
  757. and <a class="reference internal" href="email.compat32-message.html#email.message.Message.attach" title="email.message.Message.attach"><code class="xref py py-meth docutils literal notranslate"><span class="pre">attach()</span></code></a> it to the <code class="docutils literal notranslate"><span class="pre">multipart</span></code>. If
  758. the message is a non-<code class="docutils literal notranslate"><span class="pre">multipart</span></code>, call <a class="reference internal" href="#email.message.EmailMessage.make_related" title="email.message.EmailMessage.make_related"><code class="xref py py-meth docutils literal notranslate"><span class="pre">make_related()</span></code></a> and then
  759. proceed as above. If the message is any other type of <code class="docutils literal notranslate"><span class="pre">multipart</span></code>,
  760. raise a <a class="reference internal" href="exceptions.html#TypeError" title="TypeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">TypeError</span></code></a>. If <em>content_manager</em> is not specified, use
  761. the <code class="docutils literal notranslate"><span class="pre">content_manager</span></code> specified by the current <a class="reference internal" href="email.policy.html#module-email.policy" title="email.policy: Controlling the parsing and generating of messages"><code class="xref py py-mod docutils literal notranslate"><span class="pre">policy</span></code></a>.
  762. If the added part has no <em class="mailheader">Content-Disposition</em> header,
  763. add one with the value <code class="docutils literal notranslate"><span class="pre">inline</span></code>.</p>
  764. </dd></dl>
  765. <dl class="py method">
  766. <dt class="sig sig-object py" id="email.message.EmailMessage.add_alternative">
  767. <span class="sig-name descname"><span class="pre">add_alternative</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">content_manager</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.add_alternative" title="Link to this definition">¶</a></dt>
  768. <dd><p>If the message is a <code class="docutils literal notranslate"><span class="pre">multipart/alternative</span></code>, create a new message
  769. object, pass all of the arguments to its <a class="reference internal" href="#email.message.EmailMessage.set_content" title="email.message.EmailMessage.set_content"><code class="xref py py-meth docutils literal notranslate"><span class="pre">set_content()</span></code></a> method, and
  770. <a class="reference internal" href="email.compat32-message.html#email.message.Message.attach" title="email.message.Message.attach"><code class="xref py py-meth docutils literal notranslate"><span class="pre">attach()</span></code></a> it to the <code class="docutils literal notranslate"><span class="pre">multipart</span></code>. If the
  771. message is a non-<code class="docutils literal notranslate"><span class="pre">multipart</span></code> or <code class="docutils literal notranslate"><span class="pre">multipart/related</span></code>, call
  772. <a class="reference internal" href="#email.message.EmailMessage.make_alternative" title="email.message.EmailMessage.make_alternative"><code class="xref py py-meth docutils literal notranslate"><span class="pre">make_alternative()</span></code></a> and then proceed as above. If the message is
  773. any other type of <code class="docutils literal notranslate"><span class="pre">multipart</span></code>, raise a <a class="reference internal" href="exceptions.html#TypeError" title="TypeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">TypeError</span></code></a>. If
  774. <em>content_manager</em> is not specified, use the <code class="docutils literal notranslate"><span class="pre">content_manager</span></code> specified
  775. by the current <a class="reference internal" href="email.policy.html#module-email.policy" title="email.policy: Controlling the parsing and generating of messages"><code class="xref py py-mod docutils literal notranslate"><span class="pre">policy</span></code></a>.</p>
  776. </dd></dl>
  777. <dl class="py method">
  778. <dt class="sig sig-object py" id="email.message.EmailMessage.add_attachment">
  779. <span class="sig-name descname"><span class="pre">add_attachment</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">content_manager</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kw</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.add_attachment" title="Link to this definition">¶</a></dt>
  780. <dd><p>If the message is a <code class="docutils literal notranslate"><span class="pre">multipart/mixed</span></code>, create a new message object,
  781. pass all of the arguments to its <a class="reference internal" href="#email.message.EmailMessage.set_content" title="email.message.EmailMessage.set_content"><code class="xref py py-meth docutils literal notranslate"><span class="pre">set_content()</span></code></a> method, and
  782. <a class="reference internal" href="email.compat32-message.html#email.message.Message.attach" title="email.message.Message.attach"><code class="xref py py-meth docutils literal notranslate"><span class="pre">attach()</span></code></a> it to the <code class="docutils literal notranslate"><span class="pre">multipart</span></code>. If the
  783. message is a non-<code class="docutils literal notranslate"><span class="pre">multipart</span></code>, <code class="docutils literal notranslate"><span class="pre">multipart/related</span></code>, or
  784. <code class="docutils literal notranslate"><span class="pre">multipart/alternative</span></code>, call <a class="reference internal" href="#email.message.EmailMessage.make_mixed" title="email.message.EmailMessage.make_mixed"><code class="xref py py-meth docutils literal notranslate"><span class="pre">make_mixed()</span></code></a> and then proceed as
  785. above. If <em>content_manager</em> is not specified, use the <code class="docutils literal notranslate"><span class="pre">content_manager</span></code>
  786. specified by the current <a class="reference internal" href="email.policy.html#module-email.policy" title="email.policy: Controlling the parsing and generating of messages"><code class="xref py py-mod docutils literal notranslate"><span class="pre">policy</span></code></a>. If the added part
  787. has no <em class="mailheader">Content-Disposition</em> header, add one with the value
  788. <code class="docutils literal notranslate"><span class="pre">attachment</span></code>. This method can be used both for explicit attachments
  789. (<em class="mailheader">Content-Disposition: attachment</em>) and <code class="docutils literal notranslate"><span class="pre">inline</span></code> attachments
  790. (<em class="mailheader">Content-Disposition: inline</em>), by passing appropriate
  791. options to the <code class="docutils literal notranslate"><span class="pre">content_manager</span></code>.</p>
  792. </dd></dl>
  793. <dl class="py method">
  794. <dt class="sig sig-object py" id="email.message.EmailMessage.clear">
  795. <span class="sig-name descname"><span class="pre">clear</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.clear" title="Link to this definition">¶</a></dt>
  796. <dd><p>Remove the payload and all of the headers.</p>
  797. </dd></dl>
  798. <dl class="py method">
  799. <dt class="sig sig-object py" id="email.message.EmailMessage.clear_content">
  800. <span class="sig-name descname"><span class="pre">clear_content</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#email.message.EmailMessage.clear_content" title="Link to this definition">¶</a></dt>
  801. <dd><p>Remove the payload and all of the <em class="mailheader">!Content-</em> headers, leaving
  802. all other headers intact and in their original order.</p>
  803. </dd></dl>
  804. <p><a class="reference internal" href="#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a> objects have the following instance attributes:</p>
  805. <dl class="py attribute">
  806. <dt class="sig sig-object py" id="email.message.EmailMessage.preamble">
  807. <span class="sig-name descname"><span class="pre">preamble</span></span><a class="headerlink" href="#email.message.EmailMessage.preamble" title="Link to this definition">¶</a></dt>
  808. <dd><p>The format of a MIME document allows for some text between the blank line
  809. following the headers, and the first multipart boundary string. Normally,
  810. this text is never visible in a MIME-aware mail reader because it falls
  811. outside the standard MIME armor. However, when viewing the raw text of
  812. the message, or when viewing the message in a non-MIME aware reader, this
  813. text can become visible.</p>
  814. <p>The <em>preamble</em> attribute contains this leading extra-armor text for MIME
  815. documents. When the <a class="reference internal" href="email.parser.html#email.parser.Parser" title="email.parser.Parser"><code class="xref py py-class docutils literal notranslate"><span class="pre">Parser</span></code></a> discovers some text
  816. after the headers but before the first boundary string, it assigns this
  817. text to the message’s <em>preamble</em> attribute. When the
  818. <a class="reference internal" href="email.generator.html#email.generator.Generator" title="email.generator.Generator"><code class="xref py py-class docutils literal notranslate"><span class="pre">Generator</span></code></a> is writing out the plain text
  819. representation of a MIME message, and it finds the
  820. message has a <em>preamble</em> attribute, it will write this text in the area
  821. between the headers and the first boundary. See <a class="reference internal" href="email.parser.html#module-email.parser" title="email.parser: Parse flat text email messages to produce a message object structure."><code class="xref py py-mod docutils literal notranslate"><span class="pre">email.parser</span></code></a> and
  822. <a class="reference internal" href="email.generator.html#module-email.generator" title="email.generator: Generate flat text email messages from a message structure."><code class="xref py py-mod docutils literal notranslate"><span class="pre">email.generator</span></code></a> for details.</p>
  823. <p>Note that if the message object has no preamble, the <em>preamble</em> attribute
  824. will be <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p>
  825. </dd></dl>
  826. <dl class="py attribute">
  827. <dt class="sig sig-object py" id="email.message.EmailMessage.epilogue">
  828. <span class="sig-name descname"><span class="pre">epilogue</span></span><a class="headerlink" href="#email.message.EmailMessage.epilogue" title="Link to this definition">¶</a></dt>
  829. <dd><p>The <em>epilogue</em> attribute acts the same way as the <em>preamble</em> attribute,
  830. except that it contains text that appears between the last boundary and
  831. the end of the message. As with the <a class="reference internal" href="#email.message.EmailMessage.preamble" title="email.message.EmailMessage.preamble"><code class="xref py py-attr docutils literal notranslate"><span class="pre">preamble</span></code></a>,
  832. if there is no epilog text this attribute will be <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p>
  833. </dd></dl>
  834. <dl class="py attribute">
  835. <dt class="sig sig-object py" id="email.message.EmailMessage.defects">
  836. <span class="sig-name descname"><span class="pre">defects</span></span><a class="headerlink" href="#email.message.EmailMessage.defects" title="Link to this definition">¶</a></dt>
  837. <dd><p>The <em>defects</em> attribute contains a list of all the problems found when
  838. parsing this message. See <a class="reference internal" href="email.errors.html#module-email.errors" title="email.errors: The exception classes used by the email package."><code class="xref py py-mod docutils literal notranslate"><span class="pre">email.errors</span></code></a> for a detailed description
  839. of the possible parsing defects.</p>
  840. </dd></dl>
  841. </dd></dl>
  842. <dl class="py class">
  843. <dt class="sig sig-object py" id="email.message.MIMEPart">
  844. <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">email.message.</span></span><span class="sig-name descname"><span class="pre">MIMEPart</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">policy</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">default</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#email.message.MIMEPart" title="Link to this definition">¶</a></dt>
  845. <dd><p>This class represents a subpart of a MIME message. It is identical to
  846. <a class="reference internal" href="#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a>, except that no <em class="mailheader">MIME-Version</em> headers are
  847. added when <a class="reference internal" href="#email.message.EmailMessage.set_content" title="email.message.EmailMessage.set_content"><code class="xref py py-meth docutils literal notranslate"><span class="pre">set_content()</span></code></a> is called, since sub-parts do
  848. not need their own <em class="mailheader">MIME-Version</em> headers.</p>
  849. </dd></dl>
  850. <p class="rubric">Footnotes</p>
  851. <aside class="footnote-list brackets">
  852. <aside class="footnote brackets" id="id2" role="doc-footnote">
  853. <span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id1">1</a><span class="fn-bracket">]</span></span>
  854. <p>Originally added in 3.4 as a <a class="reference internal" href="../glossary.html#term-provisional-package"><span class="xref std std-term">provisional module</span></a>. Docs for legacy message class moved to
  855. <a class="reference internal" href="email.compat32-message.html#compat32-message"><span class="std std-ref">email.message.Message: Representing an email message using the compat32 API</span></a>.</p>
  856. </aside>
  857. </aside>
  858. </section>
  859. <div class="clearer"></div>
  860. </div>
  861. </div>
  862. </div>
  863. <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
  864. <div class="sphinxsidebarwrapper">
  865. <div>
  866. <h4>Previous topic</h4>
  867. <p class="topless"><a href="email.html"
  868. title="previous chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">email</span></code> — An email and MIME handling package</a></p>
  869. </div>
  870. <div>
  871. <h4>Next topic</h4>
  872. <p class="topless"><a href="email.parser.html"
  873. title="next chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">email.parser</span></code>: Parsing email messages</a></p>
  874. </div>
  875. <div role="note" aria-label="source link">
  876. <h3>This Page</h3>
  877. <ul class="this-page-menu">
  878. <li><a href="../bugs.html">Report a Bug</a></li>
  879. <li>
  880. <a href="https://github.com/python/cpython/blob/main/Doc/library/email.message.rst"
  881. rel="nofollow">Show Source
  882. </a>
  883. </li>
  884. </ul>
  885. </div>
  886. </div>
  887. <div id="sidebarbutton" title="Collapse sidebar">
  888. <span>«</span>
  889. </div>
  890. </div>
  891. <div class="clearer"></div>
  892. </div>
  893. <div class="related" role="navigation" aria-label="related navigation">
  894. <h3>Navigation</h3>
  895. <ul>
  896. <li class="right" style="margin-right: 10px">
  897. <a href="../genindex.html" title="General Index"
  898. >index</a></li>
  899. <li class="right" >
  900. <a href="../py-modindex.html" title="Python Module Index"
  901. >modules</a> |</li>
  902. <li class="right" >
  903. <a href="email.parser.html" title="email.parser: Parsing email messages"
  904. >next</a> |</li>
  905. <li class="right" >
  906. <a href="email.html" title="email — An email and MIME handling package"
  907. >previous</a> |</li>
  908. <li><img src="../_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"/></li>
  909. <li><a href="https://www.python.org/">Python</a> &#187;</li>
  910. <li class="switchers">
  911. <div class="language_switcher_placeholder"></div>
  912. <div class="version_switcher_placeholder"></div>
  913. </li>
  914. <li>
  915. </li>
  916. <li id="cpython-language-and-version">
  917. <a href="../index.html">3.12.3 Documentation</a> &#187;
  918. </li>
  919. <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> &#187;</li>
  920. <li class="nav-item nav-item-2"><a href="netdata.html" >Internet Data Handling</a> &#187;</li>
  921. <li class="nav-item nav-item-3"><a href="email.html" ><code class="xref py py-mod docutils literal notranslate"><span class="pre">email</span></code> — An email and MIME handling package</a> &#187;</li>
  922. <li class="nav-item nav-item-this"><a href=""><code class="xref py py-mod docutils literal notranslate"><span class="pre">email.message</span></code>: Representing an email message</a></li>
  923. <li class="right">
  924. <div class="inline-search" role="search">
  925. <form class="inline-search" action="../search.html" method="get">
  926. <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box" />
  927. <input type="submit" value="Go" />
  928. </form>
  929. </div>
  930. |
  931. </li>
  932. <li class="right">
  933. <label class="theme-selector-label">
  934. Theme
  935. <select class="theme-selector" oninput="activateTheme(this.value)">
  936. <option value="auto" selected>Auto</option>
  937. <option value="light">Light</option>
  938. <option value="dark">Dark</option>
  939. </select>
  940. </label> |</li>
  941. </ul>
  942. </div>
  943. <div class="footer">
  944. &copy;
  945. <a href="../copyright.html">
  946. Copyright
  947. </a>
  948. 2001-2024, Python Software Foundation.
  949. <br />
  950. This page is licensed under the Python Software Foundation License Version 2.
  951. <br />
  952. Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
  953. <br />
  954. See <a href="/license.html">History and License</a> for more information.<br />
  955. <br />
  956. The Python Software Foundation is a non-profit corporation.
  957. <a href="https://www.python.org/psf/donations/">Please donate.</a>
  958. <br />
  959. <br />
  960. Last updated on Apr 09, 2024 (13:47 UTC).
  961. <a href="/bugs.html">Found a bug</a>?
  962. <br />
  963. Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.2.6.
  964. </div>
  965. </body>
  966. </html>
上海开阖软件有限公司 沪ICP备12045867号-1