1

我正在尝试试验的应用程序允许用户使用内置的 djangos 重置他们的密码PasswordResetForm,目前我正在覆盖它以便能够使用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'

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

      创建了两个文件:myDomainName.com.keyrsa.public
  2. 将 DKIM_PRIVATE_KEY 添加到settings.py

    DKIM_PRIVATE_KEY = ''' xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    MY 长私钥
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    '''

  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已经添加DKIM_PRIVATE_KEY到我的settings.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-----
'''

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

于 2013-10-29T09:57:53.743 回答