بخش های اصلی

آموزش Django

Django – فرستادن ایمیل

Django برای فرستان ایمیل، یک موتور light داره که استفاده از آن راحتِه. مثلِ Python که برای آن smtplib را import کردین، در Django هم فقط باید django.core.mail را import کنین. برای شروع کار با ایمیل، فایلِ settings.py پروژه تان را ویرایش کنین و  آپشن های زیر را در آن تنظیم کنین :

  •  EMAIL_HOST – سرورِ smtp.
  •  EMAIL_HOST_USER – اعتبارنامه ی سرورِ smtp.
  •  EMAIL_HOST_PASSWORD – اعتبارنامه ی پسوردِ سرورِ smtp.
  •  EMAIL_PORT – پورت سرورِ smtp.
  •  EMAIL_USE_TLS or _SSL – درصورتی که ارتباط امن باشه، True است.

فرستادن یک ایمیل ساده

برای فرستادن یک ایمیل ساده، یک view با نامِ “sendSimpleEmail” ایجاد کنین.

from django.core.mail import send_mail
from django.http import HttpResponse

def sendSimpleEmail(request,emailto):
   res = send_mail("hello paul", "comment tu vas?", "paul@polo.com", [emailto])
   return HttpResponse('%s'%res)

در ادامه جزئیات پارامترهایِ send_mail را آورده ایم :

  •  subject – موضوعِ ایمیل.
  •  message – بدنه ی ایمیل.
  •  from_email – فرستنده ی ایمیل.
  •  recipient_list – لیستی از آدرس ایمیل دریافت کننده های ایمیل.
  •  fail_silently – از نوعِ Bool است، اگه false باشه، send_mail بعنوان خطا یک exception ایجاد می کنه.
  •  auth_user – لاگینِ کاربر، در صورتی که در settings.py تعریف نشده باشه.
  •  auth_password – پسورد کاربر، در صورتی که در settings.py تعریف نشده باشه.
  •  connection – backend ایمیل.
  •  html_message – (در Django 1.7 جدید است) درصورت وجود، ایمیل چندبخشی/alternative خواهد شد.

درادامه برای دسترسی به view، یک URL ایجاد می کنیم :

from django.conf.urls import patterns, url

urlpatterns = paterns('myapp.views', url(r'^simpleemail/(?P<emailto>
   [w.%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4})/', 
   'sendSimpleEmail' , name = 'sendSimpleEmail'),)

بنابراین اگه به /myapp/simpleemail/polo@gmail.com برین، صفحه ای بصورت زیر خواهید دید :

sending simple email

فرستادن چند ایمیل با send_mass_mail

این متد تعداد پیام هایی که با موفقیت فرستاده شدن را برمی گرداند و دقیقاً مثل send_mail است با این تفاوت که یک پارامتر اضافی هم میگیره؛ datatuple، بعد از انجام تغییرات، viewیِ sendMassEmail بصورت زیر خواهد بود:

from django.core.mail import send_mass_mail
from django.http import HttpResponse

def sendMassEmail(request,emailto):
   msg1 = ('subject 1', 'message 1', 'polo@polo.com', [emailto1])
   msg2 = ('subject 2', 'message 2', 'polo@polo.com', [emailto2])
   res = send_mass_mail((msg1, msg2), fail_silently = False)
   return HttpResponse('%s'%res)

در ادامه برای دسترسی به view یک URL ایجاد می کنیم :

from django.conf.urls import patterns, url

