Djangoの組み込み関数とセロリメールを使用してください

メールボックスの設定

オープンSTMPサービス

163 Eメール、例えば、STMP内の[設定]をクリックします

 

Open Clientのライセンスキー

 私は開いているので、上記のように、そのページ以上あります。

このように、メールボックスが完了した準備。

 

組み込み関数を使用してDjangoのメール

1.次の設定ファイルを追加します。

#のメール設定は 
= EMAIL_BACKEND ' django.core.mail.backends.smtp.EmailBackend ' 
EMAIL_HOST = ' smtp.163.com ' 
EMAIL_PORT = 25
 Eメールのメールボックス 
EMAIL_HOST_USER = ' メールボックス' 
#を提供し、クライアントのメールボックスにサイドの承認パスワード 
EMAIL_HOST_PASSWORD = 認証コード
#の受信者が送信者を確認するには 
EMAIL_FROM = <メールボックスを送信>緑の果樹園を

 

2.メールを送信するためのコードを書きます

 
 
django.shortcutsから、レンダリングリダイレクト、HttpResponseにインポート
django.core.mail輸入send_mailから
シリアライザとしてitsdangerous輸入TimedJSONWebSignatureSerializerから
django.confインポート設定から

DEF
(リクエスト)emailtest: は、アクティベーションリンクを含む、アクティベーションメールを送信する:HTTP://127.0.0.1:8000 / / 3 /アクティブユーザー アクティブリンクは、ユーザーの識別情報と識別情報を含める必要があり、暗号化されなければならない #の暗号化をユーザの識別情報は、活性化は、トークン生成 ユーザーIDを3 = 電子メールでは = メールアカウントを受信し、」 シリアライザは、シリアライザ(settings.SECRET_KEY 1800 = 情報 = { 確認:ユーザーID} トークン = serializer.dumps(情報) トークン = トークン.decode() メール 件名= 緑の果樹園ウェルカムメッセージ メッセージ ="" SENDER = settings.EMAIL_FROM レシーバー = [メール] html_message = " <h2は>緑の果樹園が登録したメンバーになるためにあなたを歓迎</ H2> </ BR>アカウント<のhrefを=「有効にするには、以下のリンクをクリックします。http:127.0.0.1 : 8000 / " \ " 127.0.0.1 :: 8000 /ユーザー/アクティブ/%S </a>のユーザー/アクティブ/ HTTP%S「> "(トークン、トークン) send_mail(件名、メッセージ、送信者、受信者、html_message = html_message) 応答を返し、後藤 返す(はHttpResponseを正常に送信された電子メールは、受信ことに注意してください

URLをサポート

= urlpatterns [ 
    URL(R&LT ' ^ emailtest / $ '、views.emailtest、名前= " emailtest ")、  メールテスト 
]

 

3.お使いのブラウザで次のアドレスを入力し、あなたは、「メール送信」のメッセージを見ることができます

http://127.0.0.1:8000/user/emailtest/

図に示すようなメールを受け取りました。

電子メールを受信します

メール内容の詳細

 

セロリメールを使用してください

メッセージジャンゴを送信するために組み込み関数を使用する場合は、メールを送信するためのDjangoのSTMPサーバは時間が​​かかり、STMPサーバは、ユーザにメッセージを送信する時間がかかりますが、メールを送信中に、この時間サーバが応答を返すようにするために、ユーザーが待っている、待機時間の場合あまりにも長い間、それは間違いなく大幅にユーザーエクスペリエンスが低下します。

今回は、非同期セロリは、ユーザへの応答を返しながら、Djangoのサーバーがメールを送信するためにメッセージを送信するためにセロリを使用することができます。ここでは、随時メールを送信シミュレートするために睡眠を使用しています。

 

1. インストールセロリ

セロリをインストールするPIP

 

2. 構成設定ファイル

#のメール設定は 
= EMAIL_BACKEND ' django.core.mail.backends.smtp.EmailBackend ' 
EMAIL_HOST = ' smtp.163.com ' 
EMAIL_PORT = 25
 Eメールのメールボックス 
EMAIL_HOST_USER = ' メールボックス' 
#を提供し、クライアントのメールボックスにサイドの承認パスワード 
EMAIL_HOST_PASSWORD = クライアントライセンスキー
#の送信者を確認する受信者 
EMAIL_FROM = 緑の果樹園<送信メールボックス> 

Djangoのキャッシュ構成 
キャッシュが= {
     デフォルト{:
         バックエンド" django_redis.cache.RedisCache " " LOCATION "" のRedis://127.0.0.1:9分の6379 " " OPTIONS " :{
             " CLIENT_CLASS "" django_redis.client.DefaultClient " 
        } 
    } 
}

 

新規プロジェクトcelery_tasksフォルダで、[ファイル]フォルダ内の新しいタスクは、タスクファイルを書き込みます

django.core.mail インポートsend_mail
 から django.conf のインポート設定
 からセロリのインポートセロリ
 のインポート時間

