ホームページ > テクノロジー周辺機器 > IT業界 > SMTPサーバーを使用してDjangoで電子メールを送信する方法

SMTPサーバーを使用してDjangoで電子メールを送信する方法

尊渡假赌尊渡假赌尊渡假赌
リリース: 2025-02-08 10:58:10
オリジナル
532 人が閲覧しました

SMTPサーバーを使用してDjangoで電子メールを送信する方法

Djangoプロジェクトでの電子メール統合のセットアップに苦労したことはありますか? SMTPの設定の構成、セキュリティの懸念の処理、または連絡先フォームの自動化など、ユーザーのエンゲージメントと信頼には電子メール機能が重要です。 このチュートリアルでは、実用的なステップバイステップの指示でDjangoを使用して電子メールを送信する方法を説明します。 Django SMTP接続の構成方法、メールプロバイダーのパスワードを設定する方法、Djangoシェルを介して電子メールを送信する方法について説明します。また、Djangoアプリの連絡フォームを設定する方法についても説明します。これにより、お客様がお客様に連絡できるようになります。

キーテイクアウト

SMTP設定の構成:適切な電子メールバックエンド、ホスト、ポート、およびセキュリティ設定(TLSなど)を使用して設定.pyファイルを構成して、djangoメール送信を設定します。

