Djangoプロジェクトでの電子メール統合のセットアップに苦労したことはありますか? SMTPの設定の構成、セキュリティの懸念の処理、または連絡先フォームの自動化など、ユーザーのエンゲージメントと信頼には電子メール機能が重要です。 このチュートリアルでは、実用的なステップバイステップの指示でDjangoを使用して電子メールを送信する方法を説明します。 Django SMTP接続の構成方法、メールプロバイダーのパスワードを設定する方法、Djangoシェルを介して電子メールを送信する方法について説明します。また、Djangoアプリの連絡フォームを設定する方法についても説明します。これにより、お客様がお客様に連絡できるようになります。
キーテイクアウト
注:このチュートリアルの完全なコードはGitHubで入手できます。
SMTPサーバーと簡単なメール転送プロトコルの理解。) SMTPサーバーには常に一意のアドレスとメッセージを送信するための特定のポートがあります。これはほとんどの場合587です。Djangoメール送信でポートがどのように関連しているかを確認します。 この例では、GmailのSMTPサーバーを使用します
アドレス:smtp.gmail.com
ポート:587
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>
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>
これらの各設定を分析することにより、上記のコードを分析しましょう。
メールバックエンド
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電子メールポート
email_host_userの設定は、個人のメールアドレスです。 Django-Environを使用してこれらすべての資格情報をセットアップするため、今のところ空白のままにしておきます。
ホストパスワードをメールで送信します他のプロバイダーの場合、それに応じて設定を調整できます。たとえば、
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>
開発中に電子メールを送信している場合でも、ソースコードに直接パスワードを書き込むべきではありません。これは、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_password:生成したアプリパスワード。スペースが含まれていないことを念頭に置いてください
env(「キー」)ステートメントは、そのキーの価値を調べていることを意味します。先に進む前に、.envファイルを設定していることを確認してください。それ以外の場合、環境変数が設定されていない場合は、Django ImproperlyConfiguredエラーが表示されます。
pip <span>install django</span>
GitとGithubを使用している場合は、.gitignoreに.envファイルを含めることを忘れないでください。これを開いて、次の行を追加するだけでこれを行うことができます。 1。 djangoシェルでメールを送信します
最後に、私たちは記事のジューシーな部分に到達します!最初のメールをDjangoに送信する時が来ました
端末を開き、仮想環境をアクティブにして実行します。django-admin startproject EmailProject
これにより、すでに設定されているすべてのdjango設定を備えたシェルが作成されます。その真新しいシェル内で、次のコードを貼り付けます
引数を指定せずにワンライナーを作成することもできます。
python <span>-m venv .venv</span>
上記のコードを分解しましょう:
非同期電子メール送信
Django 4.xでは、パフォーマンスを改善するために非同期電子メールの送信がサポートされています。これは、交通量の多いWebサイトや大量の電子メールを送信するときに役立ちます。 非同期電子メールの送信は、次のようなシナリオで役立ちますバルクメールの送信(生産規模のタスクにはセロリのようなタスクキューを使用してください)。
注: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>
連絡先アプリを作成することから始めましょう。 Project Root Directory(manage.pyが配置されている場所)を入力し、実行してください。
フォームに連絡します
作成したばかりのファイルを開き、次のインポートを作成します。
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>
名前と問い合わせは、連絡先メッセージの名前と理由を表すCharfieldsです。
ご覧のとおり、Django Generic Viewsを使用します。これにより、簡単なタスクを作成するときに大幅に節約できます。たとえば、フォームビューでフォームを設定したり、テンプレートのみをレンダリングするビューを作成したりする場合です。 templateView。
また、
pip <span>install django</span>
上記のform_validメソッドの実装は、関数ベースのビューで以下と同等です。
python <span>-m venv .venv</span>
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>
に連絡します
今度は、連絡先アプリのURLパターンを作成する時が来ました。 djangoはデフォルトでurls.pyファイルを提供していないため、次のコマンドで作成する必要があります(連絡先アプリフォルダー内にあることを確認してください)そのファイルを開き、app_nameとurlpatterns変数をセットアップします:
pip <span>install django</span>
パスを使用して、アプリのURL構成に対するルートとその特派員ビューを含めます。 app_name変数を「連絡先」に設定すると、アプリのurl
namespacingdjango-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:連絡先フォームが表示されます。
連絡先のアプリテンプレート構造を作成することから始めましょう(連絡先アプリフォルダー内にいることを確認してください):
上記のコマンドは、再利用可能なdjangoアプリの典型的なテンプレート構造(AppName/Templates/AppName)と、前に述べたツリーテンプレートファイルを作成します。これがアプリファイル構造のように見えるべきものです:
さあ、contact.htmlテンプレートで作業しましょう
python <span>-m venv .venv</span>
サクサクしたテンプレートタグでフォームをレンダリングします。そのため、{%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>
に従うためのベストプラクティス
1。再利用可能な電子メール送信機能
連絡先フォームを含むメールを送信する必要がある場合はどこでもこの関数を呼び出すことができます。3。豊富なHTML電子メールの送信
django-admin startproject EmailProject
生産対応のアプリケーションについては、SendGrid、Mailgun、AWS SESなどのサードパーティサービスの使用を検討してください。これらのサービスは、電子メール分析、配信追跡、スパムフィルタリングなどの高度な機能を提供します。
<span>cd EmailProject </span>python manage.py runserver
ラッピング
tree
djangoでメールを送信する方法はたくさんあります。このチュートリアルでは、個人のメールアドレスで作成しましたが、他のツールを探索し、プロジェクトに統合してほしいです。 このチュートリアルでは、以下について説明しました
メールを提供するためにdjango設定をセットアップする方法
はい、Djangoは、電子メールの送信を簡単にする組み込みの電子メールセンディングフレームワークを提供します。 settings.pyファイルにSMTP設定を設定することにより、send_mail関数または電子メールメッジクラスを使用して電子メールを送信できます。
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 '
djangoでOutlookメールを送信する方法?
python <span>-m venv .venv</span>
敏感な電子メール資格情報を安全に管理するにはどうすればよいですか?
django環境のインストール:ピップインストールdjango-environ
以上がSMTPサーバーを使用してDjangoで電子メールを送信する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。