Django重置使用与Amazon SE的DomainKey签名的密码电子邮件

2024-09-25 00:27:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试的应用程序允许用户使用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()

现在我从这个由hmarr编写的^{}示例开始,这里是我添加到settings.py中的代码

^{pr2}$

这些电子邮件通过amazon SES成功发送给用户。在


所以现在是我的问题。在

我尽量避免看到^{}。在

为了达到这个目的,我开始遵循指南的下一步^{}。公司名称:

  1. 为我的域添加了由amazonses生成的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

      Two files got created : myDomainName.com.key and rsa.public
  2. settings.py添加了DKIM\u私钥

    DKIM_PRIVATE_KEY = ''' xxxxxxxxxxxxxxxxxxxxxxxxxx
    MY Long Private Key
    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的菜鸟,所以请容忍我。在

提前谢谢你。在

UPDATE 28 Oct 2013:

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


UPDATE 29 Oct 2013:

  • Paul Egan的帮助下,我更新了我的DKIM_PRIVATE_KEY 在我的settings.py中,包括PEM header如下所示:

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

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


Tags: keypytxtcomsettings电子邮件emailhtml
1条回答
网友
1楼 · 发布于 2024-09-25 00:27:59

Private key not found错误从parse_pem_private_key抛出。这表明您的设置不包括PEM头。仔细检查它是否看起来像:

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。您可能会发现这更易于配置,而且它还有一个额外的优点,即使私钥远离源代码。在

相关问题 更多 >