Gmail API

Meskipun Ubuntu tidak memiliki "API Gmail" bawaan untuk baris perintah, Anda dapat menggunakan API Gmail resmi dengan bahasa skrip seperti Python, atau menggunakan klien email baris perintah yang mendukung Gmail. Menggunakan utilitas baris perintah dengan konfigurasi sederhana seringkali merupakan pendekatan paling mudah untuk skrip.

Menggunakan ssmtp

Hanya untuk mengirim email dalam 1 baris CLI

  1. Persiapkan App Password yang dibuat dengan manage akun Gmail

  2. instalasi

    sudo apt install ssmtp
    
  3. Konfigurasi /etc/ssmtp/ssmtp.conf kira-kira seperti ini:

    root=rpi3abc@gmail.com mailhub=smtp.gmail.com:465 FromLineOverride=YES AuthUser=rpi3abc@gmail.com AuthPass=testing123 UseTLS=YES

  4. Kirimkan email:

    $ echo "Testing...1...2...3" | ssmtp myusername@gmail.com
    
    atau
    
    $ printf "Subject: Test\n\nTesting...1...2...3" | ssmtp myusername@gmail.com
    
    atau
    
    # mengirimkan file
    $ cat program.py | ssmtp myotherusername@yahoo.com
    

Menggunakan msmtp

Untuk mengirim email dari skrip, kombinasi msmtp dan mailx merupakan solusi standar dan ringan di Ubuntu. msmtp adalah klien SMTP yang menggunakan akun Gmail Anda sebagai "smarthost" untuk meneruskan email, dan mailx menyediakan antarmuka yang mudah digunakan.

Instal paket yang diperlukan

sudo apt-get update
sudo apt-get install msmtp msmtp-mta mailutils

Siapkan Kata Sandi Aplikasi untuk Gmail

Demi keamanan, Anda harus menggunakan dedicated App Password, bukan kata sandi Gmail biasa.

  • Buka pengaturan Keamanan Akun Google Anda dan aktifkan Verifikasi 2 Langkah jika belum diaktifkan.

  • Buka App Passwords dan buat kata sandi baru untuk aplikasi "Mail" di perangkat Anda.

  • Salin kata sandi 16 karakter yang dihasilkan.

Configure msmtp

Buat dan edit berkas konfigurasi msmtp di ~/.msmtprc. Ganti <email-anda@gmail.com> dan <kata sandi-aplikasi-anda> dengan kredensial Anda yang sebenarnya.

nano ~/.msmtprc

account gmail
host smtp.gmail.com
port 587
tls on
tls_starttls on
tls_certcheck off
auth on
user <your-email@gmail.com>
password <your-app-password>
from <your-email@gmail.com>
logfile ~/.msmtp.log

account default : gmail

Untuk melindungi kredensial Anda, ubah izin file sehingga hanya Anda yang dapat membaca dan menulis di dalamnya.

chmod 600 ~/.msmtprc

Configure mailx

Buat atau edit berkas konfigurasi di ~/.mailrc untuk memberi tahu mailx agar menggunakan msmtp.

nano ~/.mailrc

set sendmail="/usr/bin/msmtp"
set message-sendmail-extra-arguments="-a gmail"

Send an email

Sekarang Anda dapat mengirim email langsung dari baris perintah atau dari skrip.

Perintah satu baris:

echo "This is the message body." | mail -s "Subject Line" recipient@example.com

Dari file:

mail -s "Subject Line" recipient@example.com < message.txt

Gmail API with Python

Untuk kebutuhan yang lebih canggih, seperti membaca email, mengambil pesan tertentu, atau mengelola label, gunakan API Gmail resmi. Anda perlu menginstal pustaka klien Google API untuk Python.

Aktifkan API Gmail dan dapatkan kredensial

  1. Buka Google Cloud Console. Buat proyek baru.

  2. Di "API & Layanan", cari dan aktifkan Gmail API.

  3. Konfigurasikan OAuth consent screen dan buat OAuth 2.0 client ID credentials untuk aplikasi desktop.

  4. Unduh berkas konfigurasi klien sebagai credentials.json

Install Python dependencies

sudo apt install python3 python3-pip
pip3 install --upgrade google-api-python-client google-auth-oauthlib google-auth-httplib2

Jalankan Quickstart script

Google menyediakan skrip Python Quickstart untuk mendemonstrasikan penggunaan API. 1. Letakkan berkas credentials.json di direktori yang sama dengan skrip Python. 2. Saat pertama kali Anda menjalankan skrip, jendela peramban akan terbuka dan meminta Anda untuk masuk ke akun Google dan memberikan izin. Kredensial akan disimpan dalam berkas bernama token.json untuk penggunaan selanjutnya.

Contoh skrip Python untuk send email:

import base64
from email.message import EmailMessage
import google.auth
from googleapiclient.discovery import build

def gmail_send_message():
    creds, _ = google.auth.default()
    service = build("gmail", "v1", credentials=creds)

    message = EmailMessage()
    message.set_content("This is the body of the email.")
    message["To"] = "recipient@example.com"
    message["From"] = "your.email@gmail.com"
    message["Subject"] = "Test email from Python"

    encoded_message = base64.urlsafe_b64encode(message.as_bytes()).decode()

    create_message = {"raw": encoded_message}
    send_message = (service.users().messages().send(userId="me", body=create_message).execute())
    print(f"Message Id: {send_message['id']}")

if __name__ == "__main__":
    gmail_send_message()

Jalankan Skrip

python3 your_script_name.py

IMAP gnutls

$ gnutls-cli --crlf -p 993 imap.gmail.com

1 LOGIN simba.kmp@gmail.com wwlkethnakgrbvzr
2 LIST "" "*"
3 SELECT INBOX
4 SEARCH ALL
5 FETCH 1 BODY[]
6 LOGOUT

Referensi: