জ্যাঙ্গোর মাধ্যমে কীভাবে ইমেল প্রেরণ করবেন?


153

আমার মধ্যে settings.py, আমি নিম্নলিখিত আছে:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

# Host for sending e-mail.
EMAIL_HOST = 'localhost'

# Port for sending e-mail.
EMAIL_PORT = 1025

# Optional SMTP authentication information for EMAIL_HOST.
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False

আমার ইমেল কোড:

from django.core.mail import EmailMessage
email = EmailMessage('Hello', 'World', to=['user@gmail.com'])
email.send()

অবশ্যই, যদি আমি এর মাধ্যমে কোনও ডিবাগিং সার্ভার সেটআপ করি তবে আমি python -m smtpd -n -c DebuggingServer localhost:1025আমার টার্মিনালে ইমেলটি দেখতে পাচ্ছি।

তবে, আমি কীভাবে আসলে ইমেলটি ডিবাগিং সার্ভারে নয় বরং ব্যবহারকারী@gmail.com এ প্রেরণ করব?

আপনার উত্তরগুলি পড়ার পরে, আমাকে কিছু সোজা পেতে দাও:

  1. আপনি কি ইমেলগুলি প্রেরণে লোকালহোস্ট (সরল উবুন্টু পিসি) ব্যবহার করতে পারবেন না?

  2. আমি ভেবেছিলাম জাঙ্গো ১.৩ send_mail()এ কিছুটা অবমূল্যায়ন করা হয়েছে এবং এর EmailMessage.send()পরিবর্তে ব্যবহৃত হয়?


2
1. আপনার যদি সেখানে একটি এসএমটিপি সার্ভার চালু থাকে তবে আপনি লোকালহোস্ট ব্যবহার করতে পারেন । ২. সঠিক পদ্ধতিটি গুরুত্বহীন। গুরুত্বপূর্ণ অংশটি হ'ল আপনার একটি এসএমটিপি সার্ভার রয়েছে।
ইগনাসিও ওয়াজকেজ-আব্রামস

সুতরাং আমি যদি পোস্টফিক্স ইনস্টল করি তবে আমি ইমেলগুলি পাঠাতে / গ্রহণ করতে পারি? এটি করার জন্য আপনি কীভাবে পোস্টফিক্স সেট আপ করবেন?
ডেরেক

5
এই প্রশ্নটি এই সাইটের সুযোগের বাইরে।
ইগনাসিও ওয়াজকেজ-আব্রামস


4
তবুও এসইও আমাদের এই পৃষ্ঠায় নিয়ে যায়, ইগনাসিও।
ফিলিপ

উত্তর:


53

সত্যিকারের এসএমটিপি সার্ভারে ইমেলটি প্রেরণ করুন। আপনি যদি নিজস্ব সেট আপ না করতে চান তবে আপনি এমন সংস্থাগুলি খুঁজে পেতে পারেন যা আপনার জন্য গুগল যেমন নিজেরাই চালাবে।


3
দারুণ, আমি নিজেই একটি ইমেল! মিকু উল্লিখিত উপরের নিবন্ধটি নিখুঁত ছিল। নিবন্ধের মন্তব্যে ছোট টাইপ সংশোধন নোট করুন। (এবং আমি স্রেফ আমার নিয়মিত কম্পিউটার / লোকালহোস্ট ব্যবহার করেছি hand আমি হাতের সামনে আর কিছু সেট আপ করি নি))
ইউজার 984003

166

আমি জ্যাঙ্গো আমার এসএমটিপি সার্ভার হিসাবে জ্যাঙ্গোর জন্য ব্যবহার করি। পোস্টফিক্স বা অন্য যে কোনও সার্ভারের সাথে ডিল করার চেয়ে অনেক সহজ। আমি ইমেল সার্ভার পরিচালনার ব্যবসায়ে নেই।

Settings.py এ:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'me@gmail.com'
EMAIL_HOST_PASSWORD = 'password'

দ্রষ্টব্য : ২০১ In সালে জিমেইল ডিফল্টরূপে এটি আর অনুমতি দিচ্ছে না। আপনি হয় সেন্ডগ্রিডের মতো একটি বাহ্যিক পরিষেবা ব্যবহার করতে পারেন, বা সুরক্ষা হ্রাস করতে আপনি গুগলের এই টিউটোরিয়ালটি অনুসরণ করতে পারেন তবে এই বিকল্পটির অনুমতি দিন: https://support.google.com/accounts/answer/6010255


8
আপনার পাসওয়ার্ডকে একটি সরলপাঠ্য হিসাবে রেখে যাওয়ার বিকল্প আছে কি?
4:44