タスクハンドラの終わりの必要性は、これらの単語を追加したときに
#のインポートOS インポートDjangoの
#1 」、(「DJANGO_SETTINGS_MODULE」os.environ.setdefaultをプロジェクト名.settings「) django.setup() 

オブジェクトクラスセロリのインスタンス作成 
のApp =セロリ(' celery_tasks.tasks '、ブローカー= ' Redisの://127.0.0.1:8分の6379を' 


#は、タスク関数を定義
app.task @
 DEFsend_register_active_email(to_email、ユーザー名、トークン):
     "" " アクティベーションメッセージを送信" "" 
    件名 = " グリーンオーチャードウェルカムメッセージ" 
    メッセージ = "" 
    SENDER = settings.EMAIL_FROM 
    レシーバ = [to_email] 
    html_message = " 歓迎<H2>%S、あなたは、登録メンバーが</ H2> </ BR>アカウントのhrefを= '有効にするには、以下のリンクをクリックして、緑の果樹園となってます。http:127.0.0.1:8000 / <a "\"
                    user/active/%s'> HTTP:127.0.0.1: 8000 /ユーザー/アクティブ/ S </a>の%"(ユーザー名、トークン、トークン)
    send_mail(件名、メッセージ、送信者、受信者、html_message =html_message)
    time.sleep( 5)

 

送信メッセージは4. 呼び出しタスクがcelery_tasksの中のメッセージ機能を送ります

django.shortcuts インポートし、リダイレクトする、のHttpResponseをレンダリング
 から django.core.mail インポートsend_mail
 から itsdangerous インポートシリアライザAS TimedJSONWebSignatureSerializer
 から django.conf のインポート設定が

DEF emailtest(要求):
    アクティベーションリンクを含むアクティベーションメールを送信します。http://127.0 .0.1:8000 /ユーザー/アクティブ/ 3 
    アクティブリンクは、ユーザーの識別情報と識別情報を含める必要があるが、暗号化されなければならない
    暗号化されたユーザID情報を、活性化がトークンを生成 
    ユーザーIDを3 =。
    ユーザ名は = mumun 
    をメールで送信 = " 閉じましたMailメールボックス
    シリアライザ =シリアライザ(settings.SECRET_KEY、1800 
    情報 = { ' 確認' :ユーザーID} 
    トークン = serializer.dumps(情報)
    トークン = token.decode()
    セロリがメール送信使っ
    send_register_active_email.delayを(電子メールでは、ユーザー名、トークン)

    応答、goto文を返す
    リターン(のHttpResponseを正常に送信された電子メールは、受信ことに注意してください

URLをサポート

= urlpatterns [ 
    URL(R&LT '^ emailtest / $'、views.emailtest、名前= "emailtest")、#メールテスト
]

 

5. ターンRedisのサービス

E:\> CDのE:\ YifChanSoft \データベース\ Redisの\ RedisSoft \ Redisの-x64-3.2.100 

E:\ YifChanSoft \データベース\ Redisの\ RedisSoft \ Redisの -x64-3.2.100>のRedisサーバ--serviceをインストールredis.windows-service.conf - ログレベルの冗長

E:\ YifChanSoftデータベース\ \ Redisの\ RedisSoft \ Redisの -x64-3.2.100> redis- CLI
 127.0.0.1:6379>を選択8 
OK
 127.0.0.1:6379[8] >キー* 
(空のリストまたはセット)
 127.0.0.1:6379 [8]>キー* 
1)" _kombu.binding.celery " 
2)" _kombu.binding.celery.pidbox " 
3)" _kombu.binding.celeryev "

スクリーンショットは、Redisのサービスを有効にします

 

6.どこかでプロジェクトコードのコピー、敷地内に入り、作業者モデルのタスクを開始
労働者の仕事のファイルコードとして使用ノートでは、そうでない労働者がCONFを呼び出すことはできません、事前にDjangoの初期化コードを開始している必要があります情報;

それは次のように持っている必要があります

これの最後のいくつかの単語を追加するには、タスクの必要性
のインポートのOS
 インポートDjangoの
os.environ.setdefault(DJANGO_SETTINGS_MODULE プロジェクト名.settings 
django.setup()

オープン労働者モード

セロリ-A celery_tasks.tasks労働者-l情報

問題があり、次のように与えられ、

ValueError:ない十分な値をアンパックする(3予想は、0を得ました)

理由
この問題は、win10上で発生する実行celery4.xを
解決します

eventletをインストールするPIP

そして、オープンモードワーカーにパラメータを追加

セロリ-A celery_tasks.tasks労働者-l情報-P eventlet

ワーカーショットモードがオンになり、コンテンツがありますが、あまりのために、それは半分だけカットされています

 

 

7.ブラウザで次のアドレスを入力し、あなたは、「メール送信」のメッセージを見ることができます

http://127.0.0.1:8000/user/emailtest/

次のように受信メールがあります

 

おすすめ

転載: www.cnblogs.com/yifchan/p/python-1-34.html