Skip to content

python da flask-mail kullanarak eposta gönderimi

Flask-Mail kütüphanesini kullanarak python da basit bir eposta gönderme uygulaması yapalım. öncelikle

pip install Flask-Mail

ile flask-mail kurulumu yapalım… flask-mail da SMTP konfigürasyonu için kullanılabilecek parametreler aşagıdaki gibi tanımlanmış.

    MAIL_SERVER : varsayılan ‘localhost’
    MAIL_PORT : varsayılan 25
    MAIL_USE_TLS : varsayılan False
    MAIL_USE_SSL : varsayılan False
    MAIL_DEBUG : varsayılan app.debug
    MAIL_USERNAME : varsayılan None
    MAIL_PASSWORD : varsayılan None
    MAIL_DEFAULT_SENDER : varsayılan None
    MAIL_MAX_EMAILS : varsayılan None
    MAIL_SUPPRESS_SEND : varsayılan app.testing
    MAIL_ASCII_ATTACHMENTS : varsayılan False

programda ihtiyaçımız sırasında gerekli güncellemeleri yapacağız. mail gönderimi sırasında ise

flask_mail.Message(subject='', recipients=None, body=None, html=None, sender=None, cc=None, bcc=None, attachments=None, reply_to=None, date=None, charset=None, extra_headers=None, mail_options=None, rcpt_options=None)

uygun şekilde yapılandırmak gerekecek.

    subject – email subject header
    recipients – list of email addresses
    body – plain text message
    html – HTML message
    sender – email sender address, or MAIL_DEFAULT_SENDER by default
    cc – CC list
    bcc – BCC list
    attachments – list of Attachment instances
    reply_to – reply-to address
    date – send date
    charset – message character set
    extra_headers – A dictionary of additional headers for the message
    mail_options – A list of ESMTP options to be used in MAIL FROM command
    rcpt_options – A list of ESMTP options to be used in RCPT commands

simdi bu bilgileri kullanarak basit kodumuzu yazalım.. gerekli kütüphaneleri import ederim

from flask import Flask
from flask_mail import Mail, Message

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

smtp konfigürasyonumuzu yapalım.. ben aylık 500 kadar bedava eposta gönderilimize izin veren mailtrap servisini için konfigürasyon yapacağım..

app.config['MAIL_SERVER']='smtp.mailtrap.io'
app.config['MAIL_PORT'] = 2525
app.config['MAIL_USERNAME'] = '81e0d22cd4b15'
app.config['MAIL_PASSWORD'] = '94355a1553f58'
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USE_SSL'] = False
mail= Mail(app)

eposta içeriğini, gönderici ve alıcıda tanımlayalım

        msg = Message('Test Mesajı', sender =   'ferhatcicek@mailtrap.io', recipients = ['iletisim@ferhatcicek.com'])
        msg.body = "Bu bir test mesajıdır"
        mail.send(msg)
        return "Eposta gönderildi."

artık kodumuz hazır durumda…

#app.py - flask-mail kullanarak eposta gönderimi
from flask import Flask
from flask_mail import Mail, Message

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

app.config['MAIL_SERVER']='smtp.mailtrap.io'
app.config['MAIL_PORT'] = 2525
app.config['MAIL_USERNAME'] = '81e0d22cd4b15b'
app.config['MAIL_PASSWORD'] = '94355a1553f58b'
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USE_SSL'] = False
mail= Mail(app)

@app.route("/")
def index():
    try:
        msg = Message('Test Mesajı', sender =   'ferhatcicek@mailtrap.io', recipients = ['iletisim@ferhatcicek.com'])
        msg.body = "Bu bir test mesajıdır"
        mail.send(msg)
        return "Eposta gönderildi."
    except Exception as e:
        return(str(e))

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

flask run -h 0.0.0.0 -p 8080 yazarak kodumu çalışrarak tarayıcımıza http://localhost:8080 yazdığımızda epostamızın iletildiğine ait bilgilendirme mesajını alacağız… mesaj gönderme kısmını bir döngü içine alarak toplu eposta gönderimide yapabilirsiniz…

rainloop dizin ve dosya yetki ayarları

kurulumun /var/www/rainloop dizinine yapıldığını varsayarak yetkili kullanıcı ile aşagıdaki komutlar çalıştırılmalıdır

cd /var/www/rainloop
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
cd /var/www/rainloop
chown -R www-data:www-data .

MTA kurulumu sonrası kontroller

shell üzerinden mevcut kullanıcınız ile farklı bir kullanıcıya eposta göndermek için

echo "test eposta icerigi" | mail -s "test eposta basligi" testkullanici@ferhatcicek.com

kullanabilirsiniz.. mail yoksa mailutils paketini kurmanız gerekebilir.

sudo apt-get install -y mailutils

mail gönderme başarısız olduysa logları incelemek gerekcek. MTA olarak postfix kullandığımız varsayarak maille ilgili en temel loglara bakmak için

sudo tail /var/log/mail.log
sudo tail -f -n 100 /var/log/syslog | grep postfix

kullanabiliriz….

php mail() fonksiyonunu kullanarak eposta sunucunuzun sorun olmadan kullanılma testlerini yapmak istersek en temel php kodu aşagıdaki şekilde olacaktır.

<?php
$to      = 'testkullanici@ferhatcicek.com';
$subject = 'test epostasi';
$message = 'test eposta icerigi';
$headers = 'From: testkullanici2@ferhatcicek.com' . "\r\n" .
    'Reply-To: testkullanici2@ferhatcicek.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>

Webmail : Thunderbird ile Hotmail, Yahoo v.b. epostaları okumak

Eposta istemci programı olarak thunderbird kullanmaya başlayan bir çok kişi hotmail, yahoo epostalarını okuyamamaktan şikayet etmekte, bir çok kişi yine aynı nedenden dolayı thunderbird kullanmamaktadır.

Bu şekilde düşünen ve davrananlar unutmamalıdırki açık kaynak dünyasında çözüm tükenmez.

Benim bu konuda sıkıntı çekenlere önerim webmail olacaktır. Webmail web site tabanlı eposta hizmetlerini kullananlar için bir thunderbird eklentisidir.

live.com uzantılı eposta adresi

Bir çok kişi kendi adını içeren sağlam bir servisten eposta hesabı olmak istiyor. Bunlardan biriside MS in live.com uzantılı eposta adres. Bir çok kişi tarafından kullanılan yahoo.com, hotmail.com, msn.com, gmail.com gibi yerlerde adınız ve soyadınızdan veya istediginiz kelimelerde eposta adresi bulmak imkansız. Live.com henüz çok fazla kullanılmaması ve alma yöntemlerinin bilinmemesi nedeniyle bu yönden tercih edilebilir.

Öncelikli olarak http://get.live.com/getlive/overview adresine girdikten sonra kaydol diyoruz ve adres cubuguna

javascript: var p = ‘live.’; var ds = new Array(‘com’, ‘de’); for (var i = 0; i < ds.length; i ++){document.getElementById('idomain').options[i] = new Option(p + ds[i], p + ds[i])} alert('live.com domain adi eklendi'); javascript kodunu yapıştırıyor ve işletiyoruz. eposta uzantısı seçme kısmında live.com un gelmiş oldugunu göreceksiniz. İyi günlerde kullanın.

Back To Top