Django Environを使用した資格情報を保護する:django Environを使用して、環境変数を介してemail_host_userやemail_host_passwordなどの機密資格情報を管理し、ソースコードの資格情報のハードコードを防ぎます。
    アプリ固有のパスワードを生成する:Gmailを使用する場合、2段階の検証を有効にし、プライマリパスワードに依存する代わりにDjangoメール送信を安全に認証するアプリパスワードを作成します。 自動連絡先フォームの実装:djangoフォームを使用して自動連絡先フォームを構築し、ユーザーの問い合わせのシームレスな処理のために電子メールを送信する機能を統合します。 テスト電子メール機能:電子メールの継続ロジックをユニットテストで確認し、安全な開発テストのためにMailhogやConsole Eメールバックエンドなどのツールを使用します。
  • ベストプラクティスに従ってください:再利用性のためにTLS暗号化、適切な認証、およびモジュラー電子メール関数を使用して、安全で効率的な電子メール配信を確保します。
  • ほとんどのWebアプリケーションは、電子メールを使用して、パスワードのリセット、アカウントのアクティブ化、顧客フィードバックの受信、ニュースレターの送信、マーケティングキャンペーンなど、重要な操作を管理します。 Gmailはテストまたは小規模プロジェクトに機能しますが、制作WebサイトはAWS SES、SendGrid、Mailgunなどの専用の電子メールサービスを使用する必要があります。 ただし、専用の電子メールサービスを使用するコストと努力を比較する場合、個人用メールで電子メールを送信することは、小規模またはテストプロジェクトの方が合理的になる可能性があります。だから、ここでは物事をシンプルに保つためにそのアプローチを取ります。
  • :プロダクションWebサイトに個人のメールサービスを使用することは良い考えではありません。あなたは
  • Gmailの送信制限
  • の詳細を知ることができます。または、メールプロバイダーの制限を参照してください。

    注:このチュートリアルの完全なコードはGitHubで入手できます。

    SMTPサーバーと簡単なメール転送プロトコルの理解

    SMTP(またはSimple Mail転送プロトコル)は、送信者から受信者に電子メールがどのように転送されるかを判断するための一連のルールです。 SMTPサーバーは、このプロトコルを使用して、送信メールを送信およびリレーします。 (他のプロトコルは、電子メールの受信方法を支配することに注意してください

    。) SMTPサーバーには常に一意のアドレスとメッセージを送信するための特定のポートがあります。これはほとんどの場合587です。Djangoメール送信でポートがどのように関連しているかを確認します。 この例では、GmailのSMTPサーバーを使用します

    アドレス:smtp.gmail.com

    ポート:587

    • さあ、Djangoでメールを送信する方法を見てみましょう。
    • djangoプロジェクトの作成
    • すべてのDjangoプロジェクトには、プロジェクトの依存関係を台無しにしたくないため、仮想環境が必要です。 1つを作成するには、次のことを実行します

    注:仮想環境に慣れていない場合は、必ず

    python仮想環境ガイド

    。 上記のコマンドは、名前が付いた仮想環境を作成します。この仮想環境を有効にするには、次のことを使用できます。
    python <span>-m venv .venv</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    Djangoはサードパーティのパッケージなので、PIPでインストールする必要があります。 これにより、Djangoの最新バージョンがインストールされます。これは、PIPフリーズで確認できます。 djangoプロジェクトを作成するには、コマンドラインユーティリティdjango-adminを呼び出します: 上記のコマンドを使用すると、emailProjectという名前のDjangoプロジェクトを作成していますが、必要な名前でプロジェクトを作成できます。次に、プロジェクトディレクトリに入力してサーバーを実行します。

    <span># CMD
    </span>.venv<span>\Scripts\activate
    </span>
    <span># Power Shell
    </span>.venv<span>\Scripts\Activate.ps1
    </span>
    <span># WSL
    </span><span>source .venv/bin/activate</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    djangoサーバーを実行した後、ブラウザのhttp:// localhost:8000にアクセスしてください。最新のDjangoリリースノートを備えた自動生成ページが表示されます。

    pip <span>install django</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    SMTPのDjango電子メールバックエンドの構成

    メールバックエンドは、Djangoでメールを送信するメカニズムです。デフォルトでは、djangoはdjango.core.core.mail.backends.smtp.emailbackendを使用しています。これにより、SMTPサーバーに接続してメールを送信できます。環境(開発または生産)に応じて、ニーズに合わせて別の電子メールバックエンドを選択できます。

    メールを送信する前に設定ファイルを変更する必要があるため、以下のコマンドを使用してそのファイルを見つけましょう。
    django-admin startproject EmailProject
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    注:簡単にするために、UNIX(MacOSまたはLinux)システムコマンドのみを使用します。

    python <span>-m venv .venv</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    ツリーコマンドは、ディレクトリのファイル構造を出力します。この場合、特定のディレクトリパスを提供していないため、プロジェクトのルートフォルダーにある場合は、次のようなものを取得します。

    このチュートリアルを通じて常に変更するファイルは、emailProjectフォルダー内のsettings.pyです。必要なすべてのプロジェクト構成を保持し、カスタム変数を設定できます。 Django Docsが言うように、「設定ファイルはモジュールレベルの変数を備えたPythonモジュールです」。
    <span># CMD
    </span>.venv<span>\Scripts\activate
    </span>
    <span># Power Shell
    </span>.venv<span>\Scripts\Activate.ps1
    </span>
    <span># WSL
    </span><span>source .venv/bin/activate</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    Djangoでメールを送信するために必要な設定を見てみましょう。 emailProject/settings.pyファイルを開き、ファイルの下部に次の設定を貼り付けます。

    これらの各設定を分析することにより、上記のコードを分析しましょう。

    メールバックエンド
    pip <span>install django</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    email_backend設定は、djangoプロジェクトがSMTPサーバーに接続するために使用するバックエンドを宣言します。

    この変数は、電子メールの送信に必要なすべてのパラメーターを受信するSMTP.EmailbackEndクラスを指しています。 Djangoソースコードのクラスコンストラクターを直接確認することを強くお勧めします。このコードがどれほど読みやすいかに驚くでしょう。

    注:このクラスはデフォルトのemail_backendですが、djangoの設定で明示的であることは良い習慣と考えられています。

    他のすべての電子メール設定は、この電子メールバックエンドクラスのコンストラクターに基づいています。

    メールホスト

    email_host設定とは、使用するSMTPサーバードメインを指します。これは、メールプロバイダーによって異なります。以下は、3つの一般的なプロバイダーに対応するSMTPサーバーホストのテーブルです。 電子メールプロバイダー

    smtpサーバーホスト

    gmailsmtp.gmail.comout/hotmailsmtp-mail.outlook.comyahoosmtp.mail.yahoo.com

    この設定は、後で.ENVファイルを使用して、ハードコーディングされた敏感なキーやサイトごとの構成を避けるため、この設定を空白のままにしています。資格情報をコードに直接設定しないでください。この問題を解決するためにDjango Environを使用します

    電子メールポート

    ほとんどのSMTPサーバーのデフォルトポートであるため、email_port設定は587に設定する必要があります。これは、個人の電子メールプロバイダーには当てはまります。このポートは、TLS暗号化とともに使用され、電子メールの送信のセキュリティを確保します。 電子メールはtlsを使用します Transport Layer Security(TLS)は、Web全体で使用されるセキュリティプロトコルであり、Webアプリ(DJANGO)とサーバー(SMTPサーバー)間の通信を暗号化します。 元々、email_use_tls変数をtrueに設定します。これは、DjangoがTransport Layer Securityを使用してSMTPサーバーに接続してメールを送信することを意味します。 (個人の電子メールプロバイダーには必須です。)

    メールホストユーザー

    電子メール

    email_host_userの設定は、個人のメールアドレスです。 Django-Environを使用してこれらすべての資格情報をセットアップするため、今のところ空白のままにしておきます。

    ホストパスワードをメールで送信します

    email_host_passwordの設定は、電子メールアカウントから取得するアプリのパスワードです。このセクションの直後に行うプロセスです。同じストーリー:後で環境変数を使用するので、この設定を空白のままにしてください。

    他のプロバイダーの場合、それに応じて設定を調整できます。たとえば、

    Outlook構成:

    yahoo設定:
    python <span>-m venv .venv</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    APPパスワードを使用してGmail SMTPサーバーを設定します
    <span># CMD
    </span>.venv<span>\Scripts\activate
    </span>
    <span># Power Shell
    </span>.venv<span>\Scripts\Activate.ps1
    </span>
    <span># WSL
    </span><span>source .venv/bin/activate</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    「安全性の低いアプリ」はGoogleによって非推奨なので、電子メールを送信するためにGmailアカウントに接続する適切で安全な方法は、アプリのパスワードを使用することです。アプリのパスワードは、Googleアカウントの2段階の確認を有効にする場合にのみ使用できます。

    なぜアプリパスワードを使用するのですか?

    安全な代替品:プライマリパスワードを共有する代わりに、アプリのパスワードは特定のアプリケーションに限られたアクセスを提供します。
      ステップ1:2ステップ検証を有効にします
    1. Googleアカウントに移動:https://myaccount.google.com/。
    2. 左側のメニューのセキュリティに移動します。
    「Googleへのサインイン方法」セクションにスクロールします。

    「2ステップ検証」をクリックして、画面上の指示に従ってください。

      電話番号または認証アプリを使用して、2段階の検証を設定します。
    1. デバイスに送信されたコードでセットアップを確認します。
      • ステップ2:アプリのパスワードを生成
      • 2段階検証が有効になったら、検索バーで「アプリパスワード」を検索します。
      そこで、アプリのパスワードの名前を入力して、[作成]をクリックします。
    SMTPサーバーを使用してDjangoで電子メールを送信する方法

    次に、16文字のアプリパスワードを使用してポップアップモーダルを提供します。 1回しか表示されないので、どこかに保存してください。

    1. 他の電子メールプロバイダーを使用している場合は、必ず次のガイドを読んでください。
    • yahooアプリのパスワード
    • Outlookまたはhotmailアプリのパスワード

    Django Environを使用して、電子メールバックエンド資格情報を保護します

    開発中に電子メールを送信している場合でも、ソースコードに直接パスワードを書き込むべきではありません。これは、GitHubと一緒にバージョン制御システムを使用してプロジェクトをホストする場合にさらに重要になります。 あなたは人々にあなたのデータにアクセスしてほしくありません django-environを使用してこれを防ぐ方法を見てみましょう。

    emailprojectディレクトリ内に.envファイルを作成します(設定ファイルが配置されている場所)。

    さあ、それを.ENVファイルを開いて、次のキーと値のペアを入力してください:

    このファイルの内容を分解します:
    python <span>-m venv .venv</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    email_host:メールプロバイダーのSMTPサーバーアドレス。迅速なガイダンスについては、上記のメールホストテーブルを参照してください。この場合、smtp.gmail.com、Gmail SMTPアドレスを使用しています。
    <span># CMD
    </span>.venv<span>\Scripts\activate
    </span>
    <span># Power Shell
    </span>.venv<span>\Scripts\Activate.ps1
    </span>
    <span># WSL
    </span><span>source .venv/bin/activate</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    email_host_user:メールアドレス。

    email_host_password:生成したアプリパスワード。スペースが含まれていないことを念頭に置いてください
      Reciontient_Address:メッセージを受信するメールアドレス。これは、すべてのメールを同じ受信者に送信するために後で作成するカスタム設定です。
    • これらの環境変数を利用するには、django-environ:
    • をインストールする必要があります。
    • 注:仮想環境がアクティブ化されていることを確認してください
    • さあ、emailProjectディレクトリにあるsettings.pyを開き、以下のコードを使用します。
    最初に、設定ファイルの上部に環境パッケージをインポートします。すべての輸入品が最初にあるはずであることを忘れないでください。次に、.envで使用可能なすべてのキーと値のペアを含むENV変数を作成します。

    env(「キー」)ステートメントは、そのキーの価値を調べていることを意味します。先に進む前に、.envファイルを設定していることを確認してください。それ以外の場合、環境変数が設定されていない場合は、Django ImproperlyConfiguredエラーが表示されます。

    pip <span>install django</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    注:reciontient_addressは、アクセスできるアドレスにメールを送信するために使用するカスタム設定です。

    GitとGithubを使用している場合は、.gitignoreに.envファイルを含めることを忘れないでください。これを開いて、次の行を追加するだけでこれを行うことができます。 1。 djangoシェルでメールを送信します

    最後に、私たちは記事のジューシーな部分に到達します!最初のメールをDjangoに送信する時が来ました

    端末を開き、仮想環境をアクティブにして実行します。
    django-admin startproject EmailProject
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    これにより、すでに設定されているすべてのdjango設定を備えたシェルが作成されます。その真新しいシェル内で、次のコードを貼り付けます

    引数を指定せずにワンライナーを作成することもできます。

    python <span>-m venv .venv</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    上記のコードを分解しましょう:

    • django send_mail関数をインポートします。
    • 次に、すべてのグローバル設定とサイトごとの設定(settings.pyファイル内の設定)を含む設定オブジェクトをインポートします。
    • 最後に、必要なすべての引数をsend_mail関数に渡します。この関数は、送信された電子メールの数、この場合は1を返します。
    • [設定]オブジェクトを使用して、from_email(メールを送信しているメール)とreciontient_list(.envで定義したレシピエント_addressカスタム設定)を取得する方法に注意してください。
    • 今、受信トレイをチェックした場合 - Reciontient_Address環境変数をメールアドレスに設定すると、Djangoから送信された電子メールメッセージが表示されます。

    非同期電子メール送信

    Django 4.xでは、パフォーマンスを改善するために非同期電子メールの送信がサポートされています。これは、交通量の多いWebサイトや大量の電子メールを送信するときに役立ちます。
    非同期にメールを送信する方法は次のとおりです SMTPサーバーを使用してDjangoで電子メールを送信する方法
    非同期電子メールの送信は、次のようなシナリオで役立ちます

    電子メールを送信する場合の非ブロッキング操作は、ユーザーリクエストを遅らせないでください。

    バルクメールの送信(生産規模のタスクにはセロリのようなタスクキューを使用してください)。

    注:djangoは非同期電子メールをサポートしていますが、生産規模のバルクメールでは、真の非ブロッキング操作にはセロリやdjango-Qなどのバックグラウンドタスクキューを使用します。

    2。 django
    <span># CMD
    </span>.venv<span>\Scripts\activate
    </span>
    <span># Power Shell
    </span>.venv<span>\Scripts\Activate.ps1
    </span>
    <span># WSL
    </span><span>source .venv/bin/activate</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    で自動接触フォームを構築します このセクションでは、Djangoフォームと組み込みのsend_mail関数を備えた自動接触フォームを構築します。また、連絡先フォーム内のカスタム関数を作成して、ビューで実装しやすくなります。

    連絡先アプリを作成することから始めましょう。 Project Root Directory(manage.pyが配置されている場所)を入力し、実行してください。

      次に、emailProject/settings.pyファイル内にインストールされた_APPS変数にインストールしてください:
    • 連絡先アプリを進める前に、emailProject/urls.pyファイル内のurlpatternsを構成しましょう。これを行うには、django.urls.include関数をインポートし、プロジェクト全体に連絡先URLを含めます。心配しないで;連絡先のURLを後で設定します:

    フォームに連絡します

    連絡先アプリフォルダーを入力し、forms.pyファイルを作成します。 Forms.pyファイル内のすべてのフォームを定義することは良い習慣ですが、必須ではありません。そのため、Djangoはデフォルトでこのファイルを含めません。次のコマンドを使用してフォームファイルを作成できます。

    作成したばかりのファイルを開き、次のインポートを作成します。

    python <span>-m venv .venv</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    Jangoフォームモジュールは、連絡先フォームを作成するために必要なすべてのクラスとフィールドを提供します。もう一度、設定オブジェクトとsend_mail関数をインポートして、電子メールを送信します。

    連絡先フォームにはいくつかのフィールドが含まれ、2つのカスタムメソッドを使用します:get_info()は、ユーザーが提供する情報をフォーマットし、電子メールメッセージを送信する()send()を送信します。これがコードで実装されていることを見てみましょう:

    <span># CMD
    </span>.venv<span>\Scripts\activate
    </span>
    <span># Power Shell
    </span>.venv<span>\Scripts\Activate.ps1
    </span>
    <span># WSL
    </span><span>source .venv/bin/activate</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    このクラスは巨大なので、各部分で私たちがしていることを分解しましょう。まず、電子メールメッセージを送信するために必要な4つのフィールドを定義します。

    名前と問い合わせは、連絡先メッセージの名前と理由を表すCharfieldsです。
      電子メールは、あなたに連絡しようとしている人の電子メールアドレスを表す電子メールフィールドです。電子メールはユーザーのメールアドレスによって送信されるのではなく、Djangoプロジェクトでメールを送信するために設定したメールアドレスによって送信されることに注意してください。
    • メッセージは別のチャーフィールドです。ただし、Textareaウィジェットを使用しています。これは、フォームを表示するときに、単純な
    • カスタムメソッドに向かって、get_infoメソッドのみを使用してユーザーの情報をフォーマットし、2つの変数を返します。これは、照会フィールドに他なりません。 。
    • 一方、send()メソッドは、get_infoからフォーマットされた情報のみを取得し、send_mail関数でメッセージを送信します。このセクションはかなり大きかったですが、すべての送信ロジックを連絡先自体に実装することにより、連絡先ビューをどのように簡素化したかがわかります。
    • noctive views
    連絡先/views.pyファイルを開き、次のインポートを追加します:

    ご覧のとおり、Django Generic Viewsを使用します。これにより、簡単なタスクを作成するときに大幅に節約できます。たとえば、フォームビューでフォームを設定したり、テンプレートのみをレンダリングするビューを作成したりする場合です。 templateView。

    また、

    前のセクションで作成した連絡先をインポートし、クラスベースのビュー

    を使用して作業するときに使用されるreverse_lazy関数をインポートしています。ビューを続けて、連絡先を書いてみましょう:

    pip <span>install django</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ご覧のとおり、作成した連絡先を使用して簡単なフォームビューを構築しています。 Template_nameとsuccess_urlも設定しています。 HTMLテンプレートを書き、後でURLをセットアップします。 フォーム有効なメソッドフォームのすべてのフィールドが有効である場合にのみ、contactform.send()メソッドを使用して電子メールを送信してみましょう。これは、ユーザーがフォーマットされていない電子メールアドレスなどの無効な入力を入力した場合、メッセージが送信されないことを意味します。

    上記のform_validメソッドの実装は、関数ベースのビューで以下と同等です。

    python <span>-m venv .venv</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    このセクションを終了すると、ContactSucessViewを作成します。これは、ユーザーに成功メッセージを表示します。既にTemplateViewクラスをインポートしているため、Template_Name属性を継承して定義する必要があります。

    githubリポジトリのviews.pyファイルをチェックすることができます。
    <span># CMD
    </span>.venv<span>\Scripts\activate
    </span>
    <span># Power Shell
    </span>.venv<span>\Scripts\Activate.ps1
    </span>
    <span># WSL
    </span><span>source .venv/bin/activate</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    urls

    に連絡します

    今度は、連絡先アプリのURLパターンを作成する時が来ました。 djangoはデフォルトでurls.pyファイルを提供していないため、次のコマンドで作成する必要があります(連絡先アプリフォルダー内にあることを確認してください)

    そのファイルを開き、app_nameとurlpatterns変数をセットアップします:

    pip <span>install django</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    パスを使用して、アプリのURL構成に対するルートとその特派員ビューを含めます。 app_name変数を「連絡先」に設定すると、アプリのurl

    namespacing
    django-admin startproject EmailProject
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    が次のようになります。

    注:名前空間は、djangoテンプレートとビューで動的にURLと呼ばれるものです。

    公式文書でDjango URLディスパッチャの詳細については、
    <span>cd EmailProject
    </span>python manage.py runserver
    ログイン後にコピー
    ログイン後にコピー
    テンプレートの書き込み

    djangoテンプレートは、djangoテンプレート言語で提供されるHTMLと特別なタグを使用して、データを動的に表示するための好ましい方法です。 この特定のアプリでは、3つのテンプレートを使用します

    base.html:他のすべてのテンプレートはそこから継承されます。すべてのテンプレートに必要なHTMLスケルトンと、Bootstrapへのリンクが含まれます。

    contact.html:連絡先フォームが表示されます。

    success.html:サクセスメッセージを表示します。

    連絡先のアプリテンプレート構造を作成することから始めましょう(連絡先アプリフォルダー内にいることを確認してください):

    上記のコマンドは、再利用可能なdjangoアプリの典型的なテンプレート構造(AppName/Templates/AppName)と、前に述べたツリーテンプレートファイルを作成します。これがアプリファイル構造のように見えるべきものです:
    • base.htmlテンプレートのコンテンツにジャンプしましょう
    • ご覧のとおり、Bootstrap 5へのリンクを含むHTMLファイルのシンプルなスケルトンです。これにより、CSSファイルを使用せずに連絡先アプリをスタイライズできます。 {%block of-block%}タグを使用すると、「子テンプレート」が利用するプレースホルダーを設定できます。このタグを使用すると、テンプレート継承は簡単な作業になります。 フォームに向かう前に、Django Surispy Formsパッケージをインストールする必要があります。これにより、簡単に様式化できます。
    • もう一度、cospy_formsはdjangoアプリであり、installed_appsリストに含める必要があります:
    • ブートストラップフォームのクラスは4番目と5番目のバージョンの間に互換性があるため、
    ブートストラップ4のテンプレートパックを使用します。

    さあ、contact.htmlテンプレートで作業しましょう

    python <span>-m venv .venv</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ベーステンプレートを拡張し、ブロックプレースホルダーを使用する方法に注意してください。これが、Djangoテンプレート言語を非常に効率的にしている理由です。これにより、多くのHTMLコピーと貼り付けを保存できるためです。 フォームについて話すと、メソッド「post」を使用しています。つまり、連絡先はユーザーが指定したデータを処理し、フォームが有効な場合は電子メールを送信します。 {%CSRF_TOKEN%}は、セキュリティ上の理由により、あらゆる形式で必須です。 Djangoのドキュメントには、CSRFトークンに関する専用ページがあり、フォームを使用するときに使用する理由があります。

    サクサクしたテンプレートタグでフォームをレンダリングします。そのため、{%Load crispy_forms_tags%}を{%load chaspy_forms_tags%でサクサピータグにロードしました。

    最後に、success.htmlテンプレートを書きましょう:

    ご覧のとおり、ユーザーが別のメッセージを送信したい場合に備えて、連絡先フォームへのリンクを備えた単純な成功の発表です。

    サーバーをもう一度実行して、http:// localhost:8000にアクセスしましょう(.venvがアクティブ化されていることを確認し、プロジェクトルートフォルダー内にあります):

    <span># CMD
    </span>.venv<span>\Scripts\activate
    </span>
    <span># Power Shell
    </span>.venv<span>\Scripts\Activate.ps1
    </span>
    <span># WSL
    </span><span>source .venv/bin/activate</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    下の画像は、最終的な連絡先フォームがどのように見えるかを示しています。

    そして、これは成功メッセージの画像です。
    pip <span>install django</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

    SMTPサーバーを使用してDjangoで電子メールを送信する方法そして、これが受信トレイの電子メールの画像です。

    SMTPサーバーを使用してDjangoで電子メールを送信する方法
    に従うためのベストプラクティス

    1。再利用可能な電子メール送信機能

    電子メールを送信するロジックをモジュラーにして再利用できるようにするには、電子メールの送信機能をヘルパー関数に移動できます。 SMTPサーバーを使用してDjangoで電子メールを送信する方法
    連絡先フォームを含むメールを送信する必要がある場合はどこでもこの関数を呼び出すことができます。

    2。単体テスト

    django.testを使用してメールを送信することができます。

    3。豊富なHTML電子メールの送信

    django-admin startproject EmailProject
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    HTMLメールは、より良いデザインとプレゼンテーションを提供します。 Djangoのテンプレートエンジンを使用して、リッチな電子メールコンテンツを作成します:

    4。サードパーティの電子メールサービスの統合

    生産対応のアプリケーションについては、SendGrid、Mailgun、AWS SESなどのサードパーティサービスの使用を検討してください。これらのサービスは、電子メール分析、配信追跡、スパムフィルタリングなどの高度な機能を提供します。

    <span>cd EmailProject
    </span>python manage.py runserver
    ログイン後にコピー
    ログイン後にコピー
    5。ユーザー登録の電子メール

    スパムアカウントを防ぐために、ユーザー登録中に電子メール検証リンクを送信してください。

    ラッピング
    tree
    ログイン後にコピー

    おめでとう! Djangoで電子メールを送信する方法と、Djangoの連絡フォームを構築する方法も学びました。

    djangoでメールを送信する方法はたくさんあります。このチュートリアルでは、個人のメールアドレスで作成しましたが、他のツールを探索し、プロジェクトに統合してほしいです。 このチュートリアルでは、以下について説明しました

    メールを提供するためにdjango設定をセットアップする方法

      個人のメールアカウントを使用して小さなプロジェクトでメールを送信する方法
    • djangoプロジェクトで機密データを使用するための.envファイルの使用方法
    • 自動化された連絡先フォームを構築する方法
    • Djangoの詳細については、「Djangoを使用して写真共有アプリを構築する」をご覧ください。 Django上の
    djangoからメールを送信できますか?

    はい、Djangoは、電子メールの送信を簡単にする組み込みの電子メールセンディングフレームワークを提供します。 settings.pyファイルにSMTP設定を設定することにより、send_mail関数または電子メールメッジクラスを使用して電子メールを送信できます。

    djangoでメールを送信する方法?

    電子メールを送信するためにdjangoを構成するには:

    settings.pyファイルでsmtpの詳細を設定します:email_backend = 'django.core.backends.smtp.emailbackend' email_host = 'mtp.gmail.com' email_port = 587 email_use_tls = true email_host_user = 'your_email@emplem .com 'email_host_password =' your_app_password '

    Gmailまたは同様のプロバイダーを使用している場合は、メインのメールパスワードの代わりに安全なパスワードを使用してください。

    生産については、SendGrid、Mailgun、Amazon SESなどのサードパーティサービスを使用することを検討してください。

    djangoでOutlookメールを送信する方法?
    • DjangoでOutlookメールを送信するには、OutlookのSMTP設定を使用してDjangoの電子メール送信機能を使用できます。 djangoプロジェクトのsettings.pyファイルで、OutlookのSMTP設定を構成します。これらの設定により、DjangoはOutlook SMTPサーバーに接続してメールを送信できます。
    • djangoでメールを受信する方法?
    • djangoプロジェクトのsettings.pyでは、着信電子メールサーバーの設定を構成します。通常、メールプロバイダーのIMAP(インターネットメッセージアクセスプロトコル)サーバーの詳細と認証資格情報が必要です。次に、iMaplibライブラリを使用してメールサーバーに接続し、メールを取得します。これをDjangoビューまたはカスタム管理コマンドで実行できます。メールを取得したら、それを処理し、情報を抽出し、Djangoアプリケーション内で必要なアクションを実行できます。これには、電子メールコンテンツの解析、データベースに関連するデータの保存、または電子メールのコンテンツまたは送信者に基づいて特定のアクションのトリガーが含まれます。
    • 実際のメールを送信せずにDjangoで電子メールの送信をテストするにはどうすればよいですか?開発中に、オプションの電子メールバックエンドを使用して、実際のSMTPサーバーに接続せずに電子メールをテストできます。例:電子メールバックエンドのコンソール:電子メールメッセージを送信する代わりに端末に印刷します。
      python <span>-m venv .venv</span>
      ログイン後にコピー
      ログイン後にコピー
      ログイン後にコピー
      ログイン後にコピー
      ログイン後にコピー
      ログイン後にコピー
      ログイン後にコピー
      ログイン後にコピー
      ログイン後にコピー
      より高度なテストについては、テストメールをキャプチャして表示するための偽のSMTPサーバーとして機能するMailhogやMailTrapなどのツールを使用してください。

      敏感な電子メール資格情報を安全に管理するにはどうすればよいですか?

      django環境を使用して、.envファイルから敏感な資格情報(電子メールホスト、ユーザー名、パスワードなど)をロードします。

      django環境のインストール:ピップインストールdjango-environ

以上がSMTPサーバーを使用してDjangoで電子メールを送信する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート