Steve
Steve

Reputation: 41

Send Email with Django to contact

I am trying to send a templated email to a contact saved in a database. How can pre enter the email detail of the contact and remove the forms. I have tried to replace recipient = str(sub['Email'].value()) by recipient = str(sub['lead.id'].value()) but it didn`t work.

views.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})

forms.py

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

urls.py

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

Many Thanks

Upvotes: 1

Views: 56

Answers (1)

Vivek Anand
Vivek Anand

Reputation: 391

You can iterate through all your Contacts on the index page with their names between anchor tags and href as url to subscribe with a parameter lead_id as persons id

lets say you sent the context to index page as contacts

{% for i in contacts%}

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

{% endfor %}

Now inside your subscribe function

@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})

Upvotes: 1

Related Questions