Flask - Posta

Web tabanlı bir uygulamanın genellikle kullanıcılara / istemcilere posta gönderme özelliğine sahip olması gerekir. Flask-Mail uzantısı, herhangi bir e-posta sunucusuyla basit bir arayüz kurmayı çok kolaylaştırır.

İlk olarak, Flask-Mail uzantısı pip yardımcı programı yardımıyla kurulmalıdır.

pip install Flask-Mail

Daha sonra, aşağıdaki uygulama parametrelerinin değerleri ayarlanarak Flask-Mail'in yapılandırılması gerekir.

Sr.No Parametreler ve Açıklama
1

MAIL_SERVER

E-posta sunucusunun adı / IP adresi

2

MAIL_PORT

Kullanılan sunucunun bağlantı noktası numarası

3

MAIL_USE_TLS

Taşıma Güvenliği Katmanı şifrelemesini etkinleştirin / devre dışı bırakın

4

MAIL_USE_SSL

Güvenli Yuva Katmanı şifrelemesini etkinleştirin / devre dışı bırakın

5

MAIL_DEBUG

Hata ayıklama desteği. Varsayılan, Flask uygulamasının hata ayıklama durumudur

6

MAIL_USERNAME

Gönderenin kullanıcı adı

7

MAIL_PASSWORD

gönderenin şifresi

8

MAIL_DEFAULT_SENDER

varsayılan göndereni ayarlar

9

MAIL_MAX_EMAILS

Gönderilecek maksimum postaları ayarlar

10

MAIL_SUPPRESS_SEND

App.testing true olarak ayarlanmışsa gönderme pasifleştirilir

11

MAIL_ASCII_ATTACHMENTS

True olarak ayarlanırsa, ekli dosya adları ASCII'ye dönüştürülür

Flask-mail modülü aşağıdaki önemli sınıfların tanımlarını içerir.

Posta sınıfı

E-posta mesajlaşma gereksinimlerini yönetir. Sınıf yapıcısı aşağıdaki formu alır -

flask-mail.Mail(app = None)

Oluşturucu, Flask uygulama nesnesini bir parametre olarak alır.

Mail sınıfının yöntemleri

Sr.No Yöntemler ve Açıklama
1

send()

Message sınıfı nesnesinin içeriğini gönderir

2

connect()

Posta barındırıcısı ile bağlantıyı açar

3

send_message()

Mesaj nesnesi gönderir

Mesaj sınıfı

Bir e-posta mesajını kapsar. Mesaj sınıfı yapıcısının birkaç parametresi vardır -

flask-mail.Message(subject, recipients, body, html, sender, cc, bcc, 
   reply-to, date, charset, extra_headers, mail_options, rcpt_options)

Mesaj sınıfı yöntemleri

attach()- mesaja bir ek ekler. Bu yöntem aşağıdaki parametreleri alır -

  • filename - eklenecek dosyanın adı

  • content_type - MIME türü dosya

  • data - ham dosya verileri

  • disposition - varsa içerik düzeni.

add_recipient() - mesaja başka bir alıcı ekler

Aşağıdaki örnekte, Google'ın gmail hizmetinin SMTP sunucusu, Flask-Mail yapılandırması için MAIL_SERVER olarak kullanılmıştır.

Step 1 - Koddaki flask-mail modülünden Mail ve Mesaj sınıfını içe aktarın.

from flask_mail import Mail, Message

Step 2 - Daha sonra Flask-Mail aşağıdaki ayarlara göre yapılandırılır.

app.config['MAIL_SERVER']='smtp.gmail.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = '[email protected]'
app.config['MAIL_PASSWORD'] = '*****'
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True

Step 3 - Mail sınıfının bir örneğini oluşturun.

mail = Mail(app)

Step 4 - URL kuralı ile eşlenen bir Python işlevinde bir Mesaj nesnesi oluşturun (‘/’).

@app.route("/")
def index():
   msg = Message('Hello', sender = '[email protected]', recipients = ['[email protected]'])
   msg.body = "This is the email body"
   mail.send(msg)
   return "Sent"

Step 5- Kodun tamamı aşağıda verilmiştir. Aşağıdaki komut dosyasını Python Shell'de çalıştırın ve ziyaret edinhttp://localhost:5000/.

from flask import Flask
from flask_mail import Mail, Message

app =Flask(__name__)
mail=Mail(app)

app.config['MAIL_SERVER']='smtp.gmail.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = '[email protected]'
app.config['MAIL_PASSWORD'] = '*****'
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True
mail = Mail(app)

@app.route("/")
def index():
   msg = Message('Hello', sender = '[email protected]', recipients = ['[email protected]'])
   msg.body = "Hello Flask message sent from Flask-Mail"
   mail.send(msg)
   return "Sent"

if __name__ == '__main__':
   app.run(debug = True)

Gmail hizmetindeki yerleşik güvensizlik özelliklerinin bu giriş girişimini engelleyebileceğini unutmayın. Güvenlik seviyesini düşürmeniz gerekebilir. Güvenliği azaltmak için lütfen Gmail hesabınıza giriş yapın ve bu bağlantıyı ziyaret edin .