一个火急的问题(200分)

  • 主题发起人 主题发起人 xdog
  • 开始时间 开始时间
X

xdog

Unregistered / Unconfirmed
GUEST, unregistred user!
[red]睡能帮我用delphi或别的开发环境写一个简单的email发送程序啊
要求
1、不能使用网络控件,包括自带的smtp和pop控件
2、要有详细的注解



我给高分,十万火急啊!!![/red]
 
果然很高,可惜我没有时间
帮你顶一下吧
 
用 shellexcute 函数
 
能不能给具体的代码啊
 
我有,但沒有時間幫你寫注解.sorry!手上有3,4個project要做.從上午8:00到晚10:00.我
差點要崩潰.哈哈!!!!!
 
能不能给我幽香发一份啊
binhexx@yeah.net
谢谢啊
 
ShellExecute(handle,nil,pchar('mailto:'+Edit1.Text+'?subject='+Edit2.Text),nil,nil,sw_shownormal);
 
一个按钮,两个输入框就搞定,不过别忘记了加入
uses shellapi
 
利用可视化编程工具Delphi能够制作出自己的E-mail软件。
  Delphi4.0有关E-mail的组件有两个:NmPOP3和NmSTMP,
它们都位于Internet选项卡上,其中,NmPOP3组件封装并实现POP3协议,
用来从Internet POP3服务器上读取电子邮件;NmSTMP封装并实现STMP协议,
可用来向Internet的STMP服务器发送电子邮件。限于篇幅,我们不能两者都介绍,
这里只用NmSTMP编写一个发送E-mail的程序,至于NmPOP3,以后有机会再谈,
或者在看完本文后你有兴趣,也可以借助于Delphi的帮助文档尝试用NmPOP3编程。
  我们先来看一下程序运行界面。图1是程序主窗体,上面有一个字符串网格(
StringGrid)和三个按钮,它们的容器是仅有一个标签的PageControl。单击
“Clear”钮清除网格内容,单击“Send”钮发送E-mail,单击“New Mail”钮
弹出图2所示的对话框,此对话框用来设置STMP服务器名称、发件人地址、收件人地址
、发件人名称和邮件主题,其中前三项必须填写,“Select File”按钮用来打开Open
对话框,以便选取要发送的附件。NmSTMP的属性和方法不多,关键的属性是Host
(STMP服务器名称)和PostMessage(包含邮件信息),正确设置了Host属性和
PostMessage属性后,就可以用Connect方法(连接服务器)和SendMail方法发送
E-mail了。
  编写代码之前先要改变StringGrid1的一些缺省属性:ColCount属性为6,FixedCols属性为0,RowCount属性为2,另外,将PageControl1的Align属性置为alClient。
  以下是Unit1(主窗体)代码清单:
  unit Unit1;
  interface
  uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, Grids, ComCtrls, StdCtrls, Psock, NMsmtp;
  type
   TForm1 = class(TForm)
   PageControl1: TPageControl;
   TabSheet1: TTabSheet;
   StatusBar1: TStatusBar;
   StringGrid1: TStringGrid;
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   NMSMTP1: TNMSMTP;
   procedure FormCreate(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure NMSMTP1Failure(Sender: TObject);
   procedure NMSMTP1SendStart(Sender: TObject);
   procedure NMSMTP1Success(Sender: TObject);
   private
   { Private declarations }
   public
   { Public declarations }
   end;
  var
   Form1: TForm1;
  implementation
  uses Unit2;
  {$R *.DFM}
  procedure TForm1.FormCreate(Sender: TObject);
  begin
   PageControl1.Pages[0].Caption:=‘Send Mail’;
   self.Caption:=‘My Mailer’;
   self.BorderIcons:=[biSystemMenu,biMinimize];
   self.BorderStyle:=bsSingle;
   Application.Icon:=self.Icon;
   Application.Title:=self.Caption;
   with StringGrid1 do
   begin
   Cells[0,0]:=‘Host’;
   Cells[1,0]:=‘To Address’;
   Cells[2,0]:=‘From Address’;
   Cells[3,0]:=‘Your Name’;
   Cells[4,0]:=‘Subject’;
   Cells[5,0]:=‘File’;
   end;
   Button2.Enabled:=False;
   Button3.Enabled:=False;
  end;
  procedure TForm1.Button1Click(Sender: TObject);
  begin
   Form2.Show;
  end;
  procedure TForm1.Button2Click(Sender: TObject);
  var
  i:Integer;
  begin
   for i:=1 to StringGrid1.RowCount-2 do
   with Nmsmtp1 do
   begin
   Host:=StringGrid1.Cells[0,i];
  PostMessage.ToAddress.Add(StringGrid1.Cells[1,i]);
  PostMessage.FromAddress:=StringGrid1.Cells[2,i];
  PostMessage.FromName:=StringGrid1.Cells[3,i];
  PostMessage.Subject:=StringGrid1.Cells[4,i];
   PostMessage.Attachments.Add(StringGrid1.Cells[5,i]);
   Connect;
   Sendmail;
   DisConnect;
   end;
   Button2.Enabled:=False;
   Button3.Click;
   end;
  procedure TForm1.Button3Click(Sender: TObject);
  var
  i:Integer;
  begin
   with StringGrid1 do
   begin
   for i:=1 to RowCount-2 do
   begin
   Cells[0,i]:=‘’;
   Cells[1,i]:=‘’;
   Cells[2,i]:=‘’;
   Cells[3,i]:=‘’;
   Cells[4,i]:=‘’;
   Cells[5,i]:=‘’;
   end;
   RowCount:=2;
   end;
   Button2.Enabled:=False;
   Button3.Enabled:=False;
  end;
  procedure TForm1.NMSMTP1Failure(Sender: TObject);
  begin
   StatusBar1.SimpleText:=‘Mail send failure!’;
  end;
  procedure TForm1.NMSMTP1SendStart(Sender: TObject);
  begin
   StatusBar1.SimpleText:=‘Now Sending...’;
  end;
  procedure TForm1.NMSMTP1Success(Sender: TObject);
  begin
   StatusBar1.SimpleText:=‘Send Success!’;
  end;
  end.
  Button1是“New Mail”按钮,Button 2是“Send”按钮,Button3是“Clear” 按钮。
  以下是Unit2代码清单:
  unit Unit2;
  interface
  uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
  type
   TForm2 = class(TForm)
   OpenDialog1: TOpenDialog;
   GroupBox1: TGroupBox;
   GroupBox2: TGroupBox;
   Edit1: TEdit;
   Edit2: TEdit;
   Edit3: TEdit;
   Edit4: TEdit;
   Edit5: TEdit;
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   Label1: TLabel;
   Label2: TLabel;
   Label3: TLabel;
   Label4: TLabel;
   Label5: TLabel;
   Label6: TLabel;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure FormActivate(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   private
   { Private declarations }
   public
   { Public declarations }
   end;
  var
   Form2: TForm2;
  implementation
  uses Unit1;
  {$R *.DFM}
  procedure TForm2.FormCreate(Sender: TObject);
  begin
   self.Caption:=‘New Mail’;
   self.BorderStyle:=bsDialog;
  end;
  procedure TForm2.FormActivate(Sender: TObject);
  begin
   Edit1.Text:=‘’;
   Edit2.Text:=‘’;
   Edit3.Text:=‘’;
   Edit4.Text:=‘’;
   Edit5.Text:=‘’;
   Label1.Caption:=‘No File’;
  end;
  procedure TForm2.Button1Click(Sender: TObject);
  begin
   if OpenDialog1.Execute then
   Label1.Caption:=Opendialog1.Filename;
  end;
  procedure TForm2.Button2Click(Sender: TObject);
  var
  i:Integer;
  begin
   if (Edit1.Text<>‘’) and (Edit2.Text<>‘’) and (Edit5.Text<>‘’)
and (Label1.Caption<>‘No File’) then
   begin
   with Form1.StringGrid1 do
   begin
   RowCount:=RowCount+1;
   i:=RowCount-2;
   Cells[0,i]:=Edit1.Text;
   Cells[1,i]:=Edit2.Text;
   Cells[2,i]:=Edit5.Text;
   Cells[3,i]:=Edit3.Text;
   Cells[4,i]:=Edit4.Text;
   Cells[5,i]:=Label1.Caption;
   end;
   Form1.Button2.Enabled:=True;
   Form1.Button3.Enabled:=True;
   end;
   self.Hide;
  end;
  procedure TForm2.Button3Click(Sender: TObject);
  begin
   self.Hide;
  end;
  end.
  Edit1、Edit2、Edit3、Edit4、Edit5编辑框分别用于填写服务器名称、
收件人地址、发件人名称、邮件主题和发件人地址。
  现在一个E-mail发送程序就完成了。你可以试一试,自已给自已发几封邮件,
用FoxMail之类的软件是否能收到信。
 
不好意思啊,我的意思是连这个都不能有啊,就是直接用sock发送啊
 
后退
顶部