sendgridに関わるメモ
メモ
さくらVPSからsendgridを使うとお得。
https://vps-news.sakura.ad.jp/sendgrid1/
https://simpleit.rocks/python/django/adding-email-to-django-the-easiest-way/
上記リンクについて補足
djangoのメール送信はsend_mailで送信できるが、sendgridを使う場合当該ライブラリをインストールしてsettings.pyを指定の通りに変更するだけでsendgridからメールを送信する状態に切り替えることができる。
どうやってメモ本文をhtml形式にして表示させることができるのか
ホワイトリストとは
https://salt.iajapan.org/wpmu/anti_spam/universal/measure/whitelist-blacklist/
メール受信の選別基準のようだ。受信するか否かの判断をブラックリスト,ホワイトリストで定めるようだ。ホワイトリストは指定した人からのみメールを受信する構造でブラックリストは指定された人からのメールは受信しないようにする構造らしい。
メールの見出し字大きさ指定とかしたい場合
まずdjangoにはメール送信に関わるスクリプトが準備してある。メールを送信するならsend_mail()関数を利用すれば良い。djangoのsend_mail()関数の引数の本文は文字列なので、いろいろ細工したいときには不都合だと感じた。
そこでいかなる方法を取れば単なる文字列から細工した状態に、もっと欲を言えば、htmlを反映したメール本文を表示できるか調べてみる。
考えられる方法として引数にhtmlファイルを渡すという方法が考えられる。方法としてsendgridにテンプレートを作り、それを送信する。引数にjsonのデータを使うことでテンプレート内容も編集可能のようだ。下記参照。
https://qiita.com/kikutaro/items/6513acd7420ee88839e9
その他の方法としてrender_to_string関数を用いるとテンプレートにカスタマイズできるようだ。下記参照
https://narito.ninja/blog/detail/64/
https://docs.djangoproject.com/ja/2.2/topics/templates/#django.template.loader.render_to_string
from django.template.loader import render_to_string from django.core.mail import send_mail subject = "件名" context = dict() context["client_name"] = client.name context["orderId"] = orderId template = "orders/mails/order_cofirm.txt" message = render_to_string(template,context) recipient_list = [] recipient_list.append(client.email) send_mail(subject, message, from_email, recipient_list)
変数templateはdjangoでテンプレートを指定するやり方で指定する。これはrender_to_strung関数の動きがテンプレート探索の方法をとっているからだ。つまり上記の変数templateを定めるならばorder_confirm.txtのパスは以下になる。project/orders/templates/orders/mails/order_confirm.txt
sendgridで改行コード"¥n"を使いたい
上記によるとsendgridの仕様による影響で改行コードが反映されていないようだ。これについては以下を見るともっと分かりやすい。
https://qiita.com/Sekky0905/items/955a73e51ceb1671d4af
sendgridの仕様では、string型の文字列からhtmlに変換したものをメールとして配信するようだ。
”””Turn on if you don't want to convert your plain text email to HTML”””settings/mail settings/ plain content参照。 自分の設定もoffになっていたのでonにして試してみる。試した結果無事に改行が反映された文面でメールを送ることができました。