br-email 邮件发送

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")?;
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()?;