我尝试实验的应用程序允许用户使用内置PasswordResetForm
的djangos重置密码,目前我正在重写它以便能够使用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 这个Getting 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'
电子邮件通过亚马逊SES成功发送给用户。
所以现在这是我的问题。
我试图避免看到"via" followed by a domain name next to the sender's name
。
为实现这一目标,我开始按照指南的下一步DKIM
进行操作。 :
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 -poutout -outform PEM
创建了两个文件: myDomainName.com.key 和 rsa.public
将DKIM_PRIVATE_KEY添加到settings.py
DKIM_PRIVATE_KEY =''' xxxxxxxxxxxxxxxxxxxxxxxxxx
我的长私钥
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的新手,所以请耐心等待。
提前谢谢你。
2013年10月28日更新:
我仍在尝试找出哪些 Private Key
django正在寻找,而我已在{{1}中添加 DKIM_PRIVATE_KEY
}
2013年10月29日更新:
在Paul Egan的帮助下,我更新了 settings.py
在我的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-----
'''
答案 0 :(得分:1)
parse_pem_private_key引发Private key not found
错误。这表明您的设置不包含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。您可能会发现这更容易配置,并且它具有使私钥远离源代码的附加优势。