urlpatterns = paterns('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/polo@gmail.com/sorex@gmail.com/ بریم –

sending multiple mails

جزئیات پارامترِ send_mass_mail بشرح زیرِه:

  • datatubles – tuple جاییِه که هر عنصری مثلِ (subject, message, from_email, recipient_list) در آن قرار داره.
  •  fail_silently – از نوعِ Bool است، اگه false باشه، send_mail بعنوان خطا یک exception ایجاد می کنه.
  •  auth_user – لاگینِ کاربر، در صورتی که در settings.py تعریف نشده باشه.
  •  auth_password – پسورد کاربر، در صورتی که در settings.py تعریف نشده باشه.
  • connection – backend ایمیل.

همانطور که در عکس بالا مشاهده می کنین، دو پیام با موفقیت فرستاده شده ان.

نکته – در این مثال از Python smtp debuggingserver استفاده می کنیم که می توانید با استفاده از کد زیر آن را اجرا کنین:

$python -m smtpd -n -c DebuggingServer localhost:1025

این به این معنیِه که همه ی ایمیل های فرستاده شده در stdout چاپ میشن و سرورِ dummy روی localhost:1025 اجرا میشه. فرستادن ایمیل به مدیرها و متصدیان با متدهای mail_admins و mail_managers

همانطور که در آپشنِ ADMINS و آپشنِ MANAGERS در فایلِ settings.py تعیین شده، این متدها ایمیل ها را برای مدیران سایت می فرستن. فرض می کنیم که آپشن های ANDMINS و MANAGERS بصورت زیر هستن –

ADMINS = (('polo', 'polo@polo.com'),)

MANAGERS = (('popoli', 'popoli@polo.com'),)

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 یک ایمیل میفرسته.  

from django.core.mail import mail_managers
from django.http import HttpResponse

def sendManagersEmail(request):
   res = mail_managers('my subject 2', 'Change date on the site.')
   return HttpResponse('%s'%res)

کد بالا به تمام متصدی های تعریف شده در بخشِ MANAGERS یک ایمیل می فرسته.

جزئیات پارامترها:

  • Subject – موضوعِ ایمیل.
  • message – بدنه ی ایمیل.
  •  fail_silently – از نوعِ Bool است، اگه false باشه، send_mail بعنوان خطا یک exception ایجاد می کنه.
  •  auth_connection – backend ایمیل.
  • html_message – (در Django 1.7 جدید است) درصورت وجود، ایمیل چندبخشی/alternative خواهد شد.

فرستادن ایمیلِ HTML

فرستادن پیامِ HTML در Django >= 1.7 بسیار ساده ست :

from django.core.mail import send_mail

from django.http import HttpResponse
   res = send_mail("hello paul", "comment tu vas?", "paul@polo.com", 
         ["polo@gmail.com"], html_message=")

کد بالا یک ایمیلِ چندبخشی/alternative ایجاد می کنه.

در Djangoهای > 1.7، فرستادن پیام هایِ HTML با کلاسِ django.core.mail.EmailMessage و فراخوانیِ ‘send’ در شیء، انجام میشه –

در ادامه برای فرستان ایمیلِ HTML یک view با نامِ "sendHTMLEmail" ایجاد می کنیم.

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, "paul@polo.com", [emailto])
   email.content_subtype = "html"
   res = email.send()
   return HttpResponse('%s'%res)

جزئیاتِ پارامترهایِ ایجادِ کلاسِ EmailMessages به شرح زیرِه:

  •  Subject – موضوعِ ایمیل.
  •  message – بدنه ی Email با زبانِ HTML.
  •  from_email – فرستنده ی ایمیل.
  •  to – لیستی از آدرس ایمیل دریافت کننده های ایمیل.
  •  bcc – لیستی از آدرس ایمیل دریافت کننده هایِ bcc ایمیل.
  •  connection – backend ایمیل.

در ادامه یک URL برای دسترسی به view ایجاد می کنیم:

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/polo@gmail.com برین، خروجی بصورت زیر خواهید دید –

sending html email

فرستادن ایمیل به همراهِ ضمیمه

این کار با متدِ ‘attach’ در شیِ EmailMessage انجام میشه.

view برای فرستان ایمیل به همراه ضمیمه بصورت زیر خواهد بود :

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, "paul@polo.com", 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)

جزئیاتِ آرگومان های attach به شرح زیرِه :

  • filename – نام فایلی که قراره ضمیمه بشه.
  • content - محتوای فایلی که قراره ضمیمه بشه.
  • mimetype – نوعِ mime مربوط به محتوایِ فایلِ ضمیمه.

مبحث آموزشی

آموزش Django

Learn Django

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

تبلیغات

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد