前段時間由於業務的需要,需封裝乙個能**郵件的dll供系統呼叫。於是考慮到indy了。indy 10 version 10.5.8.3。
呼叫者提供 收信人列表(郵件之間用;分割),郵件主題,附件列表(附件之間用;分割)。
function sendmail(v_mails,v_subject,v_files:pansichar):integer;stdcall;
varidsmtp2: tidsmtp;
idmsg1: tidmessage;
idemailaddressitem: tidemailaddressitem;
lst : tstringlist;
v_i:integer;
begin
idsmtp2:=tidsmtp.create(nil);
idmsg1 :=tidmessage.create(nil);
lst:=tstringlist.create;
lst.delimiter:=';';
lst.delimitedtext:=string(v_mails);
//新增收信人。
for v_i := 0 to lst.count-1 do
begin
if trim(lst[v_i])<>'' then
begin
with idmsg1 do
begin
from.name:='☆';
from.address:='☆@163.com';
idemailaddressitem := recipients.add;
idemailaddressitem.address := lst[v_i]+'@163.com';
idemailaddressitem.name:=lst[v_i];
subject :=string(v_subject);
end;
end;
end;
lst.clear;
lst.delimiter:=';';
lst.delimitedtext:=string(v_files);
//新增附件
for v_i := 0 to lst.count-1 do
begin
if fileexists(lst[v_i]) then
begin
tidattachmentfile.create(idmsg1.messageparts,lst[v_i]);
end;
end;
idsmtp2.authtype := satdefault;
idsmtp2.username :='☆☆';
idsmtp2.password :='☆☆☆';
idsmtp2.host := 'mail.163.com';
idsmtp2.port := 25;
tryidsmtp2.connect;
tryidsmtp2.send(idmsg1);
result:=1;
finally
idsmtp2.disconnect;
end;
except
on e:exception do
begin
result:=0;
end;
end;
end;
用Indy建立收發電子郵件的例子
1 建立工程,在窗體中加入idsmtp1 idmessage1和idpop31 indy控制項標籤組 控制項各乙個。2 設定 idsmtp1.host smtp.163.com 我用的是163檢試,具體也可選擇其它伺服器 idsmtp1.username caoyan528 此處即表示郵箱的帳號名,...
使用Indy控制項發郵件時遇到的問題
使用tidmessage和tidsmtp來發生郵件 郵件正文使用html,發163和qq郵箱正常,而發126和188等會顯示html原始碼。多方查資料後,在微軟的http office.microsoft.com zh cn outlook hp012329962052.aspx中突然得到靈感,可能...
使用indy傳送電子郵件的注意點
用indy9.0.18元件傳送電子郵件很簡單,一般這樣就可以 1 對 qq.com,需要登入http mail.qq.com,在你的郵箱設定中去開通 允許pop3 smtp收發郵件 2 asmtpusername你要注意郵件服務商如何規定的,對 qq.com,只需要且只能輸入前面的 就可以了,而對於...