我正在尝试的应用程序允许用户使用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
中的代码
这些电子邮件通过amazon SES成功发送给用户。在
所以现在是我的问题。在
我尽量避免看到^{
为了达到这个目的,我开始遵循指南的下一步^{
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
向settings.py
添加了DKIM\u私钥
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在寻找哪个,而我已经在我的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
还有另一个选择,你可能还需要考虑。去年,AWS增加了对添加DKIM签名的支持:http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html。您可能会发现这更易于配置,而且它还有一个额外的优点,即使私钥远离源代码。在Private key not found
错误从parse_pem_private_key抛出。这表明您的设置不包括PEM头。仔细检查它是否看起来像:相关问题 更多 >
编程相关推荐