注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

用Delphi发邮件  

2013-01-12 00:02:30|  分类: delphi xe2 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
    
控件
    IdSMTP1: TIdSMTP;
    IdMessage1: TIdMessage;
代码
    IdSMTP1.Host:='smtp.163.com';
    IdSMTP1.Port:=25;
    IdSMTP1.Username:='发信人名称;
    IdSMTP1.Password:='发信人邮箱密码';
    IdSMTP1.Connect();
    IdMessage1.Body.Clear;
    IdMessage1.Body.Add(信的内容);
    IdMessage1.From.Text:='从哪发的,应该可以邮箱欺骗';
    IdMessage1.Recipients.EMailAddresses:='发到哪个邮箱';
    IdMessage1.Subject:='邮件题目';
    IdSMTP1.AuthenticationType := atLogin;
    IdSMTP1.Authenticate;
    IdSMTP1.Send(IdMessage1);
    IdSMTP1.Disconnect;
end;
重点来了,有朋友试验这个代码说不好用,刚开始我测试也不行,在csdn上用了几百分也没弄明白是怎么回事,
后来一个偶然的机会发现,用新注册的邮箱用这个代码是发不了了,用用过一段时间的邮箱就可以发,新注册用户只能通过web方式发邮件,
估计与在论坛注册的新用户在某个设定时间内发不了帖子是一个道理。

或者: 

我写了一个发邮件的函数,包你满意

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes,
  Graphics, Controls, Forms, Dialogs, StdCtrls, IdComponent,
  IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP, IdBaseComponent,
  IdMessage;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
 type
   TLoginEmailServer=record
      SMTPHost:string;
      SMTPPort:integer;
      Username:string;
      Password:string;
      SmtpAuthType:integer;
   end;


function SendEmail(poSMTPServer:TLoginEmailServer;poBody:Tstrings;psFromEmial,
                   psToEmail,psSubject:string;psContentType:string;
                   CCToEmail:string;poAttachmentPath:TStrings):integer;
var 
   loIdMsgSend: TIdMessage;
   loSMTP: TIdSMTP;
   i:integer; 
begin
   Result:=3;
   loIdMsgSend:=nil;
   loSMTP:=nil; 
   try 
     loIdMsgSend:=TIdMessage.Create(nil);
     loSMTP:=TIdSMTP.Create(nil);
     with loIdMsgSend do
       begin 
        ContentType:=psContentType; 
        From.Text := psFromEmial; 
        ReplyTo.EMailAddresses := psFromEmial; 
        Recipients.EMailAddresses := psToEmail; 
        CCList.EMailAddresses:=CCToEmail; 
        Subject := psSubject; 
        Priority := mpHigh;
        ReceiptRecipient.Text := '';
        Body.Assign(poBody); 
        if Assigned(poAttachmentPath) then 
        begin 
          for i := 0 to poAttachmentPath.Count-1 do    
                  begin
            TIdAttachment.Create(loIdMsgSend.MessageParts,poAttachmentPath.Strings[i]);
          end; 
        end; 
     end; 
     with loSMTP do                    
       begin 
       Host :=poSMTPServer.SMTPHost; 
       Port := poSMTPServer.SMTPPort; 
       if poSMTPServer.SmtpAuthType=1 then 
         AuthenticationType:=atLogin 
       else 
         AuthenticationType:=atNone; 
       Username := poSMTPServer.Username; 
       Password := poSMTPServer.Password; 
       try 
         Connect;    
         Send(loIdMsgSend);       
       except 
         result:=2; 
         exit; 
       end; 
       Result:=0;
       end;
   finally
     loIdMsgSend.Free;
     loSMTP.Free; 
   end;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
     SendEmail(.........);
end;

end.

procedure TForm1.Button1Click(Sender: TObject);
begin
   try
     IdSMTP1.AuthenticationType:=atLogin; //设置登陆类型
     IdSMTP1.Username:=Edit1.Text; //设置登陆帐号
     IdSMTP1.Password:=Edit2.Text; //设置登陆密码
     IdSMTP1.Host:=Edit3.Text; //设置SMTP地址
     IdSMTP1.Port:=strtoint(Edit4.Text); //设置端口   必须转化为整型
     IdSMTP1.Connect;   //开始连接服务器
   except
     Showmessage('连接失败,请重试!');
     Exit; //连接失败 的话 退出该执行过程 
   end; 
   IdMessage1.Body.Clear;   //先清空上次发送的内容 
   IdMessage1.Subject:=Edit5.Text;   //设置邮件发送的标题 
   IdMessage1.Body.Assign(Memo1.Lines);   //设置邮件发送的主体 
   IdMessage1.From.Address:=Edit6.Text; //设置邮件的发件人   也就是说该邮件来自什么地方 
   IdMessage1.Recipients.EMailAddresses:=Edit7.Text;   //收件人的地址 
   try 
     idSMTP1.Send(IdMessage1); 
     Showmessage('邮件发送成功!');
   except 
     Showmessage('邮件发送失败!');
   end; 
end;   
  评论这张
 
阅读(636)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017