Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Определить SMTP сервер по умолчанию

Delphi , Интернет и Сети , E-mail

Определить SMTP сервер по умолчанию

Юзер за дедку, дедка за тоссер, тоссер за мэйлер - и отослали мессаж!


{ 
  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 <> '') then 
        if 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.

Вот разбивка того, что код делает:

  1. Он создает объект TRegistry, который является компонентом Delphi для работы с реестром Windows.
  2. Он открывает ключ реестра HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager.
  3. Если ключ существует, он читает значение строки 'default mail account' и хранит его в переменной AccountStr.
  4. Если AccountStr не пустой, он открывает подключение к ключу HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\<AccountStr>.
  5. Он читает два значения из этого подключения: 'SMTP Server' (который содержит адрес SMTP-сервера) и 'SMTP Email Address' (которая содержит электронную почту, связанную с аккаунтом).
  6. Наконец, он устанавливает контролы Edit_Server и Edit_Account в значения, прочитанные из реестра.

Вот альтернативное решение, использующее функции Windows API вместо встроенного компонента Delphi для работы с реестром:

procedure TForm1.ReadRegistryDefaults;
var
  RegKey: HKEY;
  AccountStr, ServerStr, EmailStr: PChar;
begin
  RegKey := HKEY_CURRENT_USER;
  if RegOpenKeyEx(RegKey, 'Software\Microsoft\Internet Account Manager', 0, KEY_READ, @RegKey) = ERROR_SUCCESS then
  begin
    AccountStr := 'default mail account';
    ServerStr := nil;
    EmailStr := nil;
    if RegQueryValueEx(RegKey, AccountStr, nil, REG_SZ, @ServerStr, nil) = ERROR_SUCCESS then
    begin
      Edit_Server.Text := ServerStr;
      ServerStr := nil;
    end;

    AccountStr := 'SMTP Email Address';
    if RegQueryValueEx(RegKey, AccountStr, nil, REG_SZ, @EmailStr, nil) = ERROR_SUCCESS then
    begin
      Edit_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




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: E-mail ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-24 19:56:35/0.0036780834197998/0