{"title":"メールを送信する","version":"4.2","locale":"ja","docname":"topics/email","url":"/ja/4.2/topics/email/","canonical":"https://djangodocs.dev/ja/4.2/topics/email/","summary":"Although Python provides a mail sending interface via the smtplib module, Django provides a couple of light wrappers over it. These wrappers are provided to make…","html":"<span id=\"sending-email\"></span><h1>メールを送信する<a class=\"heading-anchor\" href=\"#module-django.core.mail\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Although Python provides a mail sending interface via the <a class=\"reference external\" href=\"https://docs.python.org/3/library/smtplib.html#module-smtplib\" title=\"(in Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">smtplib</span></code></a>\nmodule, Django provides a couple of light wrappers over it. These wrappers are\nprovided to make sending email extra quick, to help test email sending during\ndevelopment, and to provide support for platforms that can't use SMTP.</p>\n<p>コードは <code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.mail</span></code> モジュールにあります。</p>\n<section id=\"quick-example\">\n<h2>簡単な例<a class=\"heading-anchor\" href=\"#quick-example\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>次の 2 文を書くことで、</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.mail</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">send_mail</span>\n\n<span class=\"n\">send_mail</span><span class=\"p\">(</span>\n    <span class=\"s2\">&quot;Subject here&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;Here is the message.&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;from@example.com&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">[</span><span class=\"s2\">&quot;to@example.com&quot;</span><span class=\"p\">],</span>\n    <span class=\"n\">fail_silently</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">,</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>設定内の <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_HOST\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_HOST</span></code></a> と <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_PORT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_PORT</span></code></a> で指定された SMTP ホストとポートを使用して、メールが送信されます。<a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_HOST_USER\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_HOST_USER</span></code></a> と <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_HOST_PASSWORD\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_HOST_PASSWORD</span></code></a> が指定されている場合は、SMTP サーバーの認証に使われます。そして、<a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_USE_TLS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_USE_TLS</span></code></a> と <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_USE_SSL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_USE_SSL</span></code></a> 設定により、セキュアコネクションを使うかどうかをコントロールします。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.mail</span></code> で送信されるメールの文字セットは、<a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-DEFAULT_CHARSET\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_CHARSET</span></code></a> 設定の値にセットされます。</p>\n</aside>\n</section>\n<section id=\"send-mail\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">send_mail()</span></code><a class=\"heading-anchor\" href=\"#send-mail\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.core.mail.send_mail\">\n<span class=\"sig-name descname\"><span class=\"pre\">send_mail</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">subject</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">message</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">from_email</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">recipient_list</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">fail_silently</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\">auth_user</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\">auth_password</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\">connection</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\">html_message</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=\"heading-anchor\" href=\"#django.core.mail.send_mail\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>In most cases, you can send email using <code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.mail.send_mail()</span></code>.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">subject</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">message</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">from_email</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">recipient_list</span></code> の 4 つの引数は必須です。</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">subject</span></code>: 文字列。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">message</span></code>: 文字列。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">from_email</span></code>: A string. If <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, Django will use the value of the\n<a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-DEFAULT_FROM_EMAIL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_FROM_EMAIL</span></code></a> setting.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">recipient_list</span></code>: メールアドレスを表す文字列のリスト。<code class=\"docutils literal notranslate\"><span class=\"pre\">recipient_list</span></code> の各メンバーは、メールメッセージの &quot;To:&quot; フィールドで他の受信者を見ることができます。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">fail_silently</span></code>: A boolean. When it's <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">send_mail()</span></code> will raise\nan <a class=\"reference external\" href=\"https://docs.python.org/3/library/smtplib.html#smtplib.SMTPException\" title=\"(in Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">smtplib.SMTPException</span></code></a> if an error occurs. See the <a class=\"reference external\" href=\"https://docs.python.org/3/library/smtplib.html#module-smtplib\" title=\"(in Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">smtplib</span></code></a>\ndocs for a list of possible exceptions, all of which are subclasses of\n<a class=\"reference external\" href=\"https://docs.python.org/3/library/smtplib.html#smtplib.SMTPException\" title=\"(in Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">SMTPException</span></code></a>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">auth_user</span></code>: SMTP サーバー認証のためのユーザー名で、省略可能。指定されなかった場合、Django <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_HOST_USER\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_HOST_USER</span></code></a> 設定の値を使います。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">auth_password</span></code>: SMTP サーバー認証のためのパスワードで、省略可能。指定されなかった場合、Django は <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_HOST_PASSWORD\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_HOST_PASSWORD</span></code></a> 設定の値を使います。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection</span></code>: メール送信のために使うバックエンドで、省略可能。指定しなかった場合、デフォルトのバックエンドのインスタンスが使われます。詳しくは <a class=\"reference internal\" href=\"#topic-email-backends\"><span class=\"std std-ref\">メールのバックエンド</span></a> を参照してください。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">html_message</span></code>: <code class=\"docutils literal notranslate\"><span class=\"pre\">html_message</span></code> が指定された場合、送信されるメールは <em class=\"mimetype\">multipart/alternative</em> となり、<em class=\"mimetype\">text/plain</em> コンテンツタイプを持つ <code class=\"docutils literal notranslate\"><span class=\"pre\">message</span></code> と <em class=\"mimetype\">text/html</em> コンテンツタイプを持つ <code class=\"docutils literal notranslate\"><span class=\"pre\">html_message</span></code> を合わせ持つものになります。</p></li>\n</ul>\n<p>返り値は、送信に成功したメッセージの数です (送信されるメッセージが 1 つだけの場合もあるため、<code class=\"docutils literal notranslate\"><span class=\"pre\">0</span></code> や <code class=\"docutils literal notranslate\"><span class=\"pre\">1</span></code> になることもあります)。</p>\n</section>\n<section id=\"send-mass-mail\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">send_mass_mail()</span></code><a class=\"heading-anchor\" href=\"#send-mass-mail\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.core.mail.send_mass_mail\">\n<span class=\"sig-name descname\"><span class=\"pre\">send_mass_mail</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">datatuple</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">fail_silently</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\">auth_user</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\">auth_password</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\">connection</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=\"heading-anchor\" href=\"#django.core.mail.send_mass_mail\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.mail.send_mass_mail()</span></code> は、大量のメール送信を扱うために用意されています。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">datatuple</span></code> はメッセージの集合を表すタプルです。タプル内の各要素は、それぞれ1種類のメッセージを表すタプルであり、次の形式を持ちます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"p\">(</span><span class=\"n\">subject</span><span class=\"p\">,</span> <span class=\"n\">message</span><span class=\"p\">,</span> <span class=\"n\">from_email</span><span class=\"p\">,</span> <span class=\"n\">recipient_list</span><span class=\"p\">)</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">fail_silently</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">auth_user</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">auth_password</span></code> の 3 つは、<a class=\"reference internal\" href=\"#django.core.mail.send_mail\" title=\"django.core.mail.send_mail\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">send_mail()</span></code></a> と同じように機能します。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">datatuple</span></code> に含まれる各要素は、最終的には別々のメールメッセージとなります。<a class=\"reference internal\" href=\"#django.core.mail.send_mail\" title=\"django.core.mail.send_mail\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">send_mail()</span></code></a> における挙動と同じく、<code class=\"docutils literal notranslate\"><span class=\"pre\">recipient_list</span></code> 内の受信者は、メールメッセージの &quot;To:&quot; フィールドに書かれている他の受信者のアドレスを見ることができます。</p>\n<p>たとえば、次のコードは異なる 2 つのメッセージを 異なる 2 つの受信者のセットに送信します。しかし、メールサーバーへの接続は 1 つしか開かれません。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">message1</span> <span class=\"o\">=</span> <span class=\"p\">(</span>\n    <span class=\"s2\">&quot;Subject here&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;Here is the message&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;from@example.com&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">[</span><span class=\"s2\">&quot;first@example.com&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;other@example.com&quot;</span><span class=\"p\">],</span>\n<span class=\"p\">)</span>\n<span class=\"n\">message2</span> <span class=\"o\">=</span> <span class=\"p\">(</span>\n    <span class=\"s2\">&quot;Another Subject&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;Here is another message&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;from@example.com&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">[</span><span class=\"s2\">&quot;second@test.com&quot;</span><span class=\"p\">],</span>\n<span class=\"p\">)</span>\n<span class=\"n\">send_mass_mail</span><span class=\"p\">((</span><span class=\"n\">message1</span><span class=\"p\">,</span> <span class=\"n\">message2</span><span class=\"p\">),</span> <span class=\"n\">fail_silently</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>戻り値は、メッセージ送信に成功した数です。</p>\n<section id=\"send-mass-mail-vs-send-mail\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">send_mass_mail()</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">send_mail()</span></code> の比較<a class=\"heading-anchor\" href=\"#send-mass-mail-vs-send-mail\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"#django.core.mail.send_mass_mail\" title=\"django.core.mail.send_mass_mail\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">send_mass_mail()</span></code></a> と <a class=\"reference internal\" href=\"#django.core.mail.send_mail\" title=\"django.core.mail.send_mail\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">send_mail()</span></code></a> 違いは、<a class=\"reference internal\" href=\"#django.core.mail.send_mail\" title=\"django.core.mail.send_mail\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">send_mail()</span></code></a> が実行されるごとに毎回接続を開くのに対して、<a class=\"reference internal\" href=\"#django.core.mail.send_mass_mail\" title=\"django.core.mail.send_mass_mail\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">send_mass_mail()</span></code></a> はすべてのメッセージに対して 1 つだけ接続を使います。これにより、<a class=\"reference internal\" href=\"#django.core.mail.send_mass_mail\" title=\"django.core.mail.send_mass_mail\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">send_mass_mail()</span></code></a> の方が若干効率がよくなっています。</p>\n</section>\n</section>\n<section id=\"mail-admins\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">mail_admins()</span></code><a class=\"heading-anchor\" href=\"#mail-admins\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.core.mail.mail_admins\">\n<span class=\"sig-name descname\"><span class=\"pre\">mail_admins</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">subject</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">message</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">fail_silently</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\">connection</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\">html_message</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=\"heading-anchor\" href=\"#django.core.mail.mail_admins\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.mail.mail_admins()</span></code> は、<a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-ADMINS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">ADMINS</span></code></a> 設定で定義されているサイト管理者 (admin) に対してメールを送信するためのショートカットです。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">mail_admins()</span></code> prefixes the subject with the value of the\n<a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_SUBJECT_PREFIX\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_SUBJECT_PREFIX</span></code></a> setting, which is <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;[Django]</span> <span class=\"pre\">&quot;</span></code> by default.</p>\n<p>The &quot;From:&quot; header of the email will be the value of the\n<a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-SERVER_EMAIL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SERVER_EMAIL</span></code></a> setting.</p>\n<p>This method exists for convenience and readability.</p>\n<p>If <code class=\"docutils literal notranslate\"><span class=\"pre\">html_message</span></code> is provided, the resulting email will be a\n<em class=\"mimetype\">multipart/alternative</em> email with <code class=\"docutils literal notranslate\"><span class=\"pre\">message</span></code> as the\n<em class=\"mimetype\">text/plain</em> content type and <code class=\"docutils literal notranslate\"><span class=\"pre\">html_message</span></code> as the\n<em class=\"mimetype\">text/html</em> content type.</p>\n</section>\n<section id=\"mail-managers\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">mail_managers()</span></code><a class=\"heading-anchor\" href=\"#mail-managers\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.core.mail.mail_managers\">\n<span class=\"sig-name descname\"><span class=\"pre\">mail_managers</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">subject</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">message</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">fail_silently</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\">connection</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\">html_message</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=\"heading-anchor\" href=\"#django.core.mail.mail_managers\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.mail.mail_managers()</span></code> は、<code class=\"docutils literal notranslate\"><span class=\"pre\">mail_admins()</span></code> とほぼ同じで、<a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-MANAGERS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MANAGERS</span></code></a> 設定で定義されているサイト管理者 (manager) にメールを送信します。</p>\n</section>\n<section id=\"examples\">\n<h2>例<a class=\"heading-anchor\" href=\"#examples\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>以下の例は、<a class=\"reference external\" href=\"mailto:john&#37;&#52;&#48;example&#46;com\">john<span>&#64;</span>example<span>&#46;</span>com</a> と <a class=\"reference external\" href=\"mailto:jane&#37;&#52;&#48;example&#46;com\">jane<span>&#64;</span>example<span>&#46;</span>com</a> に1つのメールを送信します。2人とも &quot;To:&quot; 内に宛先が見られます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">send_mail</span><span class=\"p\">(</span>\n    <span class=\"s2\">&quot;Subject&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;Message.&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;from@example.com&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">[</span><span class=\"s2\">&quot;john@example.com&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;jane@example.com&quot;</span><span class=\"p\">],</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>次の例は、<a class=\"reference external\" href=\"mailto:john&#37;&#52;&#48;example&#46;com\">john<span>&#64;</span>example<span>&#46;</span>com</a> と <a class=\"reference external\" href=\"mailto:jane&#37;&#52;&#48;example&#46;com\">jane<span>&#64;</span>example<span>&#46;</span>com</a> にメールを送信しますが、受信者はどちらも個別のメールを受け取ります。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">datatuple</span> <span class=\"o\">=</span> <span class=\"p\">(</span>\n    <span class=\"p\">(</span><span class=\"s2\">&quot;Subject&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Message.&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;from@example.com&quot;</span><span class=\"p\">,</span> <span class=\"p\">[</span><span class=\"s2\">&quot;john@example.com&quot;</span><span class=\"p\">]),</span>\n    <span class=\"p\">(</span><span class=\"s2\">&quot;Subject&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Message.&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;from@example.com&quot;</span><span class=\"p\">,</span> <span class=\"p\">[</span><span class=\"s2\">&quot;jane@example.com&quot;</span><span class=\"p\">]),</span>\n<span class=\"p\">)</span>\n<span class=\"n\">send_mass_mail</span><span class=\"p\">(</span><span class=\"n\">datatuple</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"preventing-header-injection\">\n<h2>ヘッダインジェクションを防止する<a class=\"heading-anchor\" href=\"#preventing-header-injection\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><a class=\"reference external\" href=\"http://www.nyphp.org/phundamentals/8_Preventing-Email-Header-Injection.html\">ヘッダインジェクション</a> は、攻撃者が 、スクリプトで生成されたメールメッセージの &quot;To:&quot; と &quot;From:&quot; をコントロールするために、メールヘッダを挿入してしまうセキュリティ上の脆弱性です。</p>\n<p>上述した Django のメール機能は、ヘッダー値の改行を禁止することによってヘッダインジェクションを防ぎます。 <code class=\"docutils literal notranslate\"><span class=\"pre\">subject</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">from_email</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">recipient_list</span></code> のいずれかに 改行 (Unix、Windows ないし Mac のスタイル) が含まれている場合、email 関数 (例えば <a class=\"reference internal\" href=\"#django.core.mail.send_mail\" title=\"django.core.mail.send_mail\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">send_mail()</span></code></a>) は <code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.mail.BadHeaderError</span></code> (<code class=\"docutils literal notranslate\"><span class=\"pre\">ValueError</span></code> のサブクラス) 投げるため、メールは送信されません。メール送信を行う関数にデータを渡す前に、開発者は責任を持ってすべてのデータを検証しておく必要があります。</p>\n<p>If a <code class=\"docutils literal notranslate\"><span class=\"pre\">message</span></code> contains headers at the start of the string, the headers will\nbe printed as the first bit of the email message.</p>\n<p>次の例は、リクエストの POST データから <code class=\"docutils literal notranslate\"><span class=\"pre\">subject</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">message</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">from_email</span></code> を取得し、それを <a class=\"reference external\" href=\"mailto:admin&#37;&#52;&#48;example&#46;com\">admin<span>&#64;</span>example<span>&#46;</span>com</a> に送信し、完了したら &quot;/contact/thanks/&quot; にリダイレクトします。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.mail</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">BadHeaderError</span><span class=\"p\">,</span> <span class=\"n\">send_mail</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HttpResponse</span><span class=\"p\">,</span> <span class=\"n\">HttpResponseRedirect</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">send_email</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"n\">subject</span> <span class=\"o\">=</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">POST</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">message</span> <span class=\"o\">=</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">POST</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;message&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">from_email</span> <span class=\"o\">=</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">POST</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;from_email&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">if</span> <span class=\"n\">subject</span> <span class=\"ow\">and</span> <span class=\"n\">message</span> <span class=\"ow\">and</span> <span class=\"n\">from_email</span><span class=\"p\">:</span>\n        <span class=\"k\">try</span><span class=\"p\">:</span>\n            <span class=\"n\">send_mail</span><span class=\"p\">(</span><span class=\"n\">subject</span><span class=\"p\">,</span> <span class=\"n\">message</span><span class=\"p\">,</span> <span class=\"n\">from_email</span><span class=\"p\">,</span> <span class=\"p\">[</span><span class=\"s2\">&quot;admin@example.com&quot;</span><span class=\"p\">])</span>\n        <span class=\"k\">except</span> <span class=\"n\">BadHeaderError</span><span class=\"p\">:</span>\n            <span class=\"k\">return</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"s2\">&quot;Invalid header found.&quot;</span><span class=\"p\">)</span>\n        <span class=\"k\">return</span> <span class=\"n\">HttpResponseRedirect</span><span class=\"p\">(</span><span class=\"s2\">&quot;/contact/thanks/&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">else</span><span class=\"p\">:</span>\n        <span class=\"c1\"># In reality we&#39;d use a form class</span>\n        <span class=\"c1\"># to get proper validation errors.</span>\n        <span class=\"k\">return</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"s2\">&quot;Make sure all fields are entered and valid.&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"the-emailmessage-class\">\n<span id=\"emailmessage-and-smtpconnection\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code> クラス<a class=\"heading-anchor\" href=\"#the-emailmessage-class\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django の <a class=\"reference internal\" href=\"#django.core.mail.send_mail\" title=\"django.core.mail.send_mail\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">send_mail()</span></code></a> と <a class=\"reference internal\" href=\"#django.core.mail.send_mass_mail\" title=\"django.core.mail.send_mass_mail\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">send_mass_mail()</span></code></a> 関数は <a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code></a> クラスを実際に使うための小さなラッパーです。</p>\n<p><a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code></a> クラスの機能のすべてが <a class=\"reference internal\" href=\"#django.core.mail.send_mail\" title=\"django.core.mail.send_mail\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">send_mail()</span></code></a> やその他のラッパーで使用可能というわけではありません。高度な機能を使いたい場合 (例えば BCC の利用、ファイル添付やマルチパートのメールなど) <a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code></a> のインスタンスを直接作成する必要があります。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>これは設計特性です。<a class=\"reference internal\" href=\"#django.core.mail.send_mail\" title=\"django.core.mail.send_mail\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">send_mail()</span></code></a> およびその関連の関数は、元は Django が提供した唯一のインタフェースでした。しかし、受け入れるパラメータのリストが次第に肥大化してきてしまったので、よりオブジェクト指向的な設計に移行し、元の関数は後方互換性確保のためだけに残すことになりました。</p>\n</aside>\n<p><a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code></a> はメールメッセージ本体を作成する役割を担っており、その後、<a class=\"reference internal\" href=\"#topic-email-backends\"><span class=\"std std-ref\">メールのバックエンド</span></a> がメールを送信する役目を果たします。</p>\n<p>For convenience, <a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code></a> provides a <code class=\"docutils literal notranslate\"><span class=\"pre\">send()</span></code>\nmethod for sending a single email. If you need to send multiple messages, the\nemail backend API <a class=\"reference internal\" href=\"#topics-sending-multiple-emails\"><span class=\"std std-ref\">provides an alternative</span></a>.</p>\n<section id=\"emailmessage-objects\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code> オブジェクト<a class=\"heading-anchor\" href=\"#emailmessage-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.mail.EmailMessage\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">EmailMessage</span></span><a class=\"heading-anchor\" href=\"#django.core.mail.EmailMessage\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code></a> クラスは、以下のパラメータで (省略可能な引数が使われた場合、その順番で) 初期化されます。全てのパラメータは省略可能で、<code class=\"docutils literal notranslate\"><span class=\"pre\">send()</span></code> メソッドを呼ぶ前のタイミングでセットされます。</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">subject</span></code>: メールの件名の行。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">body</span></code>: 本文のテキスト。プレーンテキストのメッセージでなければなりません。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">from_email</span></code>: The sender's address. Both <code class=\"docutils literal notranslate\"><span class=\"pre\">fred&#64;example.com</span></code> and\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;Fred&quot;</span> <span class=\"pre\">&lt;fred&#64;example.com&gt;</span></code> forms are legal. If omitted, the\n<a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-DEFAULT_FROM_EMAIL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_FROM_EMAIL</span></code></a> setting is used.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">to</span></code>: 受信者のメールアドレスのリストまたはタプル。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">bcc</span></code>: メールを送信するときに &quot;Bcc&quot; ヘッダ内で使われるメールアドレスのリストまたはタプル。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection</span></code>: メールバックエンドのインスタンス。複数のメッセージに同一の接続を使いたいときに指定します。省略した場合、<code class=\"docutils literal notranslate\"><span class=\"pre\">send()</span></code> が呼ばれる時に新しい接続が生成されます。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">attachments</span></code>: A list of attachments to put on the message. These can\nbe either <a class=\"reference external\" href=\"https://docs.python.org/3/library/email.mime.html#email.mime.base.MIMEBase\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MIMEBase</span></code></a> instances, or <code class=\"docutils literal notranslate\"><span class=\"pre\">(filename,</span>\n<span class=\"pre\">content,</span> <span class=\"pre\">mimetype)</span></code> triples.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">headers</span></code>: メッセージに追加するヘッダーの辞書。キーはヘッダ名、値はヘッダ値です。メールメッセージに対して適切なヘッダ名と値にするのは、呼び出す側の責任です。対応する属性は <code class=\"docutils literal notranslate\"><span class=\"pre\">extra_headers</span></code> です。</p></li>\n<li><p>メールを送信するときに &quot;Cc&quot; ヘッダ内で使われる、受信者のアドレスのリストまたはタプル。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">reply_to</span></code>: メールを送信するときに &quot;Reply-To&quot; ヘッダ内で使われる、受信者のアドレスのリストまたはタプル。</p></li>\n</ul>\n<p>例:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.mail</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">EmailMessage</span>\n\n<span class=\"n\">email</span> <span class=\"o\">=</span> <span class=\"n\">EmailMessage</span><span class=\"p\">(</span>\n    <span class=\"s2\">&quot;Hello&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;Body goes here&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;from@example.com&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">[</span><span class=\"s2\">&quot;to1@example.com&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;to2@example.com&quot;</span><span class=\"p\">],</span>\n    <span class=\"p\">[</span><span class=\"s2\">&quot;bcc@example.com&quot;</span><span class=\"p\">],</span>\n    <span class=\"n\">reply_to</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;another@example.com&quot;</span><span class=\"p\">],</span>\n    <span class=\"n\">headers</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;Message-ID&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;foo&quot;</span><span class=\"p\">},</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>このクラスには以下のメソッドがあります。</p>\n<ul>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">send(fail_silently=False)</span></code> sends the message. If a connection was\nspecified when the email was constructed, that connection will be used.\nOtherwise, an instance of the default backend will be instantiated and\nused. If the keyword argument <code class=\"docutils literal notranslate\"><span class=\"pre\">fail_silently</span></code> is <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, exceptions\nraised while sending the message will be quashed. An empty list of\nrecipients will not raise an exception. It will return <code class=\"docutils literal notranslate\"><span class=\"pre\">1</span></code> if the message\nwas sent successfully, otherwise <code class=\"docutils literal notranslate\"><span class=\"pre\">0</span></code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">message()</span></code> constructs a <code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.mail.SafeMIMEText</span></code> object (a\nsubclass of Python's <a class=\"reference external\" href=\"https://docs.python.org/3/library/email.mime.html#email.mime.text.MIMEText\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MIMEText</span></code></a> class) or a\n<code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.mail.SafeMIMEMultipart</span></code> object holding the message to be\nsent. If you ever need to extend the\n<a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code></a> class, you'll probably want to\noverride this method to put the content you want into the MIME object.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">recipients()</span></code> は、<code class=\"docutils literal notranslate\"><span class=\"pre\">to</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">cc</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">bcc</span></code> のいずれかの属性に記録されている、メッセージの全ての受信者のリストを返します。サブクラス化するときには、メッセージの送信時に SMTP サーバが受信者の完全な一覧を必要とするため、このメソッドもオーバーライドする必要があります。クラス内で受信者を指定する別の方法を追加する場合は、このメソッドからも返される必要があります。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">attach()</span></code> は新しい添付ファイルを作成し、メッセージに追加します。<code class=\"docutils literal notranslate\"><span class=\"pre\">attach()</span></code> を呼ぶには2 つの方法があります。</p>\n<ul>\n<li><p>You can pass it a single argument that is a\n<a class=\"reference external\" href=\"https://docs.python.org/3/library/email.mime.html#email.mime.base.MIMEBase\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MIMEBase</span></code></a> instance. This will be inserted directly\ninto the resulting message.</p></li>\n<li><p>もしくは、<code class=\"docutils literal notranslate\"><span class=\"pre\">attach()</span></code> の 3 つの引数を引き渡します: <code class=\"docutils literal notranslate\"><span class=\"pre\">filename</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">content</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">mimetype</span></code> です。<code class=\"docutils literal notranslate\"><span class=\"pre\">filename</span></code> は、メール内に表示される添付ファイルの名前です。<code class=\"docutils literal notranslate\"><span class=\"pre\">content``は、添付ファイル内に含まれるデータです。``mimetype</span></code> は添付ファイルに対する MIME タイプで、省略可能です。<code class=\"docutils literal notranslate\"><span class=\"pre\">mimetype</span></code> を省略した場合、MIME コンテンツタイプは添付ファイルのファイル名から推測されます。</p>\n<p>例:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">message</span><span class=\"o\">.</span><span class=\"n\">attach</span><span class=\"p\">(</span><span class=\"s2\">&quot;design.png&quot;</span><span class=\"p\">,</span> <span class=\"n\">img_data</span><span class=\"p\">,</span> <span class=\"s2\">&quot;image/png&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>If you specify a <code class=\"docutils literal notranslate\"><span class=\"pre\">mimetype</span></code> of <em class=\"mimetype\">message/rfc822</em>, it will also\naccept <a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.core.mail.EmailMessage</span></code></a> and\n<a class=\"reference external\" href=\"https://docs.python.org/3/library/email.compat32-message.html#email.message.Message\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">email.message.Message</span></code></a>.</p>\n<p>For a <code class=\"docutils literal notranslate\"><span class=\"pre\">mimetype</span></code> starting with <em class=\"mimetype\">text/</em>, content is expected to\nbe a string. Binary data will be decoded using UTF-8, and if that fails,\nthe MIME type will be changed to <em class=\"mimetype\">application/octet-stream</em> and\nthe data will be attached unchanged.</p>\n<p>In addition, <em class=\"mimetype\">message/rfc822</em> attachments will no longer be\nbase64-encoded in violation of <span class=\"target\" id=\"index-0\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc2046.html#section-5.2.1\"><strong>RFC 2046 Section 5.2.1</strong></a>, which can cause\nissues with displaying the attachments in <a class=\"reference external\" href=\"https://bugzilla.gnome.org/show_bug.cgi?id=651197\">Evolution</a> and <a class=\"reference external\" href=\"https://bugzilla.mozilla.org/show_bug.cgi?id=333880\">Thunderbird</a>.</p>\n</li>\n</ul>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">attach_file()</span></code> creates a new attachment using a file from your\nfilesystem. Call it with the path of the file to attach and, optionally,\nthe MIME type to use for the attachment. If the MIME type is omitted, it\nwill be guessed from the filename. You can use it like this:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">message</span><span class=\"o\">.</span><span class=\"n\">attach_file</span><span class=\"p\">(</span><span class=\"s2\">&quot;/images/weather_map.png&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>For MIME types starting with <em class=\"mimetype\">text/</em>, binary data is handled as in\n<code class=\"docutils literal notranslate\"><span class=\"pre\">attach()</span></code>.</p>\n</li>\n</ul>\n<section id=\"sending-alternative-content-types\">\n<h4>代替のコンテンツタイプを送信する<a class=\"heading-anchor\" href=\"#sending-alternative-content-types\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>メール内にコンテンツの複数のバージョンを入れておくのが便利です; 古典的な手法では、メッセージをテキストと HTML の両方のバージョンで送信します。 Django のメールのライブラリで、<code class=\"docutils literal notranslate\"><span class=\"pre\">EmailMultiAlternatives</span></code> を使ってこれを実現できます。この <a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code></a> のサブクラスには、<code class=\"docutils literal notranslate\"><span class=\"pre\">attach_alternative()</span></code> があり、E メール内のメッセージ本文の別バージョンを追加することができます。(クラスの初期化を含む) 他のメソッドは <a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code></a> から直接継承されます。</p>\n<p>テキストと HTML の組み合わせを送るには、以下のように書きます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.mail</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">EmailMultiAlternatives</span>\n\n<span class=\"n\">subject</span><span class=\"p\">,</span> <span class=\"n\">from_email</span><span class=\"p\">,</span> <span class=\"n\">to</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;hello&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;from@example.com&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;to@example.com&quot;</span>\n<span class=\"n\">text_content</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;This is an important message.&quot;</span>\n<span class=\"n\">html_content</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;&lt;p&gt;This is an &lt;strong&gt;important&lt;/strong&gt; message.&lt;/p&gt;&quot;</span>\n<span class=\"n\">msg</span> <span class=\"o\">=</span> <span class=\"n\">EmailMultiAlternatives</span><span class=\"p\">(</span><span class=\"n\">subject</span><span class=\"p\">,</span> <span class=\"n\">text_content</span><span class=\"p\">,</span> <span class=\"n\">from_email</span><span class=\"p\">,</span> <span class=\"p\">[</span><span class=\"n\">to</span><span class=\"p\">])</span>\n<span class=\"n\">msg</span><span class=\"o\">.</span><span class=\"n\">attach_alternative</span><span class=\"p\">(</span><span class=\"n\">html_content</span><span class=\"p\">,</span> <span class=\"s2\">&quot;text/html&quot;</span><span class=\"p\">)</span>\n<span class=\"n\">msg</span><span class=\"o\">.</span><span class=\"n\">send</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>デフォルトでは、<a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code></a> 内の <code class=\"docutils literal notranslate\"><span class=\"pre\">body</span></code> パラメータの MIME タイプは <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;text/plain&quot;</span></code> です。この設定だとメールクライアントにかかわらず全ての受信者がメールを読むことができるので、このままにしておくのが実用的です。しかし、受信者が代替のコンテンツタイプを扱えることが確かな場合には、<a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code></a> の <code class=\"docutils literal notranslate\"><span class=\"pre\">content_subtype</span></code> 属性を使ってメインのコンテンツタイプを変更することもできます。主なタイプは常に <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;text&quot;</span></code> ですが、サブタイプを変更することができます。例えば:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">msg</span> <span class=\"o\">=</span> <span class=\"n\">EmailMessage</span><span class=\"p\">(</span><span class=\"n\">subject</span><span class=\"p\">,</span> <span class=\"n\">html_content</span><span class=\"p\">,</span> <span class=\"n\">from_email</span><span class=\"p\">,</span> <span class=\"p\">[</span><span class=\"n\">to</span><span class=\"p\">])</span>\n<span class=\"n\">msg</span><span class=\"o\">.</span><span class=\"n\">content_subtype</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;html&quot;</span>  <span class=\"c1\"># Main content is now text/html</span>\n<span class=\"n\">msg</span><span class=\"o\">.</span><span class=\"n\">send</span><span class=\"p\">()</span>\n</code></pre></div>\n</section>\n</section>\n</section>\n<section id=\"email-backends\">\n<span id=\"topic-email-backends\"></span><h2>メールのバックエンド<a class=\"heading-anchor\" href=\"#email-backends\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>実際のメール送信は、メールバックエンドによって処理されます。</p>\n<p>メールバックエンドのクラスには以下のメソッドがあります:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">open()</span></code> は、長寿命のメール送信の接続をインスタンス化します。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">close()</span></code> は、現在のメール送信の接続を閉じます。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">send_messages(email_messages)</span></code> sends a list of\n<a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code></a> objects. If the connection is\nnot open, this call will implicitly open the connection, and close the\nconnection afterward. If the connection is already open, it will be\nleft open after mail has been sent.</p></li>\n</ul>\n<p>コンテキストマネジャーとしても使うことができ、必要に応じて自動的に <code class=\"docutils literal notranslate\"><span class=\"pre\">open()</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">close()</span></code> 呼びます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">mail</span>\n\n<span class=\"k\">with</span> <span class=\"n\">mail</span><span class=\"o\">.</span><span class=\"n\">get_connection</span><span class=\"p\">()</span> <span class=\"k\">as</span> <span class=\"n\">connection</span><span class=\"p\">:</span>\n    <span class=\"n\">mail</span><span class=\"o\">.</span><span class=\"n\">EmailMessage</span><span class=\"p\">(</span>\n        <span class=\"n\">subject1</span><span class=\"p\">,</span>\n        <span class=\"n\">body1</span><span class=\"p\">,</span>\n        <span class=\"n\">from1</span><span class=\"p\">,</span>\n        <span class=\"p\">[</span><span class=\"n\">to1</span><span class=\"p\">],</span>\n        <span class=\"n\">connection</span><span class=\"o\">=</span><span class=\"n\">connection</span><span class=\"p\">,</span>\n    <span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">send</span><span class=\"p\">()</span>\n    <span class=\"n\">mail</span><span class=\"o\">.</span><span class=\"n\">EmailMessage</span><span class=\"p\">(</span>\n        <span class=\"n\">subject2</span><span class=\"p\">,</span>\n        <span class=\"n\">body2</span><span class=\"p\">,</span>\n        <span class=\"n\">from2</span><span class=\"p\">,</span>\n        <span class=\"p\">[</span><span class=\"n\">to2</span><span class=\"p\">],</span>\n        <span class=\"n\">connection</span><span class=\"o\">=</span><span class=\"n\">connection</span><span class=\"p\">,</span>\n    <span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">send</span><span class=\"p\">()</span>\n</code></pre></div>\n<section id=\"obtaining-an-instance-of-an-email-backend\">\n<h3>メールバックエンドのインスタンスを取得する<a class=\"heading-anchor\" href=\"#obtaining-an-instance-of-an-email-backend\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.mail</span></code> 内の <a class=\"reference internal\" href=\"#django.core.mail.get_connection\" title=\"django.core.mail.get_connection\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_connection()</span></code></a> 関数は、利用可能なメールバックエンドのインスタンスを返します。</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.core.mail.get_connection\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_connection</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">backend</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\">fail_silently</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=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.mail.get_connection\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>デフォルトでは、<code class=\"docutils literal notranslate\"><span class=\"pre\">get_connection()</span></code> を呼び出すと <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_BACKEND\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_BACKEND</span></code></a> 内で指定されたメールバックエンドのインスタンスを返します。<code class=\"docutils literal notranslate\"><span class=\"pre\">backend</span></code> 引数を指定した場合、そのバックエンドがインスタンス化されます。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">fail_silently</span></code> 引数は、バックエンドがエラーをどのように扱うかをコントロールします。<code class=\"docutils literal notranslate\"><span class=\"pre\">fail_silently</span></code> が True の場合、メール送信プロセスの間に発生した例外は何の通知もされずに無視されます。</p>\n<p>他の全ての引数は、メールバックエンドのコンストラクタに直接引き渡されます。</p>\n<p>Django には複数のメール送信バックエンドを付属しています。SMTP バックエンド (デフォルトです) を除いて、これらのバックエンドはテストと開発のみで役立ちます。特別なメール送信が必要な場合には、<a class=\"reference internal\" href=\"#topic-custom-email-backend\"><span class=\"std std-ref\">独自のメールバックエンドを記述する</span></a> を参照してください。</p>\n<section id=\"smtp-backend\">\n<span id=\"topic-email-smtp-backend\"></span><h4>SMTP バックエンド<a class=\"heading-anchor\" href=\"#smtp-backend\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.mail.backends.smtp.EmailBackend\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">backends.smtp.</span></span><span class=\"sig-name descname\"><span class=\"pre\">EmailBackend</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">host</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\">port</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\">username</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\">password</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\">use_tls</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\">fail_silently</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\">use_ssl</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\">timeout</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\">ssl_keyfile</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\">ssl_certfile</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\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.mail.backends.smtp.EmailBackend\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>デフォルトのバックエンド。メールは SMTP サーバを通して送信されます。</p>\n<p>引数が <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> の場合、各引数に対する値は、以下のそれぞれの設定から取得されます。</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">host</span></code>: <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_HOST\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_HOST</span></code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">port</span></code>: <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_PORT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_PORT</span></code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">username</span></code>: <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_HOST_USER\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_HOST_USER</span></code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">password</span></code>: <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_HOST_PASSWORD\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_HOST_PASSWORD</span></code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">use_tls</span></code>: <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_USE_TLS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_USE_TLS</span></code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">use_ssl</span></code>: <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_USE_SSL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_USE_SSL</span></code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">timeout</span></code>: <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_TIMEOUT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_TIMEOUT</span></code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">ssl_keyfile</span></code>: <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_SSL_KEYFILE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_SSL_KEYFILE</span></code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">ssl_certfile</span></code>: <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_SSL_CERTFILE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_SSL_CERTFILE</span></code></a></p></li>\n</ul>\n<p>SMTP バックエンドは、Django によって継承されるデフォルトの構成です。明示的に指定したい場合は、設定内で以下の通り記述してください:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">EMAIL_BACKEND</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;django.core.mail.backends.smtp.EmailBackend&quot;</span>\n</code></pre></div>\n<p>指定しなかった場合は、デフォルトの <code class=\"docutils literal notranslate\"><span class=\"pre\">timeout</span></code> は <a class=\"reference external\" href=\"https://docs.python.org/3/library/socket.html#socket.getdefaulttimeout\" title=\"(in Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">socket.getdefaulttimeout()</span></code></a> によって指定されたものになり、デフォルトは <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> (タイムアウトなし) になります。</p>\n</dd></dl>\n\n</section>\n<section id=\"console-backend\">\n<span id=\"topic-email-console-backend\"></span><h4>コンソールバックエンド<a class=\"heading-anchor\" href=\"#console-backend\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>実際のメールを送信する代わりに、コンソールバックエンドは単に標準出力に送信されるメールを書き込みます。 デフォルトでは、コンソールバックエンドは <code class=\"docutils literal notranslate\"><span class=\"pre\">stdout</span></code> に書き込みます。 接続を構築するときに <code class=\"docutils literal notranslate\"><span class=\"pre\">stream</span></code> キーワード引数を指定することで、別のストリーム的なオブジェクトを使用できます。</p>\n<p>このバックエンドを指定するには、設定内に以下の通り記述してください:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">EMAIL_BACKEND</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;django.core.mail.backends.console.EmailBackend&quot;</span>\n</code></pre></div>\n<p>このバックエンドはプロダクトでの使用を想定していません -- 開発中の利便性のために提供されています。</p>\n</section>\n<section id=\"file-backend\">\n<span id=\"topic-email-file-backend\"></span><h4>ファイルバックエンド<a class=\"heading-anchor\" href=\"#file-backend\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>ファイルバックエンドは、メールをファイルに書き込みます。新しいファイルは、このバックエンド上で開いたそれぞれの新しいセッションに対して作成されます。ファイルが書き込まれるディレクトリは、 <a class=\"reference internal\" href=\"#django.core.mail.get_connection\" title=\"django.core.mail.get_connection\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_connection()</span></code></a> で 接続を生成したときに <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_FILE_PATH\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_FILE_PATH</span></code></a> 設定ないし <code class=\"docutils literal notranslate\"><span class=\"pre\">file_path</span></code> キーワードから取得されます。</p>\n<p>このバックエンドを指定するには、設定内に以下の通り記述してください:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">EMAIL_BACKEND</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;django.core.mail.backends.filebased.EmailBackend&quot;</span>\n<span class=\"n\">EMAIL_FILE_PATH</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;/tmp/app-messages&quot;</span>  <span class=\"c1\"># change this to a proper location</span>\n</code></pre></div>\n<p>このバックエンドはプロダクトでの使用を想定していません -- 開発中の利便性のために提供されています。</p>\n</section>\n<section id=\"in-memory-backend\">\n<span id=\"topic-email-memory-backend\"></span><h4>インメモリーバックエンド<a class=\"heading-anchor\" href=\"#in-memory-backend\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">'locmem'</span></code> バックエンドは、 <code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.mail</span></code> モジュールの特別な属性内にメッセージを保持します。<code class=\"docutils literal notranslate\"><span class=\"pre\">outbox</span></code> 属性は最初のメッセージが送信されるときに生成されます。送信される書くメッセージに対する <a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code></a> インスタンスのリストです。</p>\n<p>このバックエンドを指定するには、設定内に以下の通り記述してください:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">EMAIL_BACKEND</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;django.core.mail.backends.locmem.EmailBackend&quot;</span>\n</code></pre></div>\n<p>このバックエンドはプロダクトでの使用を想定していません -- 開発とテストにおける利便性のために提供されています。</p>\n<p>Django's test runner <a class=\"reference internal\" href=\"/ja/4.2/topics/testing/tools/#topics-testing-email\"><span class=\"std std-ref\">automatically uses this backend for testing</span></a>.</p>\n</section>\n<section id=\"dummy-backend\">\n<span id=\"topic-email-dummy-backend\"></span><h4>ダミーバックエンド<a class=\"heading-anchor\" href=\"#dummy-backend\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>名前が示すように、ダミーバックエンドはメッセージに何もしません。このバックエンドを指定するには、設定内に以下の通り記述してください:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">EMAIL_BACKEND</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;django.core.mail.backends.dummy.EmailBackend&quot;</span>\n</code></pre></div>\n<p>このバックエンドはプロダクトでの使用を想定していません -- 開発中の利便性のために提供されています。</p>\n</section>\n</section>\n<section id=\"defining-a-custom-email-backend\">\n<span id=\"topic-custom-email-backend\"></span><h3>独自のメールバックエンドを定義する<a class=\"heading-anchor\" href=\"#defining-a-custom-email-backend\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>メール送信の方法を変更する必要がある場合、独自のメールバックエンドを記述することができます。設定ファイル内の <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_BACKEND\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_BACKEND</span></code></a> 設定が独自のバックエンドのクラスへの Python のインポートパスとなります。</p>\n<p>独自のメールバックエンドは、<code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.mail.backends.base</span></code> にある <code class=\"docutils literal notranslate\"><span class=\"pre\">BaseEmailBackend</span></code> をサブクラス化して作ります。独自のメールバックエンドには <code class=\"docutils literal notranslate\"><span class=\"pre\">send_messages(email_messages)</span></code> メソッドを実装する必要があります。このメソッドは <a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code></a> インスタンスのリストを受け取り、送信に成功したメッセージの数を返します。バックエンドに持続瀬的なセッションや接続の概念がある場合は、<code class=\"docutils literal notranslate\"><span class=\"pre\">open()</span></code> メソッドと <code class=\"docutils literal notranslate\"><span class=\"pre\">close()</span></code> メソッドも実装する必要があります。実装のリファレンスについては <code class=\"docutils literal notranslate\"><span class=\"pre\">smtp.EmailBackend</span></code> を参照してください。</p>\n</section>\n<section id=\"sending-multiple-emails\">\n<span id=\"topics-sending-multiple-emails\"></span><h3>複数のメールを送信する<a class=\"heading-anchor\" href=\"#sending-multiple-emails\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>SMTP 接続 (またはその他のネットワーク接続) の確立とクローズは、負荷の高い処理です。 送信するメールがたくさんある場合は、メールを送信するたびに接続の生成と破棄を繰り返すのではなく、SMTP 接続を再利用する方が効率的です。</p>\n<p>メールバックエンドに接続を再利用するよう通知するには、2 つの方法があります。</p>\n<p>1つ目は、<code class=\"docutils literal notranslate\"><span class=\"pre\">send_messages()</span></code> メソッドを使う方法です。<code class=\"docutils literal notranslate\"><span class=\"pre\">send_messages()</span></code> は <a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code></a> インスタンス (ないしサブクラス) のリストを取得し、この全てを単一の接続を使って送信します。</p>\n<p>例えば、定期的なメール送信を表す <a class=\"reference internal\" href=\"#django.core.mail.EmailMessage\" title=\"django.core.mail.EmailMessage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailMessage</span></code></a> オブジェクトのリストを返す <code class=\"docutils literal notranslate\"><span class=\"pre\">get_notification_email()</span></code> と呼ばれる関数がある場合、send_messages を 1度呼び出すだけでこれらのメールを送信することができます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">mail</span>\n\n<span class=\"n\">connection</span> <span class=\"o\">=</span> <span class=\"n\">mail</span><span class=\"o\">.</span><span class=\"n\">get_connection</span><span class=\"p\">()</span>  <span class=\"c1\"># Use default email connection</span>\n<span class=\"n\">messages</span> <span class=\"o\">=</span> <span class=\"n\">get_notification_email</span><span class=\"p\">()</span>\n<span class=\"n\">connection</span><span class=\"o\">.</span><span class=\"n\">send_messages</span><span class=\"p\">(</span><span class=\"n\">messages</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>この例では、<code class=\"docutils literal notranslate\"><span class=\"pre\">send_messages()</span></code> を呼び出してバックエンドの接続を開き、メッセージのリストを送信した後、再び接続を閉じています。</p>\n<p>2つ目のアプローチは、メールバックエンドの <code class=\"docutils literal notranslate\"><span class=\"pre\">open()</span></code> メソッドと <code class=\"docutils literal notranslate\"><span class=\"pre\">close()</span></code> メソッドを使って手動で接続をコントロールする方法です。<code class=\"docutils literal notranslate\"><span class=\"pre\">send_messages()</span></code> は、すでに接続が開いている場合、自動で接続を開いたり閉じたりはしません。手動で接続を開いた場合、閉じるタイミングを自分でコントロールできます。たとえば、次のように書くことができます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">mail</span>\n\n<span class=\"n\">connection</span> <span class=\"o\">=</span> <span class=\"n\">mail</span><span class=\"o\">.</span><span class=\"n\">get_connection</span><span class=\"p\">()</span>\n\n<span class=\"c1\"># Manually open the connection</span>\n<span class=\"n\">connection</span><span class=\"o\">.</span><span class=\"n\">open</span><span class=\"p\">()</span>\n\n<span class=\"c1\"># Construct an email message that uses the connection</span>\n<span class=\"n\">email1</span> <span class=\"o\">=</span> <span class=\"n\">mail</span><span class=\"o\">.</span><span class=\"n\">EmailMessage</span><span class=\"p\">(</span>\n    <span class=\"s2\">&quot;Hello&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;Body goes here&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;from@example.com&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">[</span><span class=\"s2\">&quot;to1@example.com&quot;</span><span class=\"p\">],</span>\n    <span class=\"n\">connection</span><span class=\"o\">=</span><span class=\"n\">connection</span><span class=\"p\">,</span>\n<span class=\"p\">)</span>\n<span class=\"n\">email1</span><span class=\"o\">.</span><span class=\"n\">send</span><span class=\"p\">()</span>  <span class=\"c1\"># Send the email</span>\n\n<span class=\"c1\"># Construct two more messages</span>\n<span class=\"n\">email2</span> <span class=\"o\">=</span> <span class=\"n\">mail</span><span class=\"o\">.</span><span class=\"n\">EmailMessage</span><span class=\"p\">(</span>\n    <span class=\"s2\">&quot;Hello&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;Body goes here&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;from@example.com&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">[</span><span class=\"s2\">&quot;to2@example.com&quot;</span><span class=\"p\">],</span>\n<span class=\"p\">)</span>\n<span class=\"n\">email3</span> <span class=\"o\">=</span> <span class=\"n\">mail</span><span class=\"o\">.</span><span class=\"n\">EmailMessage</span><span class=\"p\">(</span>\n    <span class=\"s2\">&quot;Hello&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;Body goes here&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;from@example.com&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">[</span><span class=\"s2\">&quot;to3@example.com&quot;</span><span class=\"p\">],</span>\n<span class=\"p\">)</span>\n\n<span class=\"c1\"># Send the two emails in a single call -</span>\n<span class=\"n\">connection</span><span class=\"o\">.</span><span class=\"n\">send_messages</span><span class=\"p\">([</span><span class=\"n\">email2</span><span class=\"p\">,</span> <span class=\"n\">email3</span><span class=\"p\">])</span>\n<span class=\"c1\"># The connection was already open so send_messages() doesn&#39;t close it.</span>\n<span class=\"c1\"># We need to manually close the connection.</span>\n<span class=\"n\">connection</span><span class=\"o\">.</span><span class=\"n\">close</span><span class=\"p\">()</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"configuring-email-for-development\">\n<h2>開発用にメールを設定する<a class=\"heading-anchor\" href=\"#configuring-email-for-development\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django に電子メールをまったく送信させたくない場合もあるでしょう。たとえば、ウェブサイトの開発中に数千通のメールを送信したくはないでしょう。しかし、適切な条件で適切な人々にメールが送信され、これらのメールが正しい内容を含んでいるか検証したいことがあるかもしれません。</p>\n<p>The easiest way to configure email for local development is to use the\n<a class=\"reference internal\" href=\"#topic-email-console-backend\"><span class=\"std std-ref\">console</span></a> email backend. This backend\nredirects all email to <code class=\"docutils literal notranslate\"><span class=\"pre\">stdout</span></code>, allowing you to inspect the content of mail.</p>\n<p><a class=\"reference internal\" href=\"#topic-email-file-backend\"><span class=\"std std-ref\">ファイル</span></a> メールバックエンドも開発に役立ちます -- このバックエンドは全ての SMTP 接続をファイルにダンプし、都合の良いときに調べられるようにします。</p>\n<p>Another approach is to use a &quot;dumb&quot; SMTP server that receives the emails\nlocally and displays them to the terminal, but does not actually send\nanything. The <a class=\"reference external\" href=\"https://aiosmtpd.readthedocs.io/en/latest/\">aiosmtpd</a> package provides a way to accomplish this:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>python<span class=\"w\"> </span>-m<span class=\"w\"> </span>pip<span class=\"w\"> </span>install<span class=\"w\"> </span>aiosmtpd\n\npython<span class=\"w\"> </span>-m<span class=\"w\"> </span>aiosmtpd<span class=\"w\"> </span>-n<span class=\"w\"> </span>-l<span class=\"w\"> </span>localhost:8025\n</code></pre></div>\n<p>This command will start a minimal SMTP server listening on port 8025 of\nlocalhost. This server prints to standard output all email headers and the\nemail body. You then only need to set the <a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_HOST\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_HOST</span></code></a> and\n<a class=\"reference internal\" href=\"/ja/4.2/ref/settings/#std-setting-EMAIL_PORT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">EMAIL_PORT</span></code></a> accordingly. For a more detailed discussion of SMTP\nserver options, see the documentation of the <a class=\"reference external\" href=\"https://aiosmtpd.readthedocs.io/en/latest/\">aiosmtpd</a> module.</p>\n<p>アプリケーションでのメール送信のユニットテストについては、テストのドキュメントの <a class=\"reference internal\" href=\"/ja/4.2/topics/testing/tools/#topics-testing-email\"><span class=\"std std-ref\">Email services</span></a> セクションを参照してください。</p>\n</section>","rootId":"module-django.core.mail","toc":[{"title":"簡単な例","anchor":"quick-example","children":[]},{"title":"send_mail()","anchor":"send-mail","children":[]},{"title":"send_mass_mail()","anchor":"send-mass-mail","children":[{"title":"send_mass_mail() と send_mail() の比較","anchor":"send-mass-mail-vs-send-mail","children":[]}]},{"title":"mail_admins()","anchor":"mail-admins","children":[]},{"title":"mail_managers()","anchor":"mail-managers","children":[]},{"title":"例","anchor":"examples","children":[]},{"title":"ヘッダインジェクションを防止する","anchor":"preventing-header-injection","children":[]},{"title":"EmailMessage クラス","anchor":"the-emailmessage-class","children":[{"title":"EmailMessage オブジェクト","anchor":"emailmessage-objects","children":[{"title":"代替のコンテンツタイプを送信する","anchor":"sending-alternative-content-types","children":[]}]}]},{"title":"メールのバックエンド","anchor":"email-backends","children":[{"title":"メールバックエンドのインスタンスを取得する","anchor":"obtaining-an-instance-of-an-email-backend","children":[{"title":"SMTP バックエンド","anchor":"smtp-backend","children":[]},{"title":"コンソールバックエンド","anchor":"console-backend","children":[]},{"title":"ファイルバックエンド","anchor":"file-backend","children":[]},{"title":"インメモリーバックエンド","anchor":"in-memory-backend","children":[]},{"title":"ダミーバックエンド","anchor":"dummy-backend","children":[]}]},{"title":"独自のメールバックエンドを定義する","anchor":"defining-a-custom-email-backend","children":[]},{"title":"複数のメールを送信する","anchor":"sending-multiple-emails","children":[]}]},{"title":"開発用にメールを設定する","anchor":"configuring-email-for-development","children":[]}],"breadcrumbs":[{"docname":"topics/index","title":"Django を使う","url":"/ja/4.2/topics/"}],"prev":{"docname":"topics/signing","title":"暗号署名","url":"/ja/4.2/topics/signing/"},"next":{"docname":"topics/i18n/index","title":"国際化とローカル化","url":"/ja/4.2/topics/i18n/"},"formats":{"html":"/ja/4.2/topics/email/","markdown":"/ja/4.2/topics/email.md","json":"/ja/4.2/topics/email.json"},"source":"https://github.com/django/django/blob/stable/4.2.x/docs/topics/email.txt","official":"https://docs.djangoproject.com/ja/4.2/topics/email/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}