首页 > 解决方案 > 使用 Django 发送电子邮件以联系

问题描述

我正在尝试向保存在数据库中的联系人发送模板电子邮件。如何预先输入联系人的电子邮件详细信息并删除表格。我试图替换recipient = str(sub['Email'].value())为,recipient = str(sub['lead.id'].value())但它没有工作。

视图.py

@login_required(login_url="/login/")
def subscribe(request, lead_id):
    lead = Lead.objects.get(pk=lead_id)
    sub = forms.Subscribe()
    if request.method == 'POST':
        sub = forms.Subscribe(request.POST)
        subject = 'Introduction'
        message = 'Good morning,'
        recipient = str(sub['Email'].value())
        send_mail(subject, 
            message, EMAIL_HOST_USER, [recipient], fail_silently = False)
        return render(request, 'subscribe/success.html', {'recipient': recipient, 'lead': lead})
    return render(request, 'subscribe/index.html', {'form':sub, 'lead': lead})

表格.py

class Subscribe(forms.Form):
    Email = forms.EmailField()
    def __str__(self):
        return self.Email

网址.py

url(r'^(?P<lead_id>[0-9]+)/subscribe$', views.subscribe, name='subscribe'),

非常感谢

标签: pythondjango

解决方案


您可以遍历索引页面上的所有联系人,并将其名称在锚标签和 href 之间作为 url 以使用参数lead_id 作为人员 id 进行订阅

假设您将上下文发送到索引页面为contacts

{% for i in contacts%}

<a href='{% url 'subscribe' lead_id=i.id  %}'> {{i.name}}</a>

{% endfor %}

现在在您的订阅功能中

@login_required(login_url="/login/")
def subscribe(request, lead_id):
    lead = Lead.objects.get(pk=lead_id)
    subject = 'Introduction'
    message = 'Good morning,'
    recipient = lead.email
    send_mail(subject, 
        message, EMAIL_HOST_USER, [recipient], fail_silently = False)
        
    return render(request, 'subscribe/success.html', {'recipient': recipient, 'lead': lead})

推荐阅读