delphi 发邮件,delphi 邮件发送程序
你是否对于delphi 发邮件和delphi 邮件发送程序感到困惑?别担心,今天小编将为您揭开这个谜团,让我们一同探索吧!
怎样用delphi实现给指定邮箱发信息
你可以使用控件NMSMTP来发送电子邮件,以下是示例代码:
procedure TfrmSendMail.btnSendClick(Sender:Tobject);
begin
if edtAdress.text=’’ then
exit;
if edtport.text=’’ then
exit;
if edtSendusertext=’’ then
exit;
if edtReceiver.text=’’ then
exit;
NMSMTP1.host:=edtAdress.text;
NMSMTP1.port:=strtoint(edPort.text);
NMSMTP1.UserId:=edtSenduser.text;
NMSMTP1.conncet;
end;
procedure TfrmSendMail. NMSMTP1 ConnectionFailed(Sender:Tobject);
begin
showmessage(‘连接失败’);
end;
procedure TfrmSendMail. NMSMTP1 Connection(Sender:Tobject);
begin
sendmessage(Handle,WM_LOGIN,0,0);//自定义消息息传送。产生WM_LOGIN事件
end;
procedure TfrmSendMail. WMLOGIN(var MSG:TWM);//处理自定义消息
begin
//这里发送邮件。
NMSmTP1.postmessage.fromadress:=edtuserMail.text;
NMSmTP1.postmessage.fromname:=edtsenderuser.text;
NMSmTP1.postmessage.subject:=edtsubject.text;
NMSmTP1.postmessage.toadress.add(edtreceiver.text);
NMSmTP1.postmessage.attachments.addstrings(listbox1.items);
NMSmTP1.postmessage.body.assign(memo1.lines);
NMSMTP1.SENDMAIL;
NMSMTP1.DISCONNCET;
end;
以下是有关的NMSMTP资料:
属性
1、 ClearParams属性
为真时,邮件发送完毕会把PostMessage属性的值清空
2、 EncodeType
指定邮件编码方式。uuMIME—MIME编码;unCode---UUEncoding编码
3、 FinalHeader
指定最后的消息头标。
4、Host
SMTP服务器的主机名或IP地址。
5、LocalIP
返回客户机的IP地址,若有多个只返回一个。
6、Port
指定服务器的端口
7、PostMessage
是一个类,存储要发送的邮件信息。具体如下:
l FromName:发件人名称
l FromAdress:发件人email地址。
l ReplayToAdress:回复地址
l Orgranization:发件人所在地址。
l LocalProgram:发件人所用的客户程序
l ToAdress:是Tstringlist对象,收件人的接收地址。
l ToCC: Tstringlist对象,抄送的email地址。
l ToBCC: Tstringlist对象,密送的email地址。
l Attachments: Tstringlist对象,指定的附件。
l Body: Tstringlist对象,邮件正文。
l Subject:邮件主题。
l Date:邮件发送日期,为空指当前日期。
9、 ReplayNumber
只读属性,返回smtp服务器响应应答信息。
10、status
当前状态信息。
11、Timeout
毫秒级别的单位,如果规定时间Socket没有响应,触发异常。
12、TransactionReply
返回上一次命令的执行结果。
13、UserID
指定的用户名。
Delphi发送邮件的问题
你的程序有很多问题.我单看了你调用SendMail这个过程就有问题.
你的SendMail过程在定义是没有定义参数:
procedure SendEmail(Sender: TObject);,
可是在下面却又需要传入参数:
procedure TForm1.SendEmail(Recipient,Address:string);.
我估计你这个SendMail的过程是直接Copy人家的.这样肯定会出问题的.
我根据你的意思写了一个差不多的程序.该程序能够读取到程序目录下一个'rf.txt'文件,并将该文件的内容作为将要发送的邮件内容.
需要在窗体中放置一个TIDMessage控件,一个TIdSMTP控件
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdMessage, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP;
type
TForm1= class(TForm)
SMTP: TIdSMTP;
IdMsgSend: TIdMessage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure sendmail(sbody:TStrings);
private
{ Private declarations}
public
{ Public declarations}
end;
var
Form1: TForm1;
implementation
{$R*.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Email: Textfile;
Bodytxt: tstrings;
s:string;
begin
Bodytxt:= TStringList.Create;
try
AssignFile(Email,extractfilepath(application.ExeName)+'rf.txt');
reset(Email);
while not EOF(Email) do
begin
readln(Email, s);
Bodytxt.Add(s);
end;
SendMail(Bodytxt);//调用SendMail,传入邮件内容BodyTxt
finally
closefile(email);
end;
ShowMessage('SendMail OK!');
end;
procedure TForm1.sendmail(sBody: TStrings);
begin
with IdMsgSend do
begin
Body:= sBody;//邮件内容
From.Text:='xxxx';//发件人���
Recipients.EMailAddresses:='xxxx';{ To: header}//收件人�
Subject:='yyyy';//邮件主旨
tidattachment.Create(IdMsgSend.MessageParts,'D:\Excel\Test.xls');//发送附件,可发送多个
SMTP.Host:='smtp.michael.com';//主机名称��
SMTP.Port:= 25;// PORT
SMTP.Connect;
try
try
SMTP.Send(IdMsgSend);
except
end;
finally
SMTP.Disconnect;
end;
end;
end;
end.
还有问题的话,可以发消息给我.
delphi 邮件发送程序
try
// IdSMTP1.AuthenticationType:=atLogin;//设置登陆类型 delphi2006不需要用
IdSMTP1.Username:='';//设置登陆帐号
IdSMTP1.Password:='';//设置登陆密码
IdSMTP1.Host:='';//设置SMTP地址
filename:='C:\文件.txt';//需要添加的附件文件
TIdAttachmentfile.Create(IdMessage1.MessageParts,filename);//添加附件
// IdSMTP1.Port:=8080;//设置端口必须转化为整型 delphi2006不需要用
if not idsmtp1.Connected then
IdSMTP1.Connect;//开始连接服务器
except
Showmessage('连接失败,请重试!');
Exit;//连接失败的话退出该执行过程
end;
IdMessage1.Body.Clear;//先清空上次发送的内容
IdMessage1.Subject:='测试';//设置邮件发送的标题
IdMessage1.Body.add('第一个自动发送邮件测试');//设置邮件发送的主体
IdMessage1.From.Address:='';//设置邮件的发件人也就是说该邮件来自什么地方
//IdMessage1.Recipients.EMailAddresses:='';//收件人的地址
IdMessage1.CCList.EMailAddresses:='';//抄送
IdMessage1.BccList.EmailAddresses:='';//密送
IdMessage1.Priority:=mpHighest;//邮件重要性
try
idSMTP1.Send(IdMessage1);
Showmessage('邮件发送成功!');
except
Showmessage('邮件发送失败!');
end;
希望对你有帮助
文章到此结束,如果本次分享的delphi 发邮件和delphi 邮件发送程序的问题解决了您的问题,那么我们由衷的感到高兴!