1

私が実験しようとしているアプリケーションでは、ユーザーは djangos inbuilt を使用してパスワードをリセットできますPasswordResetForm。現在、を使用して HTML メールを送信できるようにオーバーライドしていますEmailMultiAlternatives

現在の外観と動作は良好です。

c ={'name':'Shabeer'}
subject = 'Test Amazon SES'
txt_content = loader.render_to_string('registration/password_reset_email.txt', c)
html_content = loader.render_to_string(email_template_name, c)

msg = EmailMultiAlternatives(subject, txt_content, from_email, [user.email]);            
msg.attach_alternative(html_content, 'text/html')
msg.send()

だから今、私はhmarrGetting startedによるこの例の助けを借りて始めました。ここに私が追加したコードがありますsettings.py

EMAIL_BACKEND = 'django_ses.SESBackend'

DEFAULT_FROM_EMAIL = 'shabeer@sheffa.com'

AWS_ACCESS_KEY_ID = 'MyAcCeSsKeYiD'
AWS_SECRET_ACCESS_KEY = 'MySeCrEtAcCeSsKeY'
AWS_SES_REGION_NAME = 'us-east-1'
AWS_SES_REGION_ENDPOINT = 'email.us-east-1.amazonaws.com'
AWS_SES_RETURN_PATH = 'shabeer@sheffa.com'

そして、メールは Amazon SES 経由でユーザーに正常に送信されます。


だから今ここに私の問題があります。

見ないようにして"via" followed by a domain name next to the sender's nameいます。

DKIMそれを達成するために、ガイドの次のステップに従い始めました。:

  1. Amazon SES によって生成されたドメインの DKIM 設定を追加しました
  2. に以下を追加settings.py

DKIM_DOMAIN = 'myDomainName.com'`

  1. openssl-for windows をダウンロードし、コマンドに従いました

    • openssl genrsa -out myDomainName.com.key 512
    • openssl rsa -in myDomainName.com.key -out rsa.public -pubout -outform PEM

      2 つのファイルが作成されました: myDomainName.com.keyrsa.public
  2. DKIM_PRIVATE_KEY を追加しましたsettings.py

    DKIM_PRIVATE_KEY = ''' xxxxxxxxxxxxxxxxxxxxxxxxxx
    MY ロング プライベート キー
    xxxxxxxxxxxxxxxxxxxxxxxxxx
    '''

  3. DNS エントリを追加しました

    ses._domainkey.myDomainName.com TXT '"v=DKIM1; p=myPublicKey"'

上記のすべてが完了したら、プロジェクトを実行してパスワードをリセットしようとすると、次のエラーがスローされます。

Exception Type: KeyFormatError at /password_reset/
Exception Value: Private key not found

見逃したものや間違ったものを理解しようとしていますが、これを解決する方法についてのアドバイス/支援は本当に役に立ちます.

私は Django/Python の新人なので、ご容赦ください。

よろしくお願いします。

2013 年 10 月 28 日更新:

すでに追加してPrivate Keyいる間に、どのdjangoが探しているかをまだ把握しようとしていますDKIM_PRIVATE_KEYsettings.py


2013 年 10 月 29 日更新:

  • Paul Eganの助けを借りて、次のような外観を含めるように更新DKIM_PRIVATE_KEY しました。settings.pyPEM header

    DKIM_PRIVATE_KEY = '''
    -----BEGIN RSA PRIVATE KEY-----
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    -----END RSA PRIVATE KEY----- '''

メールはエラーなしで送信されるようになりましたが、受信したメールにはまだ表示されますvia amazonses.com

4

1 に答える 1

2

Private key not foundエラーはparse_pem_private_keyからスローされます。これは、設定に PEM ヘッダーが含まれていないことを示しています。次のようになっていることを再確認します。

DKIM_PRIVATE_KEY = '''
-----BEGIN RSA PRIVATE KEY-----
xxxxxxxxxxx
-----END RSA PRIVATE KEY-----
'''

検討したいオプションがもう 1 つあります。昨年、AWS は、http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html に DKIM 署名を追加するためのサポートを追加しまし。これは構成が簡単で、秘密鍵をソース コードから遠ざけることができるという利点があります。

于 2013-10-29T09:57:53.743 に答える