பல தொழில்துறைகள் தங்கள் இறுதிப் பயனர்களுக்கு மின்னஞ்சல்களை வழங்க எளிய அஞ்சல் பரிமாற்ற நெறிமுறையை (SMTP) பயன்படுத்திகொள்கின்றன. இயல்புநிலையில் இந்த SMTP ஆனது செய்திகளை மீட்டெடுக்கிறது, இருப்பினும் இது அதன் முதன்மைசெயல்பாடாக இல்லை.
Django போன்ற திறமூல கட்டமைப்புகள், ஒரு பைதான் அடிப்படையிலான இணைய கட்டமைப்பானது, செயலிகளையும் வெளிப்பாடுகளையும் பயன்படுத்தி மின்னஞ்சல்களை அனுப்பிடுவதற்கான கூடுதல் கட்டுப்பாட்டை அனுமதிக்கிறது. இவ்வாறான சூழலில் இந்தSMTP சேவையகத்தை எவ்வாறு கட்டமைப்பது SMTP ஐப் பயன்படுத்தி Django இல் மின்னஞ்சல்களை எவ்வாறு அனுப்புவது என்பதை இந்தக் கட்டுரையில் காண்போம்
.இதனுடைய செயல்திட்ட அமைப்பு , கண்ணோட்டம் ஆகியவற்றினை தொடர் வதற்கு முன், இந்த பயிற்சிக்கு நமக்கு விருப்பமான சாதனத்தில் குறிமுறைகளின் திருத்தி(VS Code அல்லது Codium போன்றவை) நம்மிடம் இருக்கவேண்டும். பின்வருமாறான முனையத்தில் உள்ள கட்டளைவரியைப் பயன்படுத்தி புதிய கோப்பகத்தை உருவாக்குவதன் மூலம் இதனை துவங்கிடுக
mkdir exampledirectory
பின்வருமாறானகட்டளைவரியைப் பயன்படுத்தி கோப்பகத்திற்கு மாற்றிடுக:
cd exampledirectory
புதிதாக உருவாக்கப்பட்ட கோப்பகத்தில், கட்டளை முனையத்தில் உள்ளமைக்கப்பட்ட பின்வருமாறான கட்டளைவரியின்மூலம் venv எனும் தகவமைவுகளைப் பயன்படுத்தி ஒரு மெய்நிகர் சூழலை உருவாக்கிடுக:
python -m venv
இந்த கட்டளைவரியானது முன்பு உருவாக்கப்பட்ட கோப்புறையில் ஒரு மெய்நிகர் சூழலை உருவாக்குகிறது. அதைச் செயல்படுத்த, முனையத்தில் பின்வரும் கட்டளைவரியைப் பயன்படுத்திடுக:
லினக்ஸ் , மேக் ஆகிய இயக்கமுறைமைகளில்:
source .virtenv/bin/activate
விண்டோஇயக்கமுறைமையில்:
\Scripts\activate
Django எனும் செயல்திட்டத்தை உருவாக்குதல்
மெய்நிகர் சூழலை செயல்படுத்திய பிறகு, pipஇலிருந்து டிஜாங்கோ எனும் தொகுப்பின் நிறுவுகை செயலை தொடர்ந்திடுக அதற்கானகட்டளைவரி:
pip install django
பின்வருமாறான கட்டளைவரியை பயனபடுத்திபுதிய டிஜாங்கோ செயல்திட்டத்தை உருவாக்கிடுக:
python -m django startproject NewEmailProject
இந்த கட்டளைவரியானது NewEmailProject என்ற பெயரில் ஒரு புதிய செயல் திட்டத்தை உருவாக்குகிறது. இந்த செயல்திட்டத்தை இயக்க, (NewEmailProject) எனும் இதனுடைய செயல்திட்டக் கோப்பகத்திற்கு சென்று இதன் சேவையாளரை இயக்கிடுக அதற்கான கட்டளைவரி பின்வருமாறு:
python manage.py runserver
மேம்படுத்துதல் சேவையாளருக்கான இணைப்பை இணையஉலாவியில் திறந்திடுக. உடன்வெளியீட்டு குறிப்புகளுடன் டிஜாங்கோ முகப்புப் பக்கத்தை திரையில் காணலாம்.
மின்னஞ்சல்களை அனுப்புவதற்கான கட்டமைப்பு
அடுத்து, Django ஐப் பயன்படுத்தி மின்னஞ்சல்களை அனுப்புவதற்கான உள்ளமைவுகளைத் தனிப்பயனாக்க settings.py எனும்கோப்பை (NewEmailProject கோப்புறையில்) திறந்திடுக. குறிமுறைவரிகளின் இறுதிவரை நகர்த்திசென்று, பின்வரும் குறிமுறைவரிகளைக் கொண்டு அந்தகோப்பைப் புதுப்பித்திடுக:
EMAIL_BACKEND = ‘django.core.mail.backends.smtp.EmailBackend’
EMAIL_HOST = ‘smtp.yourserver.com‘
EMAIL_USE_TLS = False
EMAIL_PORT = 465
EMAIL_USE_SSL = True
EMAIL_HOST_USER = ‘your@djangoapp.com‘
EMAIL_HOST_PASSWORD = ‘your password’
நம்முடைய மின்னஞ்சல் வாடிக்கையாளரைப் பொறுத்து EMAIL_HOST இன் மதிப்பை மாற்றிடுக. பொதுவான மின்னஞ்சல் வாடிக்கையாளர்களுக்கு ஏற்றுக்கொள்ளக்கூடிய மதிப்புகள் பின்வருமாறு அமைந்திருக்கும்:
• ஜிமெயில்: smtp.gmail.com
• அவுட்லுக்: smtp-mail.outlook.com
• யாகூ: smtp.mail.yahoo.com
தேவையெனில் EMAIL_PORT ஐ கூடமாற்றியமைத்திடலாம் அல்லது 465 ஐ இயல்புநிலையாக அமைத்திடலாம். பாதுகாப்பான உறையடுக்கு (SSL) , மாற்றக்கூடியஉரையடுக்கு (TSL) ஆகியவை இணைப்பின் பாதுகாப்பைக் குறிப்பிடுவதால் ஒன்றுக்கொன்று மாற்றாகப் பயன்படுத்திகொள்ளலாம். மின்னஞ்சல் சேவையகத்திற்கான பிற தனிப்பயன் உள்ளமைவுகளைக் கண்டுபிடிக்க, முழு டிஜாங்கோ செயல்திட்ட ஆவணத்தைப் பார்வையிடுக.
SMTP மின்னஞ்சல் பின்புலதளம்
Django இல் SMTP சேவையகம் மூலம் மின்னஞ்சல்களை அனுப்பும் போது EMAIL_BACKEND வெளிப்பாடு மிகவும் பொருத்தமான பின்புலதளத்தை தீர்மானிக்க உதவுகிறது. இந்த மாறியானது smtp.EmailBackend என்பதை சுட்டிக்காட்டுகிறது, இது மின்னஞ்சல்களை அனுப்புவதற்கு தேவையான அனைத்து அளவுருக்களையும் பெறுகிறது. இது SMTP ஐப் பயன்படுத்தி பெறுநரின் மின்னஞ்சலுக்கு மின்னஞ்சலை அனுப்பிடுமாறு டிஜாங்கோவிடம் கூறுகிறது, கணினியின்மையசெயலகத்திற்கு அன்று என்ற செய்தியை மனதில் கொள்க.
SMTP மூலம் மின்னஞ்சல்களை அனுப்புதல்
மின்னஞ்சல் அனுப்புகின்றசூழல் அமைக்கப்பட்டு, settings.py என்பது புதுப்பிக்கப்படும் போது, Django இல் மின்னஞ்சல்களை அனுப்பலாம். ஒரு HTML படிவத்தைப் பயன்படுத்துகொள்ளலாம், இது மின்னஞ்சலை அனுப்புவதற்குத் தேவையான தகவல்களின் இடுகை கோரிக்கையை அனுப்புகிறது. பின்வருமாறான கட்டளைவரியை பயன்படுத்தி மின்னஞ்சல்களை அனுப்ப டிஜாங்கோ பயன்பாட்டை உருவாக்கிடுக:
python manage.py startapp mail
அடுத்து, settings.py எனும் கோப்பைத் திறந்து, மின்னஞ்சலிற்கான Django பயன்பாட்டை INSTALLED_APPS எனும் பட்டியலில் சேர்த்திடுக அதற்கான குறிமுறைவரிகள் பின்வருமாறு:
INSTALLED_APPS = [
“django.contrib.admin”,
“django.contrib.auth”,
“django.contrib.contenttypes”,
“django.contrib.sessions”,
“django.contrib.messages”,
“django.contrib.staticfiles”,
“mail”]
மின்னஞ்சலை அனுப்பிடும் செயலி
மின்னஞ்சல் பயன்பாட்டின் views.py எனும்கோப்பில், django.core.mailஎன்பதிலிருந்து EmailMessage , get_connection ஆகியவற்றினை பதிவிறக்கம் செய்வதன் மூலம் தொடங்கிடுக அதற்கான கட்டளைவரிபின்வருமாறு:
from django.core.mail import EmailMessage, get_connection
மின்னஞ்சல் செய்தியை உருவாக்குவதற்கு EmailMessage எனும் இனமே பொறுப்பாகும். get_connection() எனும் செயலி EMAIL_BACKEND இல் குறிப்பிடப்பட்ட மின்னஞ்சல் பின்புலதளத்தின் நிகழ்வை வழங்குகிறது. வாடிக்கையாளர் தரப்பிலிருந்து சமர்ப்பிக்கப்பட்ட படிவத்தரவைக் கொண்ட POSஎனும் கோரிக்கையை ஏற்கும் செயலியை இப்போது உருவாக்கிடுக. settings.py எனும் செயல்திட்ட கோப்பில் உருவாக்கப்பட்ட மின்னஞ்சல் உள்ளமைவுகளைக் கொண்ட get_connection() எனும் செயலிகள் அளவுருக்களால் பின்பற்றப்படுகிறது. அடுத்து, பின்வருமாறான கட்டளைவரியின்மூலம் அமைப்புகளை பதிவிறக்கம் செய்க:
from django.conf import settings
இந்த பதிவிறக்கமானது settings.py என்பதில் உருவாக்கப்பட்ட மின்னஞ்சல் உள்ளமைவுகளுக்கான அணுகலை அனுமதிக்கிறது. அடுத்து, பின்வருமாறான கட்டளைவரியின்மூலம் மாறிகளை உருவாக்கிடுக:
subject, recipient_list,
இதன் பின்னர் மின்னஞ்சல் செய்தி அனுப்பலாம் HTML படிவத்தில் பயன்படுத்தப்படும் தொடர்புடைய பண்புகளை சேமிக்கலாம். email_from மாறியில் அனுப்புநர் மின்னஞ்சல் உள்ளது, இது settings.py எனும் கோப்பில் EMAIL_HOST_USER இடமிருந்து பெறப்பட்டது. மாறிகள் செயலாக்கப்பட்ட பிறகு, EmailMessage எனும் இனம் sends() எனும் வழிமுறையைப் பயன்படுத்தி ஒரு மின்னஞ்சலை அனுப்புகிறது, பின்னர் இணைப்பை மூடுகிறது. send_email() எனும் செயலியானது மின்னஞ்சல் படிவத்தைக் கொண்ட home.html எனும் கோப்பை வழங்குகிறது. மின்னஞ்சல் பயன்பாட்டிற்குள் மாதிரிபலக கோப்புறையை உருவாக்கி, HTML கோப்புகளை அந்தக் கோப்புறையில் சேமிக்கலாம் அதற்கான குறிமுறைவரிகள் பின்வருமாறு:
from django.core.mail import EmailMessage, get_connection
from django.conf import settings
def send_email(request):
if request.method == “POST”:
with get_connection(
host=settings.EMAIL_HOST,
port=settings.EMAIL_PORT,
username=settings.EMAIL_HOST_USER,
password=settings.EMAIL_HOST_PASSWORD,
use_tls=settings.EMAIL_USE_TLS
) as connection:
subject = request.POST.get(“subject”)
email_from = settings.EMAIL_HOST_USER
recipient_list = [request.POST.get(“email”), ]
message = request.POST.get(“message”)
EmailMessage(subject, message, email_from, recipient_list, connection=connection).send()
return render(request, ‘home.html’)
இது ஒரு செய்தியை உருவாக்குவதற்கான bootstrap எனும்படிவம் பின்வருமாறு:
<form method=”post” action=”.”>
{% csrf_token %}
<div class=”mb-3″>
<label for=”exampleFormControlInput1″ class=”form-label”>Receipt email address</label>
<input type=”text” class=”form-control” name=”email” id=”exampleFormControlInput1″ placeholder=”Receipt email address”>
</div>
<div class=”mb-3″>
<label for=”exampleInputSubject” class=”form-label”>Subject</label>
<input type=”text” class=”form-control” name=”subject” id=”exampleInputSubject”>
</div>
<div class=”mb-3″>
<label for=”exampleFormControlTextarea1″ class=”form-label”>Message</label>
<textarea class=”form-control” id=”exampleFormControlTextarea1″ name=”message” rows=”3″></textarea>
</div>
<button type=”submit” class=”btn btn-primary”>Send</button>
</form>
இந்தப் படிவம் send_email() செயலிக்கு ஒரு இடுகைக்கான கோரிக்கையை அனுப்புகிறது. இது படிவத் தரவைச் செயலாக்குகிறது பெறுநர்களுக்கு மின்னஞ்சலை அனுப்புகிறது. இப்போது முகப்புப் பக்க URL ஐ உருவாக்க, NewEmailProject எனும் கோப்புறையில் urls.py எனும் கோப்பைத் திறந்திடுக. (“”, send_email) எனும் குறிமுறைவரிகளின் பாதையை சேர்ப்பதன் மூலம் urlpattern எனும் பட்டியலைப் புதுப்பித்திடுக.
பல்வேறு பெறுநர்களுக்கு மின்னஞ்சல் அனுப்புதல்
ஒரே மின்னஞ்சலை பல்வேறு பெறுநர்களுக்கு அனுப்பும் போது பல்வேறு பெறுநர்களின் முகவரியைக் குறிப்பிட, views.py எனும் கோப்பில் send_emails எனும் புதிய செயலியை உருவாக்கி, அனுப்பிடுவதற்கான செயல்பாட்டுக் குறிமுறைவரிகளை பின்வருமாறு மாற்றியமைத்திடுக:
def send_emails(request):
if request.method == “POST”:
with get_connection(
host=settings.EMAIL_HOST,
port=settings.EMAIL_PORT,
username=settings.EMAIL_HOST_USER,
password=settings.EMAIL_HOST_PASSWORD,
use_tls=settings.EMAIL_USE_TLS
) as connection:
recipient_list = request.POST.get(“email”).split()
subject = request.POST.get(“subject”)
email_from = settings.EMAIL_HOST_USER
message = request.POST.get(“message”)
print(type(recipient_list))
EmailMessage(subject, message, email_from,
recipient_list, connection=connection).send()
return render(request, ‘send_emails.html’)
இதில் recipient_list எனும் மாறிக்கு, பெறுநர்களின் மின்னஞ்சல் சரத்தை பட்டியலாக மாற்றியமைத்திடுவதற்காக Python split() எனும் வழிமுறையைப் பயன்படுத்திடுமாறு பரிந்துரைக்கப்படுகின்றது, அதனால் அனைவருக்கும் மின்னஞ்சல் அனுப்ப முடியும். அடுத்து,மாதிரிபலகத்தின் கோப்புறையில் send_emails.html எனும் மற்றொரு HTML இனஅ கோப்பை உருவாக்கி, அதில் உள்ள home.html எனும்கோப்பிற்கும் அதே படிவக் குறிமுறைவரிகளைப் பயன்படுத்திகொள்க. பல மின்னஞ்சல் பெறுநர்களைக் குறிப்பிட, ஒவ்வொரு மின்னஞ்சல் முகவரிக்கும் இடையில் காலியான இடைவெளியைப் பயன்படுத்திடுக இதற்கான கட்டளைவரிபின்வருமாறு:
first@gmail.com second@gmail.com third@gmail.com
பின்வருமாறான கட்டளைவரியின் உதவியுடன் குறிமுறைவரிகளை சேர்ப்பதன் மூலம் urlpattern எனும் பட்டியலையும் புதுப்பித்திடுக:
path(“send-emails/”, send_email)
HTML மின்னஞ்சல்களை அனுப்புதல்
send_email எனும் செயலியின் சற்று மாற்றியமைக்கப்பட்ட பதிப்பைப் பயன்படுத்தி டிஜாங்கோவுடன் HTML மின்னஞ்சல்களையும் அனுப்பலாம்இதற்கான கட்டளைவரிகள்பின்வருமாறு:
html_message = ”'<h1>this is an automated message</h1>”’
msg = EmailMessage(subject, html_message, email_from,recipient_list, connection=connection)
msg.content_subtype = “html”
msg.send()
இணைப்புகளுடன் மின்னஞ்சல்களை அனுப்புதல்
மின்னஞ்சல்களில் இணைப்பைச் சேர்க்க, ஒரு மாறியை உருவாக்கி, பின்வருமாறானகட்டளைவரியை பயன்படுத்தி இணைப்பு கோப்பு இருக்கும் கோப்புறையின் பாதையில் இது போன்ற ஒரு சரத்தில் வைத்திடுக:
attachment = “mail/templates/example.png”
பின்னர், EmailMessage எனும் செயலியை ஒரு மாறிக்கு நகர்த்தி, மின்னஞ்சலை அனுப்பும் வழிமுறையைத் தொடர்ந்து add_file எனும் வழிமுறையை அழைத்திடுக:
msg = EmailMessage(subject, message, email_from,
recipient_list, connection=connection)
msg.attach_file(attachment)
msg.send()
டிஜாங்கோ மின்னஞ்சல் நூலகங்கள்
பயனர்களுக்குக் கிடைக்கும் மின்னஞ்சல் நூலகங்களைப் பற்றி குறிப்பிடவில்லை என்றால், டிஜாங்கோவில் மின்னஞ்சல்களை அனுப்புவதற்கான இந்த வழிகாட்டி முழுமையடையாது. பின்வருமாறான சில குறிப்பிடத்தக்க மின்னஞ்சல் நூலகங்கள் உள்ளன.
• Django mailer என்பது தரவுத்தளத்தில் மின்னஞ்சல்களைச் சேமித்து, குறிப்பிட்ட நேரத்தில் மின்னஞ்சலை அனுப்புவதால் வரிசையில் நிற்பதற்கான Django பயன்பாடாகும்.
• Django templated மின்னஞ்சலின் மாதிரி பலகமானது மின்னஞ்சல்களை அனுப்புவதை நோக்கமாகக் கொண்டுள்ளது. இது கட்டமைக்கக்கூடிய மாதிரிபலக பெயரிடுதல் , இருப்பிடம், மாதிரிபலக மரபுரிமை , CC , BCC பட்டியல்களில் பெறுநர்களைச் சேர்ப்பது போன்ற வசதிவாய்ப்புகளை வழங்குகிறது.
• Anymail என்பதுமின்னஞ்சல் சேவை வழங்குநரை (ESP) பயன்படுத்த அனுமதிக்கிறது.
django.core.mail ஐப் பயன்படுத்துவதன் மூலம், இது குறிமுறைவரிகளை ஒரு ESP உடன் இணைப்பதைத் தவிர்க்கும் ஒரு நிலையான API ஐ வழங்குகிறது. டிஜாங்கோவுடன் மின்னஞ்சல் அனுப்புதல்
டிஜாங்கோவில் மின்னஞ்சல்களை அனுப்புவது அச்சுறுத்தலாகத் தோன்றலாம், ஆனால் இது ஒரு மெய்நிகர் சூழலை உருவாக்குவது போன்று எளிமையானது. நம்முடைய சூழலில் டிஜாங்கோவைச் சேர்த்து மின்னஞ்சல் பின்புலதளத்தை உருவாக்கலாம். இறுதியாக, ஒரு HTML இன் மாதிரி பலகத்தைகூட நாமே அமைக்கலாம். ஒரு முறைதான் முயற்சி செய்திடுங்களேன்.