Skip to content
ეს გვერდი შეიქმნა და ითარგმნა ხელოვნური ინტელექტის დახმარებით. თუ შეამჩნევთ უზუსტობას, გთხოვთ, დაგვეხმარეთ გაუმჯობესებაში. GitHub-ზე რედაქტირება

ანგარიშის მართვა

PRX-Email მხარს უჭერს მრავალ ელ.ფოსტის ანგარიშს, თითოეული საკუთარი IMAP და SMTP კონფიგურაციით, ავთენტიფიკაციის სერთიფიკატებითა და ფუნქციის ნიშნებით. ანგარიშები SQLite მონაცემთა ბაზაში ინახება და უნიკალური account_id-ით იდენტიფიცირდება.

ანგარიშის შექმნა

გამოიყენეთ EmailRepository ახალი ანგარიშის შექმნისთვის:

rust
use prx_email::db::{EmailRepository, NewAccount};

let account_id = repo.create_account(&NewAccount {
    email: "[email protected]".to_string(),
    display_name: Some("Alice".to_string()),
    now_ts: current_timestamp(),
})?;

ანგარიშის ველები

ველიტიპიაღწერა
idi64ავტო-გენერირებული primary key
emailStringელ.ფოსტის მისამართი (IMAP/SMTP მომხმარებლად გამოყენება)
display_nameOption<String>ადამიანის-წასაკითხი სახელი ანგარიშისთვის
created_ati64შექმნის Unix timestamp
updated_ati64ბოლო განახლების Unix timestamp

ანგარიშის მიღება

rust
let account = repo.get_account(account_id)?;
if let Some(acct) = account {
    println!("Email: {}", acct.email);
    println!("Name: {}", acct.display_name.unwrap_or_default());
}

მრავალ-ანგარიშიანი კონფიგურაცია

ყოველი ანგარიში დამოუკიდებლად მუშაობს საკუთარით:

  • IMAP კავშირი -- ცალკე სერვერი, პორტი და სერთიფიკატები
  • SMTP კავშირი -- ცალკე სერვერი, პორტი და სერთიფიკატები
  • საქაღალდეები -- ანგარიشش-ზე სინქ-ირებული საქაღალდეების სია
  • სინქ სტატუსი -- Cursor-ის თვალყური ანგარიშ/საქაღალდის წყვილზე
  • ფუნქციის ნიშნები -- დამოუკიდებელი ფუნქციის ჩართვა
  • Outbox -- ცალკე გაგზავნის რიგი შეტყობინება-ზე თვალყურით
rust
// Account 1: Gmail with OAuth
let gmail_id = repo.create_account(&NewAccount {
    email: "[email protected]".to_string(),
    display_name: Some("Alice (Gmail)".to_string()),
    now_ts: now,
})?;

// Account 2: Work email with password
let work_id = repo.create_account(&NewAccount {
    email: "[email protected]".to_string(),
    display_name: Some("Alice (Work)".to_string()),
    now_ts: now,
})?;

ფუნქციის ნიშნები

PRX-Email ფუნქციის ნიშნებს იყენებს ანგარიშ-ზე ჩართული შესაძლებლობების კონტროლისთვის. ეს ახალი ფუნქციების ეტაპობრივ rollout-ს უჭერს მხარს.

ხელმისაწვდომი ფუნქციის ნიშნები

ნიშანიაღწერა
inbox_readშეტყობინებების ჩამოთვლა და წაკითხვა
inbox_searchშეტყობინებების ძიება
email_sendახალი ელ.ფოსტის გაგზავნა
email_replyელ.ფოსტაზე პასუხი
outbox_retryვერ გაგზავნილი outbox შეტყობინებების retry

ფუნქციის ნიშნების მართვა

rust
// Enable a feature for a specific account
plugin.set_account_feature(account_id, "email_send", true, now)?;

// Disable a feature
plugin.set_account_feature(account_id, "email_send", false, now)?;

// Set the global default for all accounts
plugin.set_feature_default("inbox_read", true, now)?;

// Check if a feature is enabled
let enabled = plugin.is_feature_enabled(account_id, "email_send")?;

პროცენტ-ზე დაფუძნებული Rollout

ფუნქციების ანგარიშების პროცენტზე rollout:

rust
// Enable email_send for 50% of accounts
let enabled = plugin.apply_percentage_rollout(
    account_id,
    "email_send",
    50,  // percentage
    now,
)?;
println!("Feature enabled for this account: {}", enabled);

Rollout account_id % 100-ს იყენებს ანგარიშების bucket-ებად დეტერმინირებული მინიჭებისთვის, restart-ებში თანმიმდევრული ქცევის უზრუნველსაყოფად.

საქაღალდის მართვა

საქაღალდეები ავტომატურად იქმნება IMAP სინქ-ის დროს, ან შეგიძლიათ ხელით შექმნათ:

rust
use prx_email::db::NewFolder;

let folder_id = repo.create_folder(&NewFolder {
    account_id,
    name: "INBOX".to_string(),
    path: "INBOX".to_string(),
    now_ts: now,
})?;

საქაღალდეების ჩამოთვლა

rust
let folders = repo.list_folders(account_id)?;
for folder in &folders {
    println!("{}: {} ({})", folder.id, folder.name, folder.path);
}

შემდეგი ნაბიჯები

Released under the Apache-2.0 License.