用indy的stmp實現郵件的群發

2021-06-09 07:27:51 字數 1667 閱讀 4201

前段時間由於業務的需要,需封裝乙個能**郵件的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,只需要且只能輸入前面的 就可以了,而對於...