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
Persiapkan App Password yang dibuat dengan manage akun Gmail
instalasi
sudo apt install ssmtp
Konfigurasi
/etc/ssmtp/ssmtp.confkira-kira seperti ini:root=rpi3abc@gmail.com mailhub=smtp.gmail.com:465 FromLineOverride=YES AuthUser=rpi3abc@gmail.com AuthPass=testing123 UseTLS=YES
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¶
Buka Google Cloud Console. Buat proyek baru.
Di "API & Layanan", cari dan aktifkan Gmail API.
Konfigurasikan OAuth consent screen dan buat OAuth 2.0 client ID credentials untuk aplikasi desktop.
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: