http POST sentEmail by django - xiuyanduan/xiuyanduan.github.io GitHub Wiki

title: Accept http POST request to sent Email by django
date: 2016-03-25
tags:
- Python
- django
---

Tested in django1.9 set var about Email in settings

EMAIL_HOST = 'smtp.qq.com'
# EMAIL_HOST_PORT = ''
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'yourpassword'

views.py

from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from django.core.mail import send_mail,BadHeaderError
def index(request):
    return render(request,'index.html')
def send_email(request):
    from_email='[email protected]'
    subject = request.POST.get('subject', '')
    to = request.POST.get('tos', '')
    message = request.POST.get('content', '')
    if subject and message and from_email:
        try:
            send_mail(subject, message, from_email, to.split(','))
        except BadHeaderError:
            return render(request,'wrong.html')
        return render(request,'success.html')
    else:
        # In reality we'd use a form class
        # to get proper validation errors.
        return HttpResponse('Make sure all fields are entered and valid.')

index.html

<body>
<form action="send/" method='post'>
{% csrf_token %}
{{ form }}
http to smtp
<br />
<label>发件人 from</label>
    <label>修改后不能使用</label> <br/>

<input type="email" name="from_email" id="emailFromId" value="[email protected]">
<br/>
<label>收件人 to</label>
<label>多个收件人请用英文逗号分割</label> <br/>
<input type="text" name="tos" id="emailToId" >
<br/>
<label>主题 subject</label>
<input type="text" name="subject" id="subjectId" value="suject here">
<br/>
<label>正文 content</label>
<input type="test" name="content" id="messageId" value="this is a test message">
    <input type="submit" value="提交">
</form>
</body>

urls.py

from django.conf.urls import url
from django.contrib import admin
from yourappimport views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', views.index, name='index'),
    url(r'^send/$', views.send_email, name='send_email'),
]

official documents about django in docs.djangoproject.com sending Email csrf

⚠️ **GitHub.com Fallback** ⚠️