使用Django可以轻松通过Gmail发送电子邮件
首先
我正在完全私人地开发一个类似于mBaaS的东西,如果要成为适用于所有人的开放源代码软件,我认为也需要考虑一些账户等等的事情,所以我决定发送一封邮件。
环境
-
- Python 2.7.11
-
- Virtualenv
-
- Django 1.9.1
- OSX 10.11.6
由于PyAPNs只支持Python 2.x,所以我选择了Python 2来进行实现,尽管我知道我可能会被某个小学生嘲笑。我认为它也可以直接在Python 3.x上使用,所以如果你感兴趣的话,请随意尝试。
我仍然无法适应Django 1.10版本,希望您能原谅我。
准备
在Virtualenv中创建了一个虚拟环境。
$ pip install django==1.9.1
$ django-admin.py startproject sampleproject
$ django-admin.py startapp send_mail
源代码
暂时先将 settings.py 的设置调整为如下所示。
# coding: utf-8
・・・
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'send_mail', # 追加
]
・・・
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
・・・
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'your.address@gmail.com'
EMAIL_HOST_PASSWORD = 'passowrd'
EMAIL_PORT = 587
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# coding: utf-8
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('send_mail.urls', namespace = 'send_mail')),
]
因为我希望为每个应用程序单独设置路由,所以我想要这样安排。
# coding: utf-8
from django.core.mail import EmailMessage
from django.http import HttpResponse
def index(request):
EmailMessage(u'件名', u'本文', to = ['hoge@example.com', 'foo@example.com']).send()
return HttpResponse('Send your register email')
在send_mail的下方创建urls.py。
from django.conf.urls import url
from accounts import views
urlpatterns = [
url(r'^$', views.index, name = 'index'),
]
Here is an example of the source code.
$ python manage.py migrate
$ python manage.py runserver
进行, http://127.0.0.1:8000
如果要访问这个网站,其实是可以的,但是由于Google身份验证的规定,变得有些复杂。
谷歌的设定
让我们实际尝试一下
由于有人忘记了登录密码,所以我想发送一封类似下面的电子邮件内容。
在Twitter上截屏并直接粘贴的激进行为
附赠
为了重置密码,随机生成一个字符串。
import random, string
print(''.join([random.choice(string.letters + string.digits) for i in xrange(10)]))
import random, string
print(''.join([random.choice(string.ascii_letters + string.digits) for i in range(10)]))
非常容易呢!