English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Django 이메일 전송

   Django提供了一个现成的,易于使用发送电子邮件的轻型引擎。类似Python,你需要导入smtplib。在Django中只需要导入django.core.mail。要发送电子邮件,编辑项目settings.py文件,并设置下列选项−

EMAIL_HOST − smtp 服务器 EMAIL_HOST_USER − 登录凭证SMTP服务器     EMAIL_HOST_PASSWORD − SMTP服务器密码凭证     EMAIL_PORT − smtp服务器端口     EMAIL_USE_TLS 或   _SSL − 如果设置为True则为安全连接。    

发送一个简单的电子邮件

让我们创建一个“sendSimpleEmail”视图发送一个简单的电子邮件。

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from django.core.mail import send_mail
 from django.http import HttpResponse
 def sendSimpleEmail(request, emailto):
    res = send_mail("hello paul", "comment tu vas?", "xxx@w")3codebox.com", [emailto])
    return HttpResponse('%s'%res)

codebox.com", [emailto])

send_mail 매개변수의 세부 사항은 다음과 같습니다 − − E-subject     message − E-이메일 제목     from_email − E-이메일 주제 내용     이메일 발신자 recipient_list     fail_silently − 수신자 이메일 주소 목록     auth_user − 부울, false이면 send_mail이 오류가 발생할 때 예외를 발생시킵니다     auth_password − 사용자 로그인, settings.py에 설정되어 있지 않으면     connection − E-mail 백엔드     html_message − (Django1.7중에서 새로 추가된 기능이 있으면, 이 이메일은 multipart로 처리됩니다./대체 가능.    

− 사용자 비밀번호, settings.py에 설정되어 있지 않으면 -

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from django.conf.urls import patterns, url
 우리의 뷰 URL을 방문하여/(?P<emailto>
    [\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/', 
    urlpatterns = patterns('myapp.views', url(r'^simpleemail

'sendSimpleEmail', name='sendSimpleEmail'),) /myapp/따라서, 방문 시/  [email protected]/ simpleemail  

send_mass_mail을 사용하여 여러 이메일을 보내면 다음 페이지로 이동합니다 −

메서드는 send_mail과 마찬가지로 메시지를 성공적으로 전송한 횟수를 반환합니다. 추가 매개변수가 필요합니다; datatuple, 우리의 sendMassEmail 뷰는 다음과 같습니다 −

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from django.core.mail import send_mass_mail
 from django.http import HttpResponse
 def sendMassEmail(request, emailto):
    msg1 = ('subject 1', 'message 1', '[email protected]', [emailto1])
    msg2 = ('subject 2', 'message 2', '[email protected]', [emailto2])
    res = send_mass_mail((msg1, msg2), fail_silently=False)
    return HttpResponse('%s'%res)

우리의 뷰 URL을 방문하여 만들어주세요 −

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from django.conf.urls import patterns, url
 urlpatterns = patterns('myapp.views', url(r'^massEmail/(?P<emailto1>
    [\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/(?P<emailto2>
    [\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})', 'sendMassEmail', name='sendMassEmail'),)

우리가 방문할 때 /myapp/massemail/[email protected]/[email protected]/, 우리는 다음을 얻습니다 −  

send_mass_mail 매개변수의 세부 사항은 다음과 같습니다 −

datatuples    − 튜플, 각 요소는 다음과 같은 형식입니다 (주제, 메시지, 발신 이메일, 수신자 목록)     fail_silently − 부울, false이면 send_mail은 오류가 발생할 때 예외를 발생시킵니다     auth_user − 사용자 로그인, settings.py에 설정되지 않았을 경우     auth_password − 사용자 비밀번호, settings.py에 설정되지 않았을 경우     connection − E-mail 백엔드    

위 이미지에서 볼 수 있듯이, 두 가지 메시지가 성공적으로 전송되었습니다.

주의 - 이 예제에서는 Python의 smtpd debuggingserver를 사용하며, 다음 명령어로 시작할 수 있습니다. −

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
$python -m smtpd -n -c DebuggingServer localhost:1025

이는 모든 전송된 이메일이 stdout에 출력되고 localhost에서 실행되는 가상 서버에 의해 처리된다는 것을 의미합니다:1025.

mail_admins와 mail_managers 메서드를 사용하여 관리자와 관리자에게 이메일을 보냅니다.

이 메서드는 settings.py 파일의 ADMINS 옵션으로 정의된 웹 사이트 관리자에게 이메일을 보냅니다. settings.py 파일의 MANAGERS 항목에 정의된 웹 사이트 관리자가 looks like 다음과 같습니다.-

ADMINS   = (('polo', '[email protected]'),)

MANAGERS = (('popoli', '[email protected]'),)

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from django.core.mail import mail_admins
 from django.http import HttpResponse
 def sendAdminsEmail(request):
    res = mail_admins('my subject', 'site is going down.')
    return HttpResponse('%s'%res)

위 코드는 ADMINS 부분에서 정의된 각 관리자에게 이메일을 보냅니다.

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from django.core.mail import mail_managers
 from django.http import HttpResponse
 def sendManagersEmail(request):
    res = mail_managers('my subject 2', '사이트 날짜 변경')
    return HttpResponse('%s'%res)

위 코드는 MANAGERS 부분에서 정의된 각 관리자에게 이메일을 보냅니다.

파라미터 상세 정보 −

Subject − E-mail 제목.     message − E-mail 주제.     fail_silently − 부울, false이면 send_mail은 오류가 발생할 때 예외를 발생시킵니다     connection − E-mail 백엔드.     html_message − (Django1.7중에서 새로 추가된 기능이 있으면, 이 이메일은 multipart로 처리됩니다./대체 가능.    

HTML E를 보내기-mail

Django>=1.7HTML 메시지와 같이 간단하게 보내bilir -

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from django.core.mail import send_mail
 from django.http import HttpResponse
    res = send_mail("hello paul", "comment tu vas?", "[email protected]", 
          ["[email protected]"], html_message=")

이는 multipart/대체 이메일.

하지만 Django<1.7 HTML 이메일은 django.core.mail.mailMessage 클래스를 사용하여 완료되며, 그 다음 "send" 객체를 호출합니다 −

HTML 이메일을 보내는 "sendHTMLEmail" 뷰를 생성하겠습니다.

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from django.core.mail import EmailMessage
 from django.http import HttpResponse
 def sendHTMLEmail(request, emailto):
    html_content = "<strong>Comment tu vas?</strong>"
    email = EmailMessage("my subject", html_content, "[email protected]", [emailto])
    email.content_subtype = "html"
    res = email.send()
    return HttpResponse('%s'%res)

상세 정보의 파라미터를 포함한 이메일 메시지 생성 클래스 −

Subject − E-mail 제목.     message − E-mail HTML 본문.     from_email − E-mail 발신자.     to − 수신자 이메일 주소 목록.     bcc − "밀송" 수신자 이메일 주소 목록.     connection − E-mail 백엔드.    

접근 가능한 뷰 URL을 생성하겠습니다 −

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from django.conf.urls import patterns, url
 urlpatterns = paterns('myapp.views', url(r'^htmlemail/(?P<emailto>
    [\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/', 
    'sendHTMLEmail', name = 'sendHTMLEmail'),)

우리가 방문할 때 /myapp/htmlemail/[email protected], 다음과 같은 내용을 받게 됩니다 −  

첨부 파일이 있는 이메일을 보내기

이는 해당 EmailMessage 객체의 "attach" 메서드를 사용하여 수행됩니다.

다음과 같은 첨부 파일을 포함한 이메일을 보내는 뷰가 있습니다 −

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from django.core.mail import EmailMessage
 from django.http import HttpResponse
 def sendEmailWithAttach(request, emailto):
    html_content = "Comment tu vas?"
    email = EmailMessage("my subject", html_content, "[email protected]", emailto)
    email.content_subtype = "html"
    fd = open('manage.py', 'r')
    email.attach('manage.py', fd.read(), 'text/plain)
    res = email.send()
    return HttpResponse('%s'%res)

첨부 파일 내의 상세 매개변수 −

filename − 첨부 파일의 이름     content − 첨부 파일의 내용.     mimetype − 첨부 파일의 MIME 타입.