在django專案中傳送郵件

2021-09-09 07:15:12 字數 2632 閱讀 4602

# 將郵件列印在命令列視窗中

# email_backend = "django.core.mail.backends.console.emailbackend"

email_backend = "django.core.mail.backends.smtp.emailbackend" # qq

# 郵件主機, 預設是localhost, 此處使用的是qq郵箱, qq郵箱使用的是smtp

email_host = "smtp.qq.com"

# smtp服務埠, 預設25

email_post = 25

# smtp 伺服器的使用者名稱

email_host_user = "[email protected]"

email_host_password = "qq郵箱授權碼"

# 是否使用tls進行連線(tls一種加密方式)

email_use_tls = true

# form 用於生成標準的表單

# modelform 用於從模型中生成表單

from django import forms

class emailpostform(forms.form):

# charfield 會被渲染成name = forms.charfield(max_length=25)

email = forms.emailfield()

to = forms.emailfield()

# required=false 可選填 widget 引數決定該字段被渲染成的html元素型別 textarea content = forms.charfield(required=false, widget=forms.textarea)

from django.shortcuts import render, get_object_or_404  # get_object_or_404 如果匹配到,返回資料, 匹配不到返回404

from django.core.mail import send_mail

# 匯入的這兩個模組是自己寫好的,

from blog.models import post

from blog.forms import emailpostform

def post_share(request, post_id):

"""分享文章

:param request:

:param post_id:

:return:

"""post = get_object_or_404(post, id=post_id, status="published")

sent = false # sent 是否已傳送(自定義),

if request.method == "post":

# 表單被提交

form = emailpostform(request.post)

if form.is_valid(): # 呼叫表單的is_valid方法,驗證表單資料(驗證表單中所有的資料是否有效),如果有任意欄位未通過, 此時可以在form.errors屬性中檢視錯誤資訊

# 如果表單驗證失敗, form.cleaned_data只會包含通過驗證的資料

cd = form.cleaned_data # 取出表單資料,字典

# 傳送郵件

# build_absolute_uri 生成完整的url

post_url = request.build_absolute_uri(post.get_absolute_url())

subject = "{}({})分享給你{}".format(cd["name"], cd["email"], post.title)

message = "閱讀文章「{}」,文章的url:{}".format(post.title, post_url)

send_mail(subject, message, '[email protected]', [cd["to"]])

sent = true

else:

form = emailpostform()

# 這裡share.html會報錯,寫好第五步就可以了

return render(request, "share.html", )

urlpatterns = [

path("/share/", post_share, name="post_share")

]

分享一篇文章

"}" 已經成功傳送到}

在專案完成後, share.html返回的頁面如下,

mvc專案中傳送郵件

1 使用qq的smtp 收發郵件 登入qq 設定 賬戶管理 選擇如下圖 設定完成後,需要在web.config中配置 c 後台傳送郵件處理 我寫的乙個類檔案中 public static class mail client.usedefaultcredentials false private st...

C 中傳送郵件

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq using system.text u...

Linux中傳送告警郵件

1.準備乙個測試郵箱賬號 如fr 163.com,作為發件人。注意 保證郵箱的pop3 smtp是開啟狀態 如下 並且開通授權碼,記下自己郵箱的授權碼。set smtp auth password 剛剛的授權碼 set smtp auth login 3.測試一下 echo test content...