Avatar billede jcn Nybegynder
26. november 2002 - 09:45 Der er 5 kommentarer og
1 løsning

email

Hvordan sender man en email fra sit c++ program?
Avatar billede arne_v Ekspert
26. november 2002 - 09:55 #1
Avatar billede soepro Nybegynder
26. november 2002 - 09:58 #2
Du kan f.eks. gøre det ved at bede Windows om at lave en 'mailto:', som vil få dit default mail program til at starte op. (Analogt til hvad de fleste hjemmesider gør.)

I BCB gøres det sådan her:

void __fastcall TfrmMESSAGE::btnOkClick(TObject *Sender)
{
  HINSTANCE  shellExe;
  AnsiString tmpStr, cgiStr;
  char      buffer[257];
  int        pixelWidth, charWidth;

  // Start default e-mail application with specified e-mail address,
  // subject "Driver instructions for <vehicle>", and "Hi <driver>"
  // + message as body text.
  tmpStr = "mailto:"
        + edtTO->Text
        + "?subject="
        + edtSUBJECT->Text
        + "&body="
        + memoBODY->Lines->Text;

  // Create new string, where all blanks have been converted to %xx where
  // xx is the hexadecimal value of the character.
  cgiStr = MakeCGIstring(tmpStr);

  shellExe = ShellExecute(Application->Handle, "open", cgiStr.c_str(),
                          /*Parms*/ NULL, NULL, SW_SHOWNORMAL);
  if ((int)shellExe <= 32L)
    Application->MessageBox("E-mail program could NOT be automatically started - Check that a default mail "
                            "application has been defined, or start it manually. Then try again.",
                            "Error starting e-mail program",
                            MB_ICONERROR | MB_OK);

} // btnOK

hvor MakeCGIstring() metoden ser sådan her ud:

AnsiString __fastcall MakeCGIstring(AnsiString S)
{
  AnsiString tmpStr;
  char      tmpHex[5];
  int        C;

  for (int idx = 1; idx <= S.Length(); idx++)
  {
    C = (unsigned char)S[idx];
    if (C >= 'A' && C <= 'Z'
    ||  C >= 'a' && C <= 'z'
    ||  C >  ' ' && C <= '@')
      tmpStr += S[idx];
    else
    {
      sprintf(tmpHex, "%%%02x", C);
      tmpStr += tmpHex;
    };
  }; // Entire string.

  return tmpStr;
} // MakeCGIstring.
Avatar billede segmose Nybegynder
19. februar 2003 - 18:09 #3
Den rå metode:
Åben tcp/ip til din smtp server typisk port 25
svare på challenge'ne som beskrevet i den nyeste RFC for POP3
Avatar billede arne_v Ekspert
19. februar 2003 - 18:14 #4
segmose>

Det var hvad jeg foreslog.

PS: Hvor kommer POP3 ind i billedet ??
Avatar billede segmose Nybegynder
19. februar 2003 - 18:25 #5
Det har du jo sådan set ret i, og det er ikke POP3 men SMTP den hedder.

Arne ved du hvordan man trækker et forkert svar tilbage?
Avatar billede arne_v Ekspert
19. februar 2003 - 18:27 #6
Det ved jeg ikke engang om man kan.

Men hvis der står en forklaring længere nede, så finde eventuelle
senere læsere vel også ud af det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester