1

对于我目前的 satchmo 商店,我想发送 html 电子邮件而不是所有 txt 电子邮件。从 satchmo_store 帐户注册码看,所有的电子邮件都是硬编码的,并且使用 .txt 格式而不是 html 格式。例如mail.py

"""Sends mail related to accounts."""

from django.conf import settings
from django.utils.translation import ugettext
from satchmo_store.mail import send_store_mail
from satchmo_store.shop.models import Config
from satchmo_store.shop.signals import registration_sender

import logging
log = logging.getLogger('satchmo_store.accounts.mail')

# TODO add html email template
def send_welcome_email(email, first_name, last_name):
    """Send a store new account welcome mail to `email`."""

    shop_config = Config.objects.get_current()
    subject = ugettext("Welcome to %(shop_name)s")
    c = {
        'first_name': first_name,
        'last_name': last_name,
        'site_url': shop_config.site and shop_config.site.domain or 'localhost',
        'login_url': settings.LOGIN_URL,
    }
    send_store_mail(subject, c, 'registration/welcome.txt', [email],
                    format_subject=True, sender=registration_sender)

我知道您可以将最后一行更改为以下内容以使其正常工作:

send_store_mail(
    subject=subject,
    context=c,
    template='registration/welcome.txt',
    recipients_list=[email],
    format_subject=True,
    sender=registration_sender,
    template_html='registration/welcome.html')

但是,我最好不要在不久的将来为了升级目的而触摸 Satchmo 应用程序中的代码。

有谁知道在不接触 satchmo 应用程序的情况下覆盖此功能或为所有注册相关功能启用 html 电子邮件的理想方法是什么?

提前致谢。

4

1 回答 1

1

我通过以下方式对 Satchmo 内部进行了类似的更改:

应该可以将 Satchmo 安装中的相关文件复制到您的 django 应用程序中。如果您根据此建议设置 Satchmo 商店,则可能意味着将 satchmo/apps/satchmo_store/accounts/mail.py 复制到 /localsite/accounts/mail.py。这个想法是自动加载本地副本而不是原始副本。

在您的本地 mail.py 副本中,您可以替换 send_store_email() 函数。记下笔记,以便在 Satchmo 升级时记住所做的更改。很可能原始文件仍然是相同的,即使在未来的版本中,您的覆盖也将起作用。

在其他情况下,当您必须更改某些类行为时,您还可以将原始类子类化,其中一个仅更改相关方法,同时保留原始名称。

于 2012-11-23T21:06:03.240 回答