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下面那快內容中呀???!!!
试试。
是不是有少設定什麼???才會出現這樣的狀況...
filename := 'c:\x.ods';
TIdAttachment.Create(IdMessage1.MessageParts,filename);
idsmtp1.Send(idmessage1);
这样才会发出附档来。
我收到的檔案是附檔...我才納悶的說...求求你們幫忙...因為有點急...
是拉
IdMessage1跟IdSMTP1還有Memo1原件對吧!!
還是我連元件都拉錯了???這個程式碼...好像在另外一篇中,有餒...所以我就自行修改了..可不知道是不是哪邊弄錯了???
你可以参照一下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;
漏了2个引号
idmessage1.From.Address:[email protected]';
idmessage1.Recipients.EMailAddresses:[email protected]';
改成
idmessage1.From.Address:='[email protected]';
idmessage1.Recipients.EMailAddresses:='[email protected]';
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上來...
另外..我不能加入帳號密碼~會寄不出信件,出現錯誤訊息請您幫忙...!!!謝謝!!
的確發出附檔來,我的OUTLOOK也可以收到資料
但是...加入帳號密碼後,他會出現錯誤訊息...
剛剛看錯
我以為你是問我的
所以我回答是我的您的程式碼
不會出現附檔!!!為什麼呀???因為WHILE嗎??
你的D := FNAME + 123ORDER.Value +#13#10 ;
当中,FNAME和order.value分别是什么?
FNAME是變數名稱,其實他就是D(沒改到SORRY)order.value→抓取N123元件的某個欄位的質
就是TQUERY,雙按兩下後,在跳出來的視窗按右鍵,選ADD ALL FIELDS裡面的
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;
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;
idmessage1.Body.Add('訂單編號');//這兩行沒跑出來
idmessage1.Body.Text := D;
修改成
idmessage1.Body.Add('測試用');//這兩行沒跑出來
idmessage1.Body.Add('訂單編號');//這兩行沒跑出來
idmessage1.Body.Add(D);
这样就有了。
——》
D := D + N123.fieldbyname['ORDER'].AsString +#13#10 ;
您在uses那有加入什麼嗎??(我只的是程式碼上面那裡)因為我用您的改..我也是收到附加檔案
不過那兩行是可以出現了(謝謝您)還是我元件少拉了...或是拉錯了???
IdSMTP1→TIDSMTP
IdMessage1→TIDMESSAGE
(請問有錯嗎??)
還是我哪裡的屬性沒有設定...請您指導~謝謝!!
把这句D := D + N123ORDER.Value +#13#10 ;
改成——》
D := D + N123.fieldbyname('ORDER').AsString +#13#10 ;还有,你先别急着发送mail,先把D秀出来看一下,里面是些什么东西。
难道在发送之前,你不先看看自己发出去的是什么内容的吗?
我試著秀出D資料表中的內容(我將發送MAIL的地方備註起來)
它可以出現..
在EDIT中(只是並未做換行動作)或是可以出現在MEMO1中...
EDIT1.Text := D;(請問這是您說的嗎)
呈現出來的資料(確實是訂單號碼)如果要秀出IdMessage1.BODY.TEXT的資料...
也可以正常出現資料在EDIT中
(不曉得您說的秀出資料是這個意思嗎)
我真的没办法了,要么就是你代码别的地方有什么,否则肯定不会有附件发出。
想想看,我那段代码既然不会发出附件,你就按照我那样的写不就可以了?
只不过我那段代码是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;
所以WHILE那邊是查詢如果有資料才抓取..
你电脑肯定没问题,因为运行我那段代码,并没有发出附件。
我还是那句话,把资料抓出来,然后存入D中,然后发出去。我肯定它不会有附件。
还有,你其他的代码呢,写了什么?
算了,哥真的不想回答了。很抱歉,你的问题请高手指点吧。
我用變數去接..在發送MAIL就可以了...謝謝!!