Юзер за дедку, дедка за тоссер, тоссер за мэйлер - и отослали мессаж!
{
Here is some code I successfully used te determine
the DEFAULT mailaccount, which is used in
Outlook Express, to send outgoing mail via SMTP.
}procedure TForm1.ReadRegistryDefaults;
var
Registry: TRegistry;
AccountStr: string;
begin
Registry := TRegistry.Create;
try
Registry.RootKey := hkey_CURRENT_USER;
if Registry.OpenKey('software\microsoft\internet account manager', False) then{}begin
AccountStr := Registry.ReadString('default mail account');
Registry.CloseKey;
if (AccountStr <> '') thenif Registry.OpenKey('software\microsoft\internet account manager\accounts\' +
AccountStr, False) then{}begin
Edit_Server.Text := Registry.ReadString('SMTP Server');
Edit_Account.Text := Registry.ReadString('SMTP Email Address');
Registry.CloseKey;
end;
end;
finally
Registry.Free;
end;
end;
Перевод контента на русский язык:
Код, который вы предоставили, написан на Delphi и используется для определения по умолчанию почтового аккаунта и связанного с ним SMTP-сервера в Outlook Express.
Вот разбивка того, что код делает:
Он создает объект TRegistry, который является компонентом Delphi для работы с реестром Windows.
Он открывает ключ реестра HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager.
Если ключ существует, он читает значение строки 'default mail account' и хранит его в переменной AccountStr.
Если AccountStr не пустой, он открывает подключение к ключу HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\<AccountStr>.
Он читает два значения из этого подключения: 'SMTP Server' (который содержит адрес SMTP-сервера) и 'SMTP Email Address' (которая содержит электронную почту, связанную с аккаунтом).
Наконец, он устанавливает контролы Edit_Server и Edit_Account в значения, прочитанные из реестра.
Вот альтернативное решение, использующее функции Windows API вместо встроенного компонента Delphi для работы с реестром:
procedureTForm1.ReadRegistryDefaults;varRegKey:HKEY;AccountStr,ServerStr,EmailStr:PChar;beginRegKey:=HKEY_CURRENT_USER;ifRegOpenKeyEx(RegKey,'Software\Microsoft\Internet Account Manager',0,KEY_READ,@RegKey)=ERROR_SUCCESSthenbeginAccountStr:='default mail account';ServerStr:=nil;EmailStr:=nil;ifRegQueryValueEx(RegKey,AccountStr,nil,REG_SZ,@ServerStr,nil)=ERROR_SUCCESSthenbeginEdit_Server.Text:=ServerStr;ServerStr:=nil;end;AccountStr:='SMTP Email Address';ifRegQueryValueEx(RegKey,AccountStr,nil,REG_SZ,@EmailStr,nil)=ERROR_SUCCESSthenbeginEdit_Account.Text:=EmailStr;EmailStr:=nil;end;end;end;
В этом коде мы используем функцию RegOpenKeyEx для открытия ключа реестра и функцию RegQueryValueEx для чтения значений из подключения. Остальная часть кода аналогична оригинальному коду.
Определить SMTP-сервер по умолчанию в Outlook Express можно с помощью программы на языке Delphi, которая считывает информацию из реестра Windows.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.