Q&A

  • [급합니다..]메일 보내기..
안녕하세요...

메일 보내는 프로그램을 짜고 있는데요....

SMTP컴포넌트를 사용하거든요....

프로그램 세계를 보니까

interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, ExtCtrls, Psock, NMsmtp;



type

Tfrmmail = class(TForm)

btnconnect: TButton;

btnsend: TButton;

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

Panel4: TPanel;

Panel5: TPanel;

edthost: TEdit;

edtto: TEdit;

edtcc: TEdit;

edtsubject: TEdit;

edtfrom: TEdit;

Memo1: TMemo;

SMTP1: TNMSMTP;

procedure btnsendClick(Sender: TObject);

procedure btnconnectClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;



var

frmmail: Tfrmmail;



implementation



{$R *.DFM}



function noparam : variant;

begin

TVarData(Result).VType := varError;

TVarData(Result).VError := DISP_E_PARAMNOTFOUND;

end;





procedure Tfrmmail.btnsendClick(Sender: TObject);



var

add : string;



begin



add := edtto.Text;

if edtcc.text <> '' then

add := add + ', '+ edtcc.text;

with smtp1 do

begin



docinput.headers.clear;

docinput.headers.add('To',edtto.text);

docinput.headers.add('From',edtfrom.text);

docinput.headers.add('CC',edtcc.text);

docinput.headers.add('Subject',edtsubject.text);

docinput.headers.add('Content-Type','TEXT/PLAIN charset=US-ASCII');

end;





with smtp1 do

senddoc(noparam, docinput.headers, memo1.text, " , ");

end;



procedure Tfrmmail.btnconnectClick(Sender: TObject);

begin

smtp1.remotehost := edthost.text;

smtp1.Connect(noparam, noparam);

end;



end.

이렇게 하면 된다던데....

자꾸 위의 docinput에서 에러가 뜹니다.....왜 그럴까요?

한 수 가르쳐 주십시오.....



1  COMMENTS
  • Profile
    신승철 1999.12.16 02:00
    심형성 wrote:

    > 안녕하세요...

    > 메일 보내는 프로그램을 짜고 있는데요....

    > SMTP컴포넌트를 사용하거든요....

    > 프로그램 세계를 보니까

    > interface

    >

    > uses

    > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    > StdCtrls, ExtCtrls, Psock, NMsmtp;

    >

    > type

    > Tfrmmail = class(TForm)

    > btnconnect: TButton;

    > btnsend: TButton;

    > Panel1: TPanel;

    > Panel2: TPanel;

    > Panel3: TPanel;

    > Panel4: TPanel;

    > Panel5: TPanel;

    > edthost: TEdit;

    > edtto: TEdit;

    > edtcc: TEdit;

    > edtsubject: TEdit;

    > edtfrom: TEdit;

    > Memo1: TMemo;

    > SMTP1: TNMSMTP;

    > procedure btnsendClick(Sender: TObject);

    > procedure btnconnectClick(Sender: TObject);

    > private

    > { Private declarations }

    > public

    > { Public declarations }

    > end;

    >

    > var

    > frmmail: Tfrmmail;

    >

    > implementation

    >

    > {$R *.DFM}

    >

    > function noparam : variant;

    > begin

    > TVarData(Result).VType := varError;

    > TVarData(Result).VError := DISP_E_PARAMNOTFOUND;

    > end;

    >

    >

    > procedure Tfrmmail.btnsendClick(Sender: TObject);

    >

    > var

    > add : string;

    >

    > begin

    >

    > add := edtto.Text;

    > if edtcc.text <> '' then

    > add := add + ', '+ edtcc.text;

    > with smtp1 do

    > begin

    >

    > docinput.headers.clear;

    > docinput.headers.add('To',edtto.text);

    > docinput.headers.add('From',edtfrom.text);

    > docinput.headers.add('CC',edtcc.text);

    > docinput.headers.add('Subject',edtsubject.text);

    > docinput.headers.add('Content-Type','TEXT/PLAIN charset=US-ASCII');

    > end;

    >

    >

    > with smtp1 do

    > senddoc(noparam, docinput.headers, memo1.text, " , ");

    > end;

    >

    > procedure Tfrmmail.btnconnectClick(Sender: TObject);

    > begin

    > smtp1.remotehost := edthost.text;

    > smtp1.Connect(noparam, noparam);

    > end;

    >

    > end.

    > 이렇게 하면 된다던데....

    > 자꾸 위의 docinput에서 에러가 뜹니다.....왜 그럴까요?

    > 한 수 가르쳐 주십시오.....

    >

    docinput에서 에러는...

    아마 제 생각에는 OBJECT INSPECTOR의 edit명과 폼에 작성한 edit명이

    틀려서 그런게 아닐까요.

    저도 예전에 이 샘플로 해보았는데..

    위와 같은 오류가 있어서 잘 안되었거든요.

    아니면 문법상 오류가 생긴것이 아닐까요?



    그리고 위의 코딩상에 senddoc(noparam, docinput.headers, memo1.text, " , ");

    에서 "."는 문법 에러가 나더군요.. 그래서 저는 '',''로 바꾸었더니 해결되었습니다.



    잘해보셔요..