1
আপনি ম্যান্ড্রিলের মতো একটি ইমেল পরিষেবা ব্যবহার করতে পারেন যা পরিবর্তে আপনাকে একটি পাসফ্রেজ ব্যবহার করতে দেবে, যদিও আমি নিশ্চিত নই যে এটি আপনার জন্য আরও কোনও সহায়ক। আপনি আপনার সার্ভারে ইনস্টল করা একটি এনক্রিপশন কীটিও ব্যবহার করতে পারেন এবং EMAIL_HOST_PASSWORD = my_decrypt ('abi304hubaushl9rchy2y9fd29') এর মতো লাইনটি কিছু তৈরি করতে পারেন
জর্ডান

27
এটি একটি পরিবেশের পরিবর্তনশীল রাখুন। তারপরে, EMAIL_HOST_PASSWORD = os.en পরিবেশ ['MY_PASSWORD_THAT_YOU_CANT_KNOW']
ড্রিউ শ্যাফার

1
আমি আপনার কোড ভারব্যাটিম ব্যবহার করেছি। আমার জিমেইল অ্যাকাউন্টটি কয়েক দিন পরে অবরুদ্ধ করা হয়েছে। আমার সার্ভারটি সম্ভবত কমপক্ষে 20 টি ইমেল প্রেরণ করেছে। গুগল নিয়ে কারও কি এ জাতীয় সমস্যা ছিল?
ইউজিন

8
SMTPAuthenticationError এবং আমি একটি ইমেল পেয়েছি " আধুনিক সুরক্ষার মান পূরণ না করে এমন একটি অ্যাপ্লিকেশন থেকে ... সাইন ইন প্রচেষ্টা রোধ করা হয়েছে "। দেখে মনে হচ্ছে এই । " কম সুরক্ষিত অ্যাপ্লিকেশনগুলির জন্য অ্যাক্সেস চালু করে " কাজ করে। এবং যে কাজ করে
বব স্টেইন

40
  1. একটি প্রকল্প তৈরি করুন: django-admin.py startproject gmail
  2. নীচে কোড সহ editings.py সম্পাদনা করুন:

    EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
    EMAIL_USE_TLS = True
    EMAIL_HOST = 'smtp.gmail.com'
    EMAIL_HOST_USER = 'youremail@gmail.com'
    EMAIL_HOST_PASSWORD = 'email_password'
    EMAIL_PORT = 587
  3. ইন্টারেক্টিভ মোড চালান: python manage.py shell

  4. ইমেলমেসেজ মডিউলটি আমদানি করুন:

    from django.core.mail import EmailMessage
  5. ইমেল পাঠান:

    email = EmailMessage('Subject', 'Body', to=['your@email.com'])
    email.send()

আরও তথ্যের জন্য, নথিগুলিতে চেক send_mailএবং EmailMessageবৈশিষ্ট্যগুলি ।

Gmail এর জন্য আপডেট DATE

এছাড়াও আপনার যদি জিমেইলের মাধ্যমে ইমেল প্রেরণ করতে সমস্যা হয় তবে গুগল থেকে এই গাইডগুলি পরীক্ষা করে দেখুন ।

আপনার গুগল অ্যাকাউন্ট সেটিংসে, যান Security > Account permissions > Access for less secure appsএবং এই বিকল্পটি সক্ষম করুন।

এছাড়াও আপনার gmail জন্য একটি অ্যাপ্লিকেশন নির্দিষ্ট পাসওয়ার্ড তৈরি করার পর থাকেন চালু 2-ধাপে যাচাই এটির জন্য।

তারপরে আপনার সেটিংসে অ্যাপ্লিকেশন নির্দিষ্ট পাসওয়ার্ড ব্যবহার করা উচিত । সুতরাং নিম্নলিখিত লাইনটি পরিবর্তন করুন:

    EMAIL_HOST_PASSWORD = 'your_email_app_specific_password'

এছাড়াও যদি আপনি এইচটিএমএল ইমেল প্রেরণে আগ্রহী হন তবে এটি পরীক্ষা করে দেখুন


আমি আপনার পদক্ষেপগুলি অনুসরণ করি, আমি প্রেরণ করতে পারি না, ইমেলটিতে ইমেলটি গ্রহণ করে না /
qg_java_17137

দৃষ্টিভঙ্গি365 এর জন্য EMAIL_HOST কী হবে ?
অন্তু

14

আমার সাইটটিতে হোস্ট করা হয়েছে Godaddyএবং আমার একই সাথে নিবন্ধিত একটি ব্যক্তিগত ইমেল রয়েছে। এই সেটিংসটি যা আমার জন্য কাজ করেছে:

Settings.py এ:

EMAIL_HOST = 'mail.domain.com'
EMAIL_HOST_USER = 'abc@domain.com'
EMAIL_HOST_PASSWORD = 'abcdef'
DEFAULT_FROM_EMAIL = 'abc@domain.com'
SERVER_EMAIL = 'abc@domain.com'
EMAIL_PORT = 25
EMAIL_USE_TLS = False

আবরণের ভেতরে:

from django.core.mail import EmailMessage
email = EmailMessage('Subject', 'Body', to=['def@domain.com'])
email.send()

তারপরে আমি ও / পি অর্থাৎ সাফল্য হিসাবে "1" পেয়েছি। এবং আমি মেইল ​​পেয়েছি। :)

  • ডোমেইন ডট কমের অর্থ কী?

ধন্যবাদ, এটি পুরানো প্রকল্পগুলির জন্য সহজতম উপায় <জাজানো 1.4
ফ্রান্সোইস কনস্ট্যান্ট

13

জাজানো সংস্করণ ১.7 এর জন্য, উপরের সমাধানগুলি যদি কাজ না করে তবে নীচের বিষয়গুলি চেষ্টা করুন

মধ্যে settings.py অ্যাড

#For email
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

EMAIL_USE_TLS = True

EMAIL_HOST = 'smtp.gmail.com'

EMAIL_HOST_USER = 'sender@gmail.com'

#Must generate specific password for your app in [gmail settings][1]
EMAIL_HOST_PASSWORD = 'app_specific_password'

EMAIL_PORT = 587

#This did the trick
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

শেষ লাইনটি জাজানো 1.7 এর জন্য কৌশলটি করেছিল


এই কোনও কারণে আমার পক্ষে কাজ করে নি। পাসওয়ার্ডটি ভুল হওয়ায় আমি একটি ত্রুটি ফিরে পেয়েছি। যা আশ্চর্যজনক কারণ আমি শংসাপত্রগুলি সরাসরি মেলগান থেকে পেয়েছি।
অ্যালেক্স স্টুয়ার্ট

10

সেটিংস.পি- তে আপনাকে ব্যাকএন্ড হিসাবে smtp ব্যবহার করতে হবে

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

আপনি যদি কনসোল হিসাবে ব্যাকএন্ড ব্যবহার করেন তবে আপনি কনসোলে আউটপুট পাবেন

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

এছাড়াও অতিরিক্ত সেটিংস নীচে

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'urusername@gmail.com'
EMAIL_HOST_PASSWORD = 'password'

আপনি যদি এর জন্য জিমেইল ব্যবহার করছেন তবে 2-পদক্ষেপ যাচাইকরণ এবং অ্যাপ্লিকেশন নির্দিষ্ট পাসওয়ার্ড সেটআপ করুন এবং সেই পাসওয়ার্ডটি অনুলিপি করুন এবং EMAIL_HOST_PASSWORD মানের উপরে পেস্ট করুন।


5

জ্যাঙ্গোর সাথে ইমেল প্রেরণে সহজতম উপায় হিসাবে আমি সেন্ডগ্রিড ব্যবহার করে দেখতে পেলাম। এখানে কিভাবে এটা কাজ করে:

  1. একটি সেন্ডগ্রিড অ্যাকাউন্ট তৈরি করুন (এবং আপনার ইমেল যাচাই করুন)
  2. আপনার সাথে নিম্নলিখিতগুলি যুক্ত করুন settings.py: EMAIL_HOST = 'smtp.sendgrid.net' EMAIL_HOST_USER = '<your sendgrid username>' EMAIL_HOST_PASSWORD = '<your sendgrid password>' EMAIL_PORT = 587 EMAIL_USE_TLS = True

এবং আপনি প্রস্তুত!

ইমেল পাঠাতে:

from django.core.mail import send_mail
send_mail('<Your subject>', '<Your message>', 'from@example.com', ['to@example.com'])

আপনি যদি চান যে জ্যাঙ্গো যখনই আপনাকে ইমেল করতে পারে যখনই কোনও 500 অভ্যন্তরীণ সার্ভার ত্রুটি থাকে তবে নিম্নলিখিতটি আপনারটিতে যুক্ত করুন settings.py:

DEFAULT_FROM_EMAIL = 'your.email@example.com'
ADMINS = [('<Your name>', 'your.email@example.com')]

সেন্ডগ্রিডের সাথে ইমেল প্রেরণ প্রতি মাসে 12 কে ইমেল বিনামূল্যে।


1
দুর্দান্ত, তবে ডকুমেন্টেশন অনুসারে 'এপিকেই' ব্যবহার করে এটি ব্যবহার করতে সক্ষম হয়ে উঠেনি, এবং সেন্ডগ্রিড সরল মেইলের জন্য অ্যাপিকে প্রতি তিন ডজন অনুমতি কনফিগারেশন তালিকাভুক্ত করে ...
SYK

