iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
自我挑戰組

菜雞從零開始學習Django的成長日記系列 第 29

Day29 實作信件發送功能(2)

昨天我們已經做好事前準備了,那我們今天就回到views裡面,來撰寫我們的程式吧!

而我們這次使用的函式是Django裡的send_mail(),而他的格式是這樣:

send_mail(
    'Subject here',
    'Here is the message.',
    'from@example.com',
    ['to@example.com'],
    fail_silently=False,)

第一個要輸入的是你的標題,第二個是你裡面要輸入的訊息,第三個是寄件人的電子信箱,第四個是收件人的電子信箱。

知道他的格式後,我們就來開始撰寫我們的程式了吧!
而以下是我幫大家先寫好的程式,大家可以先試試看效果!

from django.http.response import JsonResponse
from django.shortcuts import render
from django.core.mail import send_mail
from Test import settings
import json
from django.views.decorators.csrf import csrf_exempt
# Create your views here.
@csrf_exempt
def send(request):
    if request.method == "POST":
        data = request.body
        data = json.loads(data)
        try:
            sender = settings.DEFAULT_FROM_EMAIL
            receiver = "test@gmail.com"
            title = "嘗試發送信件"
            message = "恭喜你成功發送訊息!"
            send_mail(title, message, sender, [receiver])
            mess = {"message":"0"}
        except Exception as e:
            print(e)
            mess = {"message":"1"}
    return JsonResponse(mess)

上面先把一些需要的東西import上去後,第一行的@csrf_exemp是表示不加入csrf的保護,不打這串的話可能會報錯。
之後把我們的request請求方法設定成POST,接下來設定data的型態,設定完後,就開始設定sned_mail()裡面需要的變數了。

大家應該還記得前幾天有先在setting設定我們的資料嗎?而sender就是設定成DEFAULT_FROM_EMAIL,receiver就輸入自己要接收信件的信箱,後面的title及message就可以依照自己的想法寫。
而mess這個變數是會顯示在Postman上面的,如果顯示0的話就代表已經成功,顯示1的話就可能程式有發生什麼錯誤,需要Debug。

這邊設定完了之後,要記得到urls設定路徑:

設定完後,就把伺服器run起來。之後回到Postman輸入完網址後,按send後,應該會出現下面的畫面:

而下面message出現0就代表成功發送了,可以到你的信箱看看有沒有收到信件。

收到這封信就代表你已經成功了!
今天也就差不多到這邊了!這系列也差不多到了尾聲了!
謝謝各位這幾天的支持,其他的我們就留在明天的結語吧!
大家掰掰~


上一篇
Day28 實作信件發送功能(1)
下一篇
Day30 結語
系列文
菜雞從零開始學習Django的成長日記30

尚未有邦友留言

立即登入留言