|
- <!DOCTYPE html>
-
- <html lang="en" data-content_root="../">
- <head>
- <meta charset="utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
- <meta property="og:title" content="email.message: Representing an email message" />
- <meta property="og:type" content="website" />
- <meta property="og:url" content="https://docs.python.org/3/library/email.message.html" />
- <meta property="og:site_name" content="Python documentation" />
- <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..." />
- <meta property="og:image" content="https://docs.python.org/3/_static/og-image.png" />
- <meta property="og:image:alt" content="Python documentation" />
- <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..." />
- <meta property="og:image:width" content="200" />
- <meta property="og:image:height" content="200" />
- <meta name="theme-color" content="#3776ab" />
-
- <title>email.message: Representing an email message — Python 3.12.3 documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
-
- <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" />
- <link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?v=bb723527" />
- <link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="../_static/pygments_dark.css?v=b20cc3f5" />
-
- <script src="../_static/documentation_options.js?v=2c828074"></script>
- <script src="../_static/doctools.js?v=888ff710"></script>
- <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
-
- <script src="../_static/sidebar.js"></script>
-
- <link rel="search" type="application/opensearchdescription+xml"
- title="Search within Python 3.12.3 documentation"
- href="../_static/opensearch.xml"/>
- <link rel="author" title="About these documents" href="../about.html" />
- <link rel="index" title="Index" href="../genindex.html" />
- <link rel="search" title="Search" href="../search.html" />
- <link rel="copyright" title="Copyright" href="../copyright.html" />
- <link rel="next" title="email.parser: Parsing email messages" href="email.parser.html" />
- <link rel="prev" title="email — An email and MIME handling package" href="email.html" />
- <link rel="canonical" href="https://docs.python.org/3/library/email.message.html" />
-
-
-
-
-
- <style>
- @media only screen {
- table.full-width-table {
- width: 100%;
- }
- }
- </style>
- <link rel="stylesheet" href="../_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
- <link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
- <script type="text/javascript" src="../_static/copybutton.js"></script>
- <script type="text/javascript" src="../_static/menu.js"></script>
- <script type="text/javascript" src="../_static/search-focus.js"></script>
- <script type="text/javascript" src="../_static/themetoggle.js"></script>
-
- </head>
- <body>
- <div class="mobile-nav">
- <input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
- aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
- <nav class="nav-content" role="navigation">
- <label for="menuToggler" class="toggler__label">
- <span></span>
- </label>
- <span class="nav-items-wrapper">
- <a href="https://www.python.org/" class="nav-logo">
- <img src="../_static/py.svg" alt="Python logo"/>
- </a>
- <span class="version_switcher_placeholder"></span>
- <form role="search" class="search" action="../search.html" method="get">
- <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
- <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>
- </svg>
- <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" />
- <input type="submit" value="Go"/>
- </form>
- </span>
- </nav>
- <div class="menu-wrapper">
- <nav class="menu" role="navigation" aria-label="main navigation">
- <div class="language_switcher_placeholder"></div>
-
- <label class="theme-selector-label">
- Theme
- <select class="theme-selector" oninput="activateTheme(this.value)">
- <option value="auto" selected>Auto</option>
- <option value="light">Light</option>
- <option value="dark">Dark</option>
- </select>
- </label>
- <div>
- <h4>Previous topic</h4>
- <p class="topless"><a href="email.html"
- 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>
- </div>
- <div>
- <h4>Next topic</h4>
- <p class="topless"><a href="email.parser.html"
- title="next chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">email.parser</span></code>: Parsing email messages</a></p>
- </div>
- <div role="note" aria-label="source link">
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="../bugs.html">Report a Bug</a></li>
- <li>
- <a href="https://github.com/python/cpython/blob/main/Doc/library/email.message.rst"
- rel="nofollow">Show Source
- </a>
- </li>
- </ul>
- </div>
- </nav>
- </div>
- </div>
-
-
- <div class="related" role="navigation" aria-label="related navigation">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../genindex.html" title="General Index"
- accesskey="I">index</a></li>
- <li class="right" >
- <a href="../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li class="right" >
- <a href="email.parser.html" title="email.parser: Parsing email messages"
- accesskey="N">next</a> |</li>
- <li class="right" >
- <a href="email.html" title="email — An email and MIME handling package"
- accesskey="P">previous</a> |</li>
-
- <li><img src="../_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"/></li>
- <li><a href="https://www.python.org/">Python</a> »</li>
- <li class="switchers">
- <div class="language_switcher_placeholder"></div>
- <div class="version_switcher_placeholder"></div>
- </li>
- <li>
-
- </li>
- <li id="cpython-language-and-version">
- <a href="../index.html">3.12.3 Documentation</a> »
- </li>
-
- <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> »</li>
- <li class="nav-item nav-item-2"><a href="netdata.html" >Internet Data Handling</a> »</li>
- <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> »</li>
- <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>
- <li class="right">
-
-
- <div class="inline-search" role="search">
- <form class="inline-search" action="../search.html" method="get">
- <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box" />
- <input type="submit" value="Go" />
- </form>
- </div>
- |
- </li>
- <li class="right">
- <label class="theme-selector-label">
- Theme
- <select class="theme-selector" oninput="activateTheme(this.value)">
- <option value="auto" selected>Auto</option>
- <option value="light">Light</option>
- <option value="dark">Dark</option>
- </select>
- </label> |</li>
-
- </ul>
- </div>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body" role="main">
-
- <section id="module-email.message">
- <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>
- <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>
- <hr class="docutils" />
- <div class="versionadded">
- <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>
- </div>
- <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>
- 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
- 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
- functionality for setting and querying header fields, for accessing message
- bodies, and for creating or modifying structured messages.</p>
- <p>An email message consists of <em>headers</em> and a <em>payload</em> (which is also referred
- 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
- and values, where the field name and value are separated by a colon. The colon
- is not part of either the field name or the field value. The payload may be a
- simple text message, or a binary object, or a structured sequence of
- sub-messages each with their own set of headers and their own payload. The
- latter type of payload is indicated by the message having a MIME type such as
- <em class="mimetype">multipart/*</em> or <em class="mimetype">message/rfc822</em>.</p>
- <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
- ordered dictionary of headers coupled with a <em>payload</em> that represents the
- <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>
- objects. In addition to the normal dictionary methods for accessing the header
- names and values, there are methods for accessing specialized information from
- the headers (for example the MIME content type), for operating on the payload,
- for generating a serialized version of the message, and for recursively walking
- over the object tree.</p>
- <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
- names, which must be ASCII values. The values of the dictionary are strings
- with some extra methods. Headers are stored and returned in case-preserving
- form, but field names are matched case-insensitively. The keys are ordered,
- but unlike a real dict, there can be duplicates. Addtional methods are
- provided for working with headers that have duplicate keys.</p>
- <p>The <em>payload</em> is either a string or bytes object, in the case of simple message
- 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
- documents such as <em class="mimetype">multipart/*</em> and <em class="mimetype">message/rfc822</em>
- message objects.</p>
- <dl class="py class">
- <dt class="sig sig-object py" id="email.message.EmailMessage">
- <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>
- <dd><p>If <em>policy</em> is specified use the rules it specifies to update and serialize
- the representation of the message. If <em>policy</em> is not set, use the
- <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
- RFCs except for line endings (instead of the RFC mandated <code class="docutils literal notranslate"><span class="pre">\r\n</span></code>, it uses
- the Python standard <code class="docutils literal notranslate"><span class="pre">\n</span></code> line endings). For more information see 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> documentation.</p>
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.as_string">
- <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>
- <dd><p>Return the entire message flattened as a string. When optional
- <em>unixfrom</em> is true, the envelope header is included in the returned
- string. <em>unixfrom</em> defaults to <code class="docutils literal notranslate"><span class="pre">False</span></code>. For backward compatibility
- 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
- accepted, but defaults to <code class="docutils literal notranslate"><span class="pre">None</span></code>, which means that by default the line
- length is controlled by the
- <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
- <em>policy</em> argument may be used to override the default policy obtained
- from the message instance. This can be used to control some of the
- formatting produced by the method, since the specified <em>policy</em> will be
- 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>
- <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>
- if defaults need to be filled in to complete the transformation to a
- string (for example, MIME boundaries may be generated or modified).</p>
- <p>Note that this method is provided as a convenience and may not be the
- most useful way to serialize messages in your application, especially if
- you are dealing with multiple messages. See
- <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
- serializing messages. Note also that this method is restricted to
- producing messages serialized as “7 bit clean” when
- <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>
- <div class="versionchanged">
- <p><span class="versionmodified changed">Changed in version 3.6: </span>the default behavior when <em>maxheaderlen</em>
- is not specified was changed from defaulting to 0 to defaulting
- to the value of <em>max_line_length</em> from the policy.</p>
- </div>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.__str__">
- <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>
- <dd><p>Equivalent to <code class="docutils literal notranslate"><span class="pre">as_string(policy=self.policy.clone(utf8=True))</span></code>. Allows
- <code class="docutils literal notranslate"><span class="pre">str(msg)</span></code> to produce a string containing the serialized message in a
- readable format.</p>
- <div class="versionchanged">
- <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>,
- 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
- 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>
- </div>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.as_bytes">
- <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>
- <dd><p>Return the entire message flattened as a bytes object. When optional
- <em>unixfrom</em> is true, the envelope header is included in the returned
- string. <em>unixfrom</em> defaults to <code class="docutils literal notranslate"><span class="pre">False</span></code>. The <em>policy</em> argument may be
- used to override the default policy obtained from the message instance.
- This can be used to control some of the formatting produced by the
- method, since the specified <em>policy</em> will be passed to the
- <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>
- <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>
- if defaults need to be filled in to complete the transformation to a
- string (for example, MIME boundaries may be generated or modified).</p>
- <p>Note that this method is provided as a convenience and may not be the
- most useful way to serialize messages in your application, especially if
- you are dealing with multiple messages. See
- <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
- serializing messages.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.__bytes__">
- <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>
- <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
- bytes object containing the serialized message.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.is_multipart">
- <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>
- <dd><p>Return <code class="docutils literal notranslate"><span class="pre">True</span></code> if the message’s payload is a list of
- 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
- <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
- object (which might be a CTE encoded binary payload). Note that
- <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
- “msg.get_content_maintype() == ‘multipart’” will return the <code class="docutils literal notranslate"><span class="pre">True</span></code>.
- 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
- <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>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.set_unixfrom">
- <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>
- <dd><p>Set the message’s envelope header to <em>unixfrom</em>, which should be a
- 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
- this header.)</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.get_unixfrom">
- <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>
- <dd><p>Return the message’s envelope header. Defaults to <code class="docutils literal notranslate"><span class="pre">None</span></code> if the
- envelope header was never set.</p>
- </dd></dl>
-
- <p>The following methods implement the mapping-like interface for accessing the
- message’s headers. Note that there are some semantic differences
- between these methods and a normal mapping (i.e. dictionary) interface. For
- example, in a dictionary there are no duplicate keys, but here there may be
- duplicate message headers. Also, in dictionaries there is no guaranteed
- 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>
- object, headers are always returned in the order they appeared in the
- original message, or in which they were added to the message later. Any
- header deleted and then re-added is always appended to the end of the
- header list.</p>
- <p>These semantic differences are intentional and are biased toward
- convenience in the most common use cases.</p>
- <p>Note that in all cases, any envelope header present in the message is not
- included in the mapping interface.</p>
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.__len__">
- <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>
- <dd><p>Return the total number of headers, including duplicates.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.__contains__">
- <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>
- <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
- done without regard to case and <em>name</em> does not include the trailing
- colon. Used for the <code class="docutils literal notranslate"><span class="pre">in</span></code> operator. For example:</p>
- <div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="s1">'message-id'</span> <span class="ow">in</span> <span class="n">myMessage</span><span class="p">:</span>
- <span class="nb">print</span><span class="p">(</span><span class="s1">'Message-ID:'</span><span class="p">,</span> <span class="n">myMessage</span><span class="p">[</span><span class="s1">'message-id'</span><span class="p">])</span>
- </pre></div>
- </div>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.__getitem__">
- <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>
- <dd><p>Return the value of the named header field. <em>name</em> does not include the
- colon field separator. If the header is missing, <code class="docutils literal notranslate"><span class="pre">None</span></code> is returned; a
- <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>
- <p>Note that if the named field appears more than once in the message’s
- headers, exactly which of those field values will be returned is
- 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
- extant headers named <em>name</em>.</p>
- <p>Using the standard (non-<code class="docutils literal notranslate"><span class="pre">compat32</span></code>) policies, the returned value is an
- 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>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.__setitem__">
- <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>
- <dd><p>Add a header to the message with field name <em>name</em> and value <em>val</em>. The
- field is appended to the end of the message’s existing headers.</p>
- <p>Note that this does <em>not</em> overwrite or delete any existing header with the same
- name. If you want to ensure that the new header is the only one present in the
- message with field name <em>name</em>, delete the field first, e.g.:</p>
- <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">'subject'</span><span class="p">]</span>
- <span class="n">msg</span><span class="p">[</span><span class="s1">'subject'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'Python roolz!'</span>
- </pre></div>
- </div>
- <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
- 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
- is made to assign a value to such a header when one already exists. This
- behavior is intentional for consistency’s sake, but do not depend on it
- as we may choose to make such assignments do an automatic deletion of the
- existing header in the future.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.__delitem__">
- <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>
- <dd><p>Delete all occurrences of the field with name <em>name</em> from the message’s
- headers. No exception is raised if the named field isn’t present in the
- headers.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.keys">
- <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>
- <dd><p>Return a list of all the message’s header field names.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.values">
- <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>
- <dd><p>Return a list of all the message’s field values.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.items">
- <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>
- <dd><p>Return a list of 2-tuples containing all the message’s field headers and
- values.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.get">
- <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>
- <dd><p>Return the value of the named header field. This is identical to
- <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
- named header is missing (<em>failobj</em> defaults to <code class="docutils literal notranslate"><span class="pre">None</span></code>).</p>
- </dd></dl>
-
- <p>Here are some additional useful header related methods:</p>
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.get_all">
- <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>
- <dd><p>Return a list of all the values for the field named <em>name</em>. If there are
- no such named headers in the message, <em>failobj</em> is returned (defaults to
- <code class="docutils literal notranslate"><span class="pre">None</span></code>).</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.add_header">
- <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>
- <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>
- except that additional header parameters can be provided as keyword
- arguments. <em>_name</em> is the header field to add and <em>_value</em> is the
- <em>primary</em> value for the header.</p>
- <p>For each item in the keyword argument dictionary <em>_params</em>, the key is
- taken as the parameter name, with underscores converted to dashes (since
- dashes are illegal in Python identifiers). Normally, the parameter will
- be added as <code class="docutils literal notranslate"><span class="pre">key="value"</span></code> unless the value is <code class="docutils literal notranslate"><span class="pre">None</span></code>, in which case
- only the key will be added.</p>
- <p>If the value contains non-ASCII characters, the charset and language may
- be explicitly controlled by specifying the value as a three tuple in the
- 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
- naming the charset to be used to encode the value, <code class="docutils literal notranslate"><span class="pre">LANGUAGE</span></code> can
- 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
- possibilities), and <code class="docutils literal notranslate"><span class="pre">VALUE</span></code> is the string value containing non-ASCII
- code points. If a three tuple is not passed and the value contains
- 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
- 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>
- <p>Here is an example:</p>
- <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">'Content-Disposition'</span><span class="p">,</span> <span class="s1">'attachment'</span><span class="p">,</span> <span class="n">filename</span><span class="o">=</span><span class="s1">'bud.gif'</span><span class="p">)</span>
- </pre></div>
- </div>
- <p>This will add a header that looks like</p>
- <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">"bud.gif"</span>
- </pre></div>
- </div>
- <p>An example of the extended interface with non-ASCII characters:</p>
- <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">'Content-Disposition'</span><span class="p">,</span> <span class="s1">'attachment'</span><span class="p">,</span>
- <span class="n">filename</span><span class="o">=</span><span class="p">(</span><span class="s1">'iso-8859-1'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'Fußballer.ppt'</span><span class="p">))</span>
- </pre></div>
- </div>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.replace_header">
- <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>
- <dd><p>Replace a header. Replace the first header found in the message that
- matches <em>_name</em>, retaining header order and field name case of the
- original header. If no matching header is found, raise a
- <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>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.get_content_type">
- <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>
- <dd><p>Return the message’s content type, coerced to lower case of the form
- <em class="mimetype">maintype/subtype</em>. If there is no <em class="mailheader">Content-Type</em>
- header in the message return the value returned by
- <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
- invalid, return <code class="docutils literal notranslate"><span class="pre">text/plain</span></code>.</p>
- <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,
- <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
- a message’s default type to be <em class="mimetype">text/plain</em> unless it appears
- inside a <em class="mimetype">multipart/digest</em> container, in which case it would
- be <em class="mimetype">message/rfc822</em>. If the <em class="mailheader">Content-Type</em> header
- 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
- type be <em class="mimetype">text/plain</em>.)</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.get_content_maintype">
- <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>
- <dd><p>Return the message’s main content type. This is the <em class="mimetype">maintype</em>
- 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>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.get_content_subtype">
- <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>
- <dd><p>Return the message’s sub-content type. This is the <em class="mimetype">subtype</em>
- 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>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.get_default_type">
- <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>
- <dd><p>Return the default content type. Most messages have a default content
- type of <em class="mimetype">text/plain</em>, except for messages that are subparts of
- <em class="mimetype">multipart/digest</em> containers. Such subparts have a default
- content type of <em class="mimetype">message/rfc822</em>.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.set_default_type">
- <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>
- <dd><p>Set the default content type. <em>ctype</em> should either be
- <em class="mimetype">text/plain</em> or <em class="mimetype">message/rfc822</em>, although this is
- not enforced. The default content type is not stored in the
- <em class="mailheader">Content-Type</em> header, so it only affects the return value of
- the <code class="docutils literal notranslate"><span class="pre">get_content_type</span></code> methods when no <em class="mailheader">Content-Type</em>
- header is present in the message.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.set_param">
- <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>
- <dd><p>Set a parameter in the <em class="mailheader">Content-Type</em> header. If the
- parameter already exists in the header, replace its value with <em>value</em>.
- When <em>header</em> is <code class="docutils literal notranslate"><span class="pre">Content-Type</span></code> (the default) and the header does not
- yet exist in the message, add it, set its value to
- <em class="mimetype">text/plain</em>, and append the new parameter value. Optional
- <em>header</em> specifies an alternative header to <em class="mailheader">Content-Type</em>.</p>
- <p>If the value contains non-ASCII characters, the charset and language may
- be explicitly specified using the optional <em>charset</em> and <em>language</em>
- 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,
- defaulting to the empty string. Both <em>charset</em> and <em>language</em> should be
- 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
- the <em>language</em>.</p>
- <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
- end of the list of headers. If <em>replace</em> is <code class="docutils literal notranslate"><span class="pre">True</span></code>, the header
- will be updated in place.</p>
- <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
- deprecated.</p>
- <p>Note that existing parameter values of headers may be accessed through
- 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
- header value (for example, <code class="docutils literal notranslate"><span class="pre">msg['Content-Type'].params['charset']</span></code>).</p>
- <div class="versionchanged">
- <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>
- </div>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.del_param">
- <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>
- <dd><p>Remove the given parameter completely from the <em class="mailheader">Content-Type</em>
- header. The header will be re-written in place without the parameter or
- its value. Optional <em>header</em> specifies an alternative to
- <em class="mailheader">Content-Type</em>.</p>
- <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
- deprecated.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.get_filename">
- <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>
- <dd><p>Return the value of the <code class="docutils literal notranslate"><span class="pre">filename</span></code> parameter of the
- <em class="mailheader">Content-Disposition</em> header of the message. If the header
- does not have a <code class="docutils literal notranslate"><span class="pre">filename</span></code> parameter, this method falls back to looking
- for the <code class="docutils literal notranslate"><span class="pre">name</span></code> parameter on the <em class="mailheader">Content-Type</em> header. If
- neither is found, or the header is missing, then <em>failobj</em> is returned.
- The returned 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>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.get_boundary">
- <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>
- <dd><p>Return the value of the <code class="docutils literal notranslate"><span class="pre">boundary</span></code> parameter of the
- <em class="mailheader">Content-Type</em> header of the message, or <em>failobj</em> if either
- the header is missing, or has no <code class="docutils literal notranslate"><span class="pre">boundary</span></code> parameter. The returned
- 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>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.set_boundary">
- <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>
- <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
- <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
- 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
- message object has no <em class="mailheader">Content-Type</em> header.</p>
- <p>Note that using this method is subtly different from deleting the old
- <em class="mailheader">Content-Type</em> header and adding a new one with the new
- 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
- the order of the <em class="mailheader">Content-Type</em> header in the list of
- headers.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.get_content_charset">
- <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>
- <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,
- coerced to lower case. If there is no <em class="mailheader">Content-Type</em> header, or if
- that header has no <code class="docutils literal notranslate"><span class="pre">charset</span></code> parameter, <em>failobj</em> is returned.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.get_charsets">
- <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>
- <dd><p>Return a list containing the character set names in the message. If the
- message is a <em class="mimetype">multipart</em>, then the list will contain one element
- for each subpart in the payload, otherwise, it will be a list of length 1.</p>
- <p>Each item in the list will be a string which is the value of the
- <code class="docutils literal notranslate"><span class="pre">charset</span></code> parameter in the <em class="mailheader">Content-Type</em> header for the
- represented subpart. If the subpart has no <em class="mailheader">Content-Type</em>
- 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
- MIME type, then that item in the returned list will be <em>failobj</em>.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.is_attachment">
- <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>
- <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
- 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>
- <div class="versionchanged">
- <p><span class="versionmodified changed">Changed in version 3.4.2: </span>is_attachment is now a method instead of a property, for consistency
- 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>
- </div>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.get_content_disposition">
- <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>
- <dd><p>Return the lowercased value (without parameters) of the message’s
- <em class="mailheader">Content-Disposition</em> header if it has one, or <code class="docutils literal notranslate"><span class="pre">None</span></code>. The
- possible values for this method are <em>inline</em>, <em>attachment</em> or <code class="docutils literal notranslate"><span class="pre">None</span></code>
- 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>
- <div class="versionadded">
- <p><span class="versionmodified added">New in version 3.5.</span></p>
- </div>
- </dd></dl>
-
- <p>The following methods relate to interrogating and manipulating the content
- (payload) of the message.</p>
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.walk">
- <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>
- <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
- iterate over all the parts and subparts of a message object tree, in
- 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
- iterator in a <code class="docutils literal notranslate"><span class="pre">for</span></code> loop; each iteration returns the next subpart.</p>
- <p>Here’s an example that prints the MIME type of every part of a multipart
- message structure:</p>
- <div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </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>
- <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>
- <span class="go">multipart/report</span>
- <span class="go">text/plain</span>
- <span class="go">message/delivery-status</span>
- <span class="go">text/plain</span>
- <span class="go">text/plain</span>
- <span class="go">message/rfc822</span>
- <span class="go">text/plain</span>
- </pre></div>
- </div>
- <p><code class="docutils literal notranslate"><span class="pre">walk</span></code> iterates over the subparts of any part where
- <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
- <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
- can see this in our example by making use of the <code class="docutils literal notranslate"><span class="pre">_structure</span></code> debug
- helper function:</p>
- <div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">email.iterators</span> <span class="kn">import</span> <span class="n">_structure</span>
- <span class="gp">>>> </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>
- <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">'multipart'</span><span class="p">,</span>
- <span class="gp">... </span> <span class="n">part</span><span class="o">.</span><span class="n">is_multipart</span><span class="p">())</span>
- <span class="go">True True</span>
- <span class="go">False False</span>
- <span class="go">False True</span>
- <span class="go">False False</span>
- <span class="go">False False</span>
- <span class="go">False True</span>
- <span class="go">False False</span>
- <span class="gp">>>> </span><span class="n">_structure</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
- <span class="go">multipart/report</span>
- <span class="go"> text/plain</span>
- <span class="go"> message/delivery-status</span>
- <span class="go"> text/plain</span>
- <span class="go"> text/plain</span>
- <span class="go"> message/rfc822</span>
- <span class="go"> text/plain</span>
- </pre></div>
- </div>
- <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
- 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
- into the subparts.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.get_body">
- <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>
- <dd><p>Return the MIME part that is the best candidate to be the “body” of the
- message.</p>
- <p><em>preferencelist</em> must be a sequence of strings from the set <code class="docutils literal notranslate"><span class="pre">related</span></code>,
- <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
- content type of the part returned.</p>
- <p>Start looking for candidate matches with the object on which the
- <code class="docutils literal notranslate"><span class="pre">get_body</span></code> method is called.</p>
- <p>If <code class="docutils literal notranslate"><span class="pre">related</span></code> is not included in <em>preferencelist</em>, consider the root
- part (or subpart of the root part) of any related encountered as a
- candidate if the (sub-)part matches a preference.</p>
- <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
- and if a part with a matching <em class="mailheader">Content-ID</em> is found, consider
- only it when looking for candidate matches. Otherwise consider only the
- first (default root) part of the <code class="docutils literal notranslate"><span class="pre">multipart/related</span></code>.</p>
- <p>If a part has a <em class="mailheader">Content-Disposition</em> header, only consider
- the part a candidate match if the value of the header is <code class="docutils literal notranslate"><span class="pre">inline</span></code>.</p>
- <p>If none of the candidates matches any of the preferences in
- <em>preferencelist</em>, return <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p>
- <p>Notes: (1) For most applications the only <em>preferencelist</em> combinations
- 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
- 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
- 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
- a <code class="docutils literal notranslate"><span class="pre">multipart/related</span></code> will return the object itself unless
- <em>preferencelist</em> has a non-default value. (3) Messages (or message parts)
- that do not specify a <em class="mailheader">Content-Type</em> or whose
- <em class="mailheader">Content-Type</em> header is invalid will be treated as if they
- 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
- return unexpected results.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.iter_attachments">
- <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>
- <dd><p>Return an iterator over all of the immediate sub-parts of the message
- that are not candidate “body” parts. That is, skip the first occurrence
- 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
- <code class="docutils literal notranslate"><span class="pre">multipart/alternative</span></code> (unless they are explicitly marked as
- attachments via <em class="mailheader">Content-Disposition: attachment</em>), and
- return all remaining parts. When applied directly to a
- <code class="docutils literal notranslate"><span class="pre">multipart/related</span></code>, return an iterator over the all the related parts
- except the root part (ie: the part pointed to by the <code class="docutils literal notranslate"><span class="pre">start</span></code> parameter,
- 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>
- parameter doesn’t match the <em class="mailheader">Content-ID</em> of any of the
- parts). When applied directly to a <code class="docutils literal notranslate"><span class="pre">multipart/alternative</span></code> or a
- non-<code class="docutils literal notranslate"><span class="pre">multipart</span></code>, return an empty iterator.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.iter_parts">
- <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>
- <dd><p>Return an iterator over all of the immediate sub-parts of the message,
- which will be empty for a non-<code class="docutils literal notranslate"><span class="pre">multipart</span></code>. (See also
- <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>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.get_content">
- <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>
- <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
- of the <em>content_manager</em>, passing self as the message object, and passing
- along any other arguments or keywords as additional arguments. If
- <em>content_manager</em> is not specified, use 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>.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.set_content">
- <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>
- <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
- of the <em>content_manager</em>, passing self as the message object, and passing
- along any other arguments or keywords as additional arguments. If
- <em>content_manager</em> is not specified, use 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>.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.make_related">
- <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>
- <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,
- moving any existing <em class="mailheader">Content-</em> headers and payload into a
- (new) first part of the <code class="docutils literal notranslate"><span class="pre">multipart</span></code>. If <em>boundary</em> is specified, use
- it as the boundary string in the multipart, otherwise leave the boundary
- to be automatically created when it is needed (for example, when the
- message is serialized).</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.make_alternative">
- <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>
- <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
- <code class="docutils literal notranslate"><span class="pre">multipart/alternative</span></code>, moving any existing <em class="mailheader">Content-</em>
- headers and payload into a (new) first part of the <code class="docutils literal notranslate"><span class="pre">multipart</span></code>. If
- <em>boundary</em> is specified, use it as the boundary string in the multipart,
- otherwise leave the boundary to be automatically created when it is
- needed (for example, when the message is serialized).</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.make_mixed">
- <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>
- <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
- <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
- <em class="mailheader">Content-</em> headers and payload into a (new) first part of the
- <code class="docutils literal notranslate"><span class="pre">multipart</span></code>. If <em>boundary</em> is specified, use it as the boundary string
- in the multipart, otherwise leave the boundary to be automatically
- created when it is needed (for example, when the message is serialized).</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.add_related">
- <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>
- <dd><p>If the message is a <code class="docutils literal notranslate"><span class="pre">multipart/related</span></code>, create a new message
- 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 <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 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
- proceed as above. If the message is 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 <em>content_manager</em> is not specified, use
- 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>.
- If the added part has no <em class="mailheader">Content-Disposition</em> header,
- add one with the value <code class="docutils literal notranslate"><span class="pre">inline</span></code>.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.add_alternative">
- <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>
- <dd><p>If the message is a <code class="docutils literal notranslate"><span class="pre">multipart/alternative</span></code>, create a new message
- 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
- <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
- 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
- <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
- 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
- <em>content_manager</em> is not specified, use 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>.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.add_attachment">
- <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>
- <dd><p>If the message is a <code class="docutils literal notranslate"><span class="pre">multipart/mixed</span></code>, create a new message 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
- <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
- 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
- <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
- above. If <em>content_manager</em> is not specified, use 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>. If the added part
- has no <em class="mailheader">Content-Disposition</em> header, add one with the value
- <code class="docutils literal notranslate"><span class="pre">attachment</span></code>. This method can be used both for explicit attachments
- (<em class="mailheader">Content-Disposition: attachment</em>) and <code class="docutils literal notranslate"><span class="pre">inline</span></code> attachments
- (<em class="mailheader">Content-Disposition: inline</em>), by passing appropriate
- options to the <code class="docutils literal notranslate"><span class="pre">content_manager</span></code>.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.clear">
- <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>
- <dd><p>Remove the payload and all of the headers.</p>
- </dd></dl>
-
- <dl class="py method">
- <dt class="sig sig-object py" id="email.message.EmailMessage.clear_content">
- <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>
- <dd><p>Remove the payload and all of the <em class="mailheader">!Content-</em> headers, leaving
- all other headers intact and in their original order.</p>
- </dd></dl>
-
- <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>
- <dl class="py attribute">
- <dt class="sig sig-object py" id="email.message.EmailMessage.preamble">
- <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>
- <dd><p>The format of a MIME document allows for some text between the blank line
- following the headers, and the first multipart boundary string. Normally,
- this text is never visible in a MIME-aware mail reader because it falls
- outside the standard MIME armor. However, when viewing the raw text of
- the message, or when viewing the message in a non-MIME aware reader, this
- text can become visible.</p>
- <p>The <em>preamble</em> attribute contains this leading extra-armor text for MIME
- 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
- after the headers but before the first boundary string, it assigns this
- text to the message’s <em>preamble</em> attribute. When 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> is writing out the plain text
- representation of a MIME message, and it finds the
- message has a <em>preamble</em> attribute, it will write this text in the area
- 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
- <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>
- <p>Note that if the message object has no preamble, the <em>preamble</em> attribute
- will be <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p>
- </dd></dl>
-
- <dl class="py attribute">
- <dt class="sig sig-object py" id="email.message.EmailMessage.epilogue">
- <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>
- <dd><p>The <em>epilogue</em> attribute acts the same way as the <em>preamble</em> attribute,
- except that it contains text that appears between the last boundary and
- 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>,
- if there is no epilog text this attribute will be <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p>
- </dd></dl>
-
- <dl class="py attribute">
- <dt class="sig sig-object py" id="email.message.EmailMessage.defects">
- <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>
- <dd><p>The <em>defects</em> attribute contains a list of all the problems found when
- 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
- of the possible parsing defects.</p>
- </dd></dl>
-
- </dd></dl>
-
- <dl class="py class">
- <dt class="sig sig-object py" id="email.message.MIMEPart">
- <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>
- <dd><p>This class represents a subpart of a MIME message. It is identical to
- <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
- 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
- not need their own <em class="mailheader">MIME-Version</em> headers.</p>
- </dd></dl>
-
- <p class="rubric">Footnotes</p>
- <aside class="footnote-list brackets">
- <aside class="footnote brackets" id="id2" role="doc-footnote">
- <span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id1">1</a><span class="fn-bracket">]</span></span>
- <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
- <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>
- </aside>
- </aside>
- </section>
-
-
- <div class="clearer"></div>
- </div>
- </div>
- </div>
- <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
- <div class="sphinxsidebarwrapper">
- <div>
- <h4>Previous topic</h4>
- <p class="topless"><a href="email.html"
- 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>
- </div>
- <div>
- <h4>Next topic</h4>
- <p class="topless"><a href="email.parser.html"
- title="next chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">email.parser</span></code>: Parsing email messages</a></p>
- </div>
- <div role="note" aria-label="source link">
- <h3>This Page</h3>
- <ul class="this-page-menu">
- <li><a href="../bugs.html">Report a Bug</a></li>
- <li>
- <a href="https://github.com/python/cpython/blob/main/Doc/library/email.message.rst"
- rel="nofollow">Show Source
- </a>
- </li>
- </ul>
- </div>
- </div>
- <div id="sidebarbutton" title="Collapse sidebar">
- <span>«</span>
- </div>
-
- </div>
- <div class="clearer"></div>
- </div>
- <div class="related" role="navigation" aria-label="related navigation">
- <h3>Navigation</h3>
- <ul>
- <li class="right" style="margin-right: 10px">
- <a href="../genindex.html" title="General Index"
- >index</a></li>
- <li class="right" >
- <a href="../py-modindex.html" title="Python Module Index"
- >modules</a> |</li>
- <li class="right" >
- <a href="email.parser.html" title="email.parser: Parsing email messages"
- >next</a> |</li>
- <li class="right" >
- <a href="email.html" title="email — An email and MIME handling package"
- >previous</a> |</li>
-
- <li><img src="../_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"/></li>
- <li><a href="https://www.python.org/">Python</a> »</li>
- <li class="switchers">
- <div class="language_switcher_placeholder"></div>
- <div class="version_switcher_placeholder"></div>
- </li>
- <li>
-
- </li>
- <li id="cpython-language-and-version">
- <a href="../index.html">3.12.3 Documentation</a> »
- </li>
-
- <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> »</li>
- <li class="nav-item nav-item-2"><a href="netdata.html" >Internet Data Handling</a> »</li>
- <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> »</li>
- <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>
- <li class="right">
-
-
- <div class="inline-search" role="search">
- <form class="inline-search" action="../search.html" method="get">
- <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box" />
- <input type="submit" value="Go" />
- </form>
- </div>
- |
- </li>
- <li class="right">
- <label class="theme-selector-label">
- Theme
- <select class="theme-selector" oninput="activateTheme(this.value)">
- <option value="auto" selected>Auto</option>
- <option value="light">Light</option>
- <option value="dark">Dark</option>
- </select>
- </label> |</li>
-
- </ul>
- </div>
- <div class="footer">
- ©
- <a href="../copyright.html">
-
- Copyright
-
- </a>
- 2001-2024, Python Software Foundation.
- <br />
- This page is licensed under the Python Software Foundation License Version 2.
- <br />
- Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
- <br />
-
- See <a href="/license.html">History and License</a> for more information.<br />
-
-
- <br />
-
- The Python Software Foundation is a non-profit corporation.
- <a href="https://www.python.org/psf/donations/">Please donate.</a>
- <br />
- <br />
- Last updated on Apr 09, 2024 (13:47 UTC).
-
- <a href="/bugs.html">Found a bug</a>?
-
- <br />
-
- Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.2.6.
- </div>
-
- </body>
- </html>
|