br-email 1.2.14

This is an Email
Documentation

br-email 邮件发送


License Crates.io Version

Google IMAP OAuth2

Use OAuth2 to obtain an access token, then connect via IMAP with XOAUTH2.

use br_email::oauth::{build_auth_url, exchange_code, refresh_access_token, GMAIL_SCOPE};
use br_email::{Mail, OAuthConfig, Receive};

let auth_url = build_auth_url(
    "client_id",
    "http://localhost:3000/oauth2/callback",
    &[GMAIL_SCOPE],
    Some("state"),
);

let tokens = exchange_code("client_id", "client_secret", "code", "http://localhost:3000/oauth2/callback")?;
let refreshed = refresh_access_token("client_id", "client_secret", "refresh_token")?;

// Save refreshed access token to config file
let refreshed = br_email::oauth::refresh_access_token_and_save(
    "./br-email.toml".into(),
    false,
    "my_name",
    "client_id",
    "client_secret",
    "refresh_token",
)?;

let oauth = OAuthConfig {
    client_id: None,
    client_secret: None,
    redirect_uri: None,
    refresh_token: None,
    access_token: Some("access_token".to_string()),
};

let mut mail = Mail::new("imap", "imap.gmail.com", 993, "name", "user@gmail.com", "")
    .with_oauth(oauth);
let total = mail.receive().get_total()?;