Merhaba arkadaşlar, bu yazımda heybooster‘a yeni ekleyeceğimiz email yollama özelliğini Python ile nasıl yaptığımızdan bahsedeceğim. Örnek bir kod ile nasıl mail atabileceğinizi, mail template hazırlamayı ve uygulama için gerekli kimlik bilgilerini nasıl alacağınızı göstereceğim. İyi okumalar dilerim :)
Gmail API İçin Kimlik Bilgilerini Oluştur
İlk olarak adresine giriyoruz ve create credentials diyoruz. Açılan menüden OAuth client ID seçeneğini seçiyoruz. Aşağıdaki gibi bilgilerimizi girdikten sonra create diyebiliriz.
Sonraki adımımız ise oluşan credentials dosyasını indirmek. Dosyayı kodunuz ile aynı dizine indirmeli ve anlaşılır bir isim (credentials.json vb.) vermelisiniz. Kimlik bilgileri ile ilgili yapacaklarımız bu kadar. Hemen sonraki adıma geçelim.
Gerekli Kütüphanelerin Kurulması
Projenizde kullanacağınız kütüphanelerin kurulması gerekli. Bunun için aşağıdaki komutu çalıştırmanız yeterli olacaktır.
pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
Evet şimdi gerekli kütüphaneleri de kurduğumuza göre gelelim bu işin kod kısmına.
Kodlar
from __future__ import print_function
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from email.mime.text import MIMEText
import base64
SCOPES = ['https://www.googleapis.com/auth/gmail.send',
'https://www.googleapis.com/auth/gmail.readonly']
def create_message(sender, to, subject, message_text):
message = MIMEText(message_text, 'html') # Sondaki html ifadesi html mesajınızı formatlamayı sağlamaktadır.
message['to'] = to
message['from'] = sender
message['subject'] = subject
raw_message = base64.urlsafe_b64encode(message.as_bytes())
return {'raw': raw_message.decode("utf-8")}
def send_message(service, user_id, message):
print(user_id)
print(message)
message = (service.users().messages().send(userId=user_id, body=message).execute())
print('Message Id: {}'.format(message['id']))
return message
def main():
creds = None
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
with open('token.json', 'w') as token:
token.write(creds.to_json())
service = build('gmail', 'v1', credentials=creds)
gonderici = '[email protected]'
alici = '[email protected]'
konu = 'Emailin Konusu'
mesaj = """
<html>
<head>
</head>
<body>
<h1>Test mesajı</h1>
<br>
<p>Test mesajı</p>
</body>
</html>
"""
message = create_message(gonderici, alici, konu, mesaj)
send_message(service, 'me', message)
if __name__ == '__main__':
main()
Yukarıdaki kodda main fonksiyonu credentials.json dosyası kullanılarak gönderici mail adresinizde oturum açıp gerekli izinleri vermenizi ve gerekli token.json dosyasının oluşmasını sağlamaktadır. create_message fonksiyonu ise mesajını oluşturup gönderilecek formata getirmeyi sağlamaktadır. send_message ise tahmin ettiğiniz gibi mesajınızın yollanmasını sağlamaktadır :)
Umarım işinize yaramıştır. Aklınıza takılan soruları herhangi bir yerden sorabilirsiniz. İyi çalışmalar dilerim :)