try
   IdSMTP1.Host := '123.yahoo.com;
   IdMessage1.From.Address := '[email protected]';
   IdMessage1.Recipients.EMailAddresses:='[email protected]';
   IdMessage1.CharSet := 'BIG5';
   IdMessage1.Subject:= '測試';
   memo1.Lines.Add('測試');
   IdMessage1.Body.Text := Memo1.Text;
   IdSMTP1.Connect();
   IdSMTP1.Authenticate;
   IdSMTP1.Send(IdMessage1);
finally
      IdSMTP1.Disconnect;
   end;程式碼如上
為什麼我寄出去的卻是附加檔案呢???附檔的附檔名為.dat
請問我該如何讓它顯示在mail下面那快內容中呀???!!!

解决方案 »

  1.   

    将IdSMTP1.Connect();写在IdSMTP1.Host := '123.yahoo.com;的下面。
    试试。
      

  2.   

    請問...IdMessage1
    是不是有少設定什麼???才會出現這樣的狀況...
      

  3.   

    发附档,是需要另外写代码的。
    filename := 'c:\x.ods';
    TIdAttachment.Create(IdMessage1.MessageParts,filename);
    idsmtp1.Send(idmessage1);
    这样才会发出附档来。
      

  4.   

    可是我沒有寫>"<(暈)
    我收到的檔案是附檔...我才納悶的說...求求你們幫忙...因為有點急...
      

  5.   

    請問一下
    是拉
    IdMessage1跟IdSMTP1還有Memo1原件對吧!!
    還是我連元件都拉錯了???這個程式碼...好像在另外一篇中,有餒...所以我就自行修改了..可不知道是不是哪邊弄錯了???
      

  6.   

    以下是一个发mail的标准写法,至少我这样写不会发附档出来。
    你可以参照一下var
      filename:string;
    begin
      if idsmtp1.Connected then
        idsmtp1.Disconnect
      else
      begin
        idsmtp1.Host := 'xxx.com';
        idsmtp1.Username := 'your_name';
        idsmtp1.Password:='your_psd';
        idsmtp1.authenticationtype:=atlogin;
        idsmtp1.Port:=25;
        idsmtp1.Connect;
      end;
      idmessage1.From.Address:[email protected]';
      idmessage1.Recipients.EMailAddresses:[email protected]';
      idmessage1.From.Name:='your_name';
      idmessage1.Subject:='test';
      idmessage1.Body.Text:='sdfsdfsdfsdfsdf';
      idsmtp1.Send(idmessage1);
    end;
      

  7.   


    漏了2个引号
    idmessage1.From.Address:[email protected]';
    idmessage1.Recipients.EMailAddresses:[email protected]';
    改成
    idmessage1.From.Address:='[email protected]';
    idmessage1.Recipients.EMailAddresses:='[email protected]';
      

  8.   

    VAR D : STRING;   N123.Close;
       N123.Params.ParamByName('ORDER').AsString := EIDT1.Text;
       N123.Open;
       N123.First;
       try
       IdSMTP1.Host := '123.yahoo.com';
       idsmtp1.Port:=25;
       IdSMTP1.Connect;
       IdMessage1.From.Address := '[email protected]';
       IdMessage1.Recipients.EMailAddresses:='[email protected]';
       IdMessage1.CharSet := 'BIG5';
       IdMessage1.Subject:= '測試';
      WHILE NOT N123.Eof DO
       BEGIN
          D := FNAME + 123ORDER.Value +#13#10 ;
          N123.Next;
       END;
       idmessage1.Body.Add('測試用');
       idmessage1.Body.Add('訂單編號');
       idmessage1.Body.Text := D;
       //IdSMTP1.Authenticate;
       IdSMTP1.Send(IdMessage1);
       finally
          IdSMTP1.Disconnect;
       end;
    因為我需要寄出資料表N123中的資料...
    所以寫了一個WHILE去抓取資料...不知道是不是因為這個原因~才導致這樣的...
    我把所有的程式碼都po上來...
    另外..我不能加入帳號密碼~會寄不出信件,出現錯誤訊息請您幫忙...!!!謝謝!!
      

  9.   

    對呀~目前這段程式碼(沒有加入帳號密碼)
    的確發出附檔來,我的OUTLOOK也可以收到資料
    但是...加入帳號密碼後,他會出現錯誤訊息...
      

  10.   

    SORRY~
    剛剛看錯
    我以為你是問我的
    所以我回答是我的您的程式碼
    不會出現附檔!!!為什麼呀???因為WHILE嗎??
      

  11.   

    我自己连数据库,然后while遍历了查询出来的记录最后发送mail,也不会出现附档。
    你的D := FNAME + 123ORDER.Value +#13#10 ;
    当中,FNAME和order.value分别是什么?
      

  12.   

    尤其是那个FNAME,它是文件名称?
      

  13.   

    阿阿~不好意思...
    FNAME是變數名稱,其實他就是D(沒改到SORRY)order.value→抓取N123元件的某個欄位的質
    就是TQUERY,雙按兩下後,在跳出來的視窗按右鍵,選ADD ALL FIELDS裡面的
      

  14.   

    VAR D : STRING;  N123.Close;
      N123.Params.ParamByName('ORDER').AsString := EIDT1.Text;
      N123.Open;
      N123.First;
      try
      IdSMTP1.Host := '123.yahoo.com';
      idsmtp1.Port:=25;
      IdSMTP1.Connect;
      IdMessage1.From.Address := '[email protected]';
      IdMessage1.Recipients.EMailAddresses:='[email protected]';
      IdMessage1.CharSet := 'BIG5';
      IdMessage1.Subject:= '測試';
      WHILE NOT N123.Eof DO
      BEGIN
      D := D + N123ORDER.Value +#13#10 ;
      N123.Next;
      END;
      idmessage1.Body.Add('測試用');//這兩行沒跑出來
      idmessage1.Body.Add('訂單編號');//這兩行沒跑出來
      idmessage1.Body.Text := D;
      //IdSMTP1.Authenticate;
      IdSMTP1.Send(IdMessage1);
      finally
      IdSMTP1.Disconnect;
      end;
      

  15.   

    idmessage1.Body.Add('測試用');//這兩行沒跑出來
    idmessage1.Body.Add('訂單編號');//這兩行沒跑出來
    idmessage1.Body.Text := D;
    那两行没跑出来是因为idmessage1.Body.Text := D;这句重新给text赋值为D了
    就相当于,你的text内容是这样的
    idmessage1.Body.Add('測試用');——》idmessage1.Body.Text:='测试用'
    idmessage1.Body.Add('測試用');——》idmessage1.Body.Text:='测试用訂單編號'
    idmessage1.Body.Text := D;——》idmessage1.Body.Text:=D;
      

  16.   

    idmessage1.Body.Add('測試用');//這兩行沒跑出來
    idmessage1.Body.Add('訂單編號');//這兩行沒跑出來
    idmessage1.Body.Text := D;
    修改成
    idmessage1.Body.Add('測試用');//這兩行沒跑出來
    idmessage1.Body.Add('訂單編號');//這兩行沒跑出來
    idmessage1.Body.Add(D);
    这样就有了。
      

  17.   

    D := D + N123ORDER.Value +#13#10 ;
    ——》
    D := D + N123.fieldbyname['ORDER'].AsString +#13#10 ;
      

  18.   

    對不起...請問一下
    您在uses那有加入什麼嗎??(我只的是程式碼上面那裡)因為我用您的改..我也是收到附加檔案
    不過那兩行是可以出現了(謝謝您)還是我元件少拉了...或是拉錯了???
    IdSMTP1→TIDSMTP
    IdMessage1→TIDMESSAGE
    (請問有錯嗎??)
    還是我哪裡的屬性沒有設定...請您指導~謝謝!!
      

  19.   

    就那两个控件啊,不用设定啊。
    把这句D := D + N123ORDER.Value +#13#10 ;
    改成——》
    D := D + N123.fieldbyname('ORDER').AsString +#13#10 ;还有,你先别急着发送mail,先把D秀出来看一下,里面是些什么东西。
    难道在发送之前,你不先看看自己发出去的是什么内容的吗?
      

  20.   

    您好~~
    我試著秀出D資料表中的內容(我將發送MAIL的地方備註起來)
    它可以出現..
    在EDIT中(只是並未做換行動作)或是可以出現在MEMO1中...
    EDIT1.Text :=  D;(請問這是您說的嗎)
    呈現出來的資料(確實是訂單號碼)如果要秀出IdMessage1.BODY.TEXT的資料...
    也可以正常出現資料在EDIT中
    (不曉得您說的秀出資料是這個意思嗎)
      

  21.   

    这样吧,你把那个循环写在外面,先得到D的字符串。
    我真的没办法了,要么就是你代码别的地方有什么,否则肯定不会有附件发出。
    想想看,我那段代码既然不会发出附件,你就按照我那样的写不就可以了?
    只不过我那段代码是idmessage1.Body.Text:='sdfsdfsdfsdfsdf';
    和你的内容不一样,你只需要传入你的字符串替换不就好了?
    我绝对怀疑你其他代码。
    还有你那个查询,写得有点不规范
    with query1 do
    begin
      close;
      sql.clear;
      sql.add('your_SQL');
      open;
    end;
    不过既然你说有正确得到值,那也没关系了,把那个D放进去就行。
    VAR D : STRING;  N123.Close;
      N123.Params.ParamByName('ORDER').AsString := EIDT1.Text;
      N123.Open;
      N123.First;
      WHILE NOT N123.Eof DO
      BEGIN
      D := D + N123ORDER.Value +#13#10 ;
      N123.Next;
      END;  try
      IdSMTP1.Host := '123.yahoo.com';
      idsmtp1.Port:=25;
      IdSMTP1.Connect;
      IdMessage1.From.Address := '[email protected]';
      IdMessage1.Recipients.EMailAddresses:='[email protected]';
      IdMessage1.CharSet := 'BIG5';
      IdMessage1.Subject:= '測試';
      idmessage1.Body.Add('測試用');
      idmessage1.Body.Add('訂單編號');
      idmessage1.Body.Add(D);
      IdSMTP1.Send(IdMessage1);
      finally
      IdSMTP1.Disconnect;
      end;
      

  22.   

    我是將查詢寫在TQUERY的SQL裡面
    所以WHILE那邊是查詢如果有資料才抓取..
      

  23.   

    我知道你是想从数据库里抓东西,然后用mail发出去。这种事我不知道做过多少回,到你这竟然不行。
    你电脑肯定没问题,因为运行我那段代码,并没有发出附件。
    我还是那句话,把资料抓出来,然后存入D中,然后发出去。我肯定它不会有附件。
    还有,你其他的代码呢,写了什么?
    算了,哥真的不想回答了。很抱歉,你的问题请高手指点吧。
      

  24.   

    果真板大說的可以...
    我用變數去接..在發送MAIL就可以了...謝謝!!