gpt4 book ai didi

python - 使用 DomainKey 和 Amazon SES 签名的 Django 重置密码电子邮件

转载 作者:太空宇宙 更新时间:2023-11-03 18:45:38 27 4
gpt4 key购买 nike

我尝试试验的应用程序允许用户使用 djangos 内置 PasswordResetForm 重置密码,目前我正在覆盖它以便能够使用 EmailMultiAlternatives 发送 HTML 电子邮件。

它目前的外观和工作情况如何。

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()

所以现在我在这个 Getting started 的帮助下开始了例如 hmarr,这是我添加到我的 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'

电子邮件已通过亚马逊 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'`

  • 已下载 openssl-for windows ,并按照命令进行操作

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

      Two files got created : myDomainName.com.key and rsa.public
  • 将 DKIM_PRIVATE_KEY 添加到 settings.py

    DKIM_PRIVATE_KEY = ''' xxxxxxxxxxxxxxxxxxxxxxxxxx
    MY Long Private Key
    xxxxxxxxxxxxxxxxxxxxxxxxxx
    '''

  • 添加了 DNS 条目

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

  • 完成上述所有操作后,我运行我的项目并尝试重置我的密码,并抛出此错误:

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

    我试图了解我错过了什么或出了什么问题,一些关于如何解决这个问题的建议/帮助将非常有帮助。

    我是 Django/Python 的菜鸟,所以请耐心等待。

    提前谢谢您。

    UPDATE 28 Oct 2013:

    我仍在试图找出哪个 Private Key django 正在寻找,而我已经添加了 DKIM_PRIVATE_KEY 在我的 settings.py


    UPDATE 29 Oct 2013:

    • Paul Egan 的帮助下我更新了我的 DKIM_PRIVATE_KEY 在我的settings.py包括PEM header现在看起来像这样:

      DKIM_PRIVATE_KEY = '''<br/>
      -----BEGIN RSA PRIVATE KEY-----<br/>
      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx<br/>
      -----END RSA PRIVATE KEY-----
      '''

    电子邮件现在已发送,没有任何错误,但是我收到的电子邮件仍然显示 via amazonses.com

    最佳答案

    parse_pem_private_key抛出未找到私钥错误。这表明您的设置不包含 PEM header 。仔细检查它是否看起来像:

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

    您可能还想考虑另一种选择。去年,AWS 添加了对在其端添加 DKIM 签名的支持:http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html 。您可能会发现这更容易配置,并且具有使私钥远离源代码的额外优势。

    关于python - 使用 DomainKey 和 Amazon SES 签名的 Django 重置密码电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19590543/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com