メール送信をする。Django on heroku で。

神様サイト



Step1. sendgrid を heroku に追加する。

$ # Step1-1.
$ heroku addons:create sendgrid:starter
! Please verify your account
 to install this add-on plan (please enter a credit card) 

For more information, see
 https://devcenter.heroku.com/categories/billing

Verify now at
 https://heroku.com/verify 

$ # Step1-2.
$ # サイトにアクセスしてクレジットカード情報を入力する
$
$ # Step1-3.
$ heroku addons:create sendgrid:starter
Creating sendgrid-polished-91235... done, (free)
Adding sendgrid-polished-91235 to capacityplanning... done
Setting SENDGRID_PASSWORD, SENDGRID_USERNAME and restarting capacityplanning... done, v26
Use `heroku addons:docs sendgrid` to view documentation.
$ 

 


startar なら無料っぽい


f:id:domodomodomo:20160124133614p:plain
SendGrid - Add-ons - Heroku Elements

Step2. project/setting.py を編集

project/setting.py に下記の設定を追記する。

# Mail                                                                             
from socket import gethostname
hostname = gethostname()
#
# Local の環境の場合
#
if 'local' in hostname:
  # ログにメールを出力するだけにとどめる。
  # http://stackoverflow.com/questions/4642011/test-sending-email-without-email-server
  EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

#
# Heroku の環境の場合
#
else:
  # SendGrid を Django で使う場合の設定
  # https://sendgrid.com/docs/Integrate/Frameworks/django.html
  EMAIL_HOST = 'smtp.sendgrid.net'                                                 
  EMAIL_HOST_USER = 'sendgrid_username'                                            
  EMAIL_HOST_PASSWORD = 'sendgrid_password'                                        
  EMAIL_PORT = 587                                                                 
  EMAIL_USE_TLS = True                                                             
  
  # さらに SendGrid を Django on Heroku で使う場合の設定
  # http://stackoverflow.com/questions/9723494/setting-up-email-with-sendgrid-in-heroku-for-a-django-app
  EMAIL_HOST_USER = os.environ['SENDGRID_USERNAME']                                
  EMAIL_HOST_PASSWORD = os.environ['SENDGRID_PASSWORD']

Step3. 実際に send_mail を使う。