3

আমি আসলে কিছুক্ষণ আগে জাজানো থেকে এটি করেছি। একটি বৈধ GMail অ্যাকাউন্ট খুলুন এবং শংসাপত্রগুলি এখানে প্রবেশ করুন। আমার কোডটি এখানে -

from email import Encoders
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart

def sendmail(to, subject, text, attach=[], mtype='html'):
    ok = True
    gmail_user = settings.EMAIL_HOST_USER
    gmail_pwd  = settings.EMAIL_HOST_PASSWORD

    msg = MIMEMultipart('alternative')

    msg['From']    = gmail_user
    msg['To']      = to
    msg['Cc']      = 'you@gmail.com'
    msg['Subject'] = subject

    msg.attach(MIMEText(text, mtype))

    for a in attach:
        part = MIMEBase('application', 'octet-stream')
        part.set_payload(open(attach, 'rb').read())
        Encoders.encode_base64(part)
        part.add_header('Content-Disposition','attachment; filename="%s"' % os.path.basename(a))
        msg.attach(part)

    try:
        mailServer = smtplib.SMTP("smtp.gmail.com", 687)
        mailServer.ehlo()
        mailServer.starttls()
        mailServer.ehlo()
        mailServer.login(gmail_user, gmail_pwd)
        mailServer.sendmail(gmail_user, [to,msg['Cc']], msg.as_string())
        mailServer.close()
    except:
        ok = False
    return ok

1
smtplibসরাসরি ব্যবহার করার দরকার নেই ; জাজানো সেই অংশটি আপনার জন্য পরিচালনা করবে।
ইগনাসিও ওয়াজকেজ-আব্রামস

ওহ্ তাই নাকি! কিভাবে হবে? এখানে আমি সম্পূর্ণভাবে ডিফল্ট জাঙ্গো send_mailফাংশনটি বাইপাস করি এবং নিজের নিজস্ব ব্যবহার করি ...
শ্রীকর অপালরাজু

1
send_mail()আপনি কিভাবে এটি করতে হবে। আপনার এখনও বার্তাটি নিজেই একত্রিত করতে হবে তবে এসএমটিপি বিটগুলির জন্য আপনাকে চিন্তা করতে হবে না।
ইগনাসিও ওয়াজকেজ-আব্রামস

2

দেরীতে, তবে:

DEFAULT_FROM_EMAILঅন্যরা উল্লিখিত ফিক্স ছাড়াও এবং কম সুরক্ষিত অ্যাপ্লিকেশনগুলিকে অ্যাকাউন্ট অ্যাক্সেস করার অনুমতি দেওয়ার পাশাপাশি জাজঙ্গো শেষ পর্যন্ত প্রমাণীকরণের জন্য প্রশ্ন হিসাবে অ্যাকাউন্ট হিসাবে সাইন ইন করার সময় আমাকে https://accounts.google.com/DisplayUnlockCaptcha নেভিগেট করতে হয়েছিল ।

আইপি ঠিকানাটি একই ছিল কিনা তা নিশ্চিত করতে আমি ওয়েব সার্ভারে এসএসএইচ টানেলের মাধ্যমে সেই URL এ গিয়েছি; আমি এটির প্রয়োজন কিনা সম্পর্কে পুরোপুরি নিশ্চিত নই তবে এটি ক্ষতি করতে পারে না। আপনি এটির মতো এটি ssh -D 8080 -fN <username>@<host>করতে পারেন localhost:8080:, তারপরে আপনার ওয়েব ব্রাউজারকে সোকস প্রক্সি হিসাবে ব্যবহার করতে সেট করুন ।


2

আপনি আপনার মেশিন বা লোকালহোস্টে ইমেল প্রেরণের পরীক্ষা করতে "টেস্ট মেল সার্ভার সরঞ্জাম" ব্যবহার করতে পারেন । গুগল এবং "টেস্ট মেল সার্ভার সরঞ্জাম" ডাউনলোড করুন এবং সেট আপ করুন।

তারপরে আপনার সেটিংসে.পি:

EMAIL_BACKEND= 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 25

শেল থেকে:

from django.core.mail import send_mail
send_mail('subject','message','sender email',['receipient email'],    fail_silently=False)

1

জন্য SendGrid - জ্যাঙ্গো বিশেষভাবে:

সেন্ডগ্রিড জ্যাঙ্গো ডক্স এখানে

এই ভেরিয়েবলগুলি সেট করুন

settings.py

EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'sendgrid_username'
EMAIL_HOST_PASSWORD = 'sendgrid_password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

view.py এ

from django.core.mail import send_mail
send_mail('Subject here', 'Here is the message.', 'from@example.com', ['to@example.com'], fail_silently=False)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.