void ConfigWindow::_AccountSelected(AccountItem* item) { AccountUpdated(fLastSelectedAccount); BMailAccountSettings* account = item->Account(); fLastSelectedAccount = account; BView* view = NULL; switch (item->Type()) { case ACCOUNT_ITEM: view = new AccountConfigView(account); break; case INBOUND_ITEM: view = new ProtocolSettingsView(account->InboundAddOnRef(), *account, account->InboundSettings()); break; case OUTBOUND_ITEM: view = new ProtocolSettingsView(account->OutboundAddOnRef(), *account, account->OutboundSettings()); break; case FILTER_ITEM: view = new FiltersConfigView(*account); break; } _ReplaceConfigView(view); }
HaikuMailFormatFilter::HaikuMailFormatFilter(BMailProtocol& protocol, const BMailAccountSettings& settings) : BMailFilter(protocol, NULL), fAccountID(settings.AccountID()), fAccountName(settings.Name()) { const BMessage& outboundSettings = settings.OutboundSettings(); outboundSettings.FindString("destination", &fOutboundDirectory); }
status_t BEmailMessage::Send(bool sendNow) { BMailAccounts accounts; BMailAccountSettings* account = accounts.AccountByID(_account_id); if (!account || !account->HasOutbound()) { account = accounts.AccountByID( BMailSettings().DefaultOutboundAccount()); if (!account) return B_ERROR; SendViaAccount(account->AccountID()); } BString path; if (account->OutboundSettings().Settings().FindString("path", &path) != B_OK) { BPath defaultMailOutPath; if (find_directory(B_USER_DIRECTORY, &defaultMailOutPath) != B_OK || defaultMailOutPath.Append("mail/out") != B_OK) path = "/boot/home/mail/out"; else path = defaultMailOutPath.Path(); } create_directory(path.String(), 0777); BDirectory directory(path.String()); BEntry message; status_t status = RenderTo(&directory, &message); if (status >= B_OK && sendNow) { BMailSettings settings_file; if (settings_file.SendOnlyIfPPPUp()) { // TODO! } BMessenger daemon(B_MAIL_DAEMON_SIGNATURE); if (!daemon.IsValid()) return B_MAIL_NO_DAEMON; BMessage msg('msnd'); msg.AddInt32("account",_account_id); BPath path; message.GetPath(&path); msg.AddString("message_path",path.Path()); daemon.SendMessage(&msg); } return status; }
_EXPORT status_t get_smtp_host(char* buffer) { BMailAccounts accounts; BMailAccountSettings* account = accounts.AccountAt( BMailSettings().DefaultOutboundAccount()); if (account == NULL) return B_ERROR; const BMessage& settings = account->OutboundSettings(); if (!settings.HasString("server")) return B_NAME_NOT_FOUND; strcpy(buffer, settings.FindString("server")); return B_OK; }