知识大全 使用TNMSMTP控件在需认证服务器上发送邮件

Posted

篇首语:古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用TNMSMTP控件在需认证服务器上发送邮件相关的知识,希望对你有一定的参考价值。

使用TNMSMTP控件在需认证服务器上发送邮件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  前言  现在很多STMP服务器在发送邮件时均需重新认证一遍 而Delphi的TNMSMTP控件对它没有很 可视化 的支持 使很多人在开发过程中大打问号

  由于前段时间在做《CSDN查询助手》的时候 使用的也是需认证的服务器( ) 从其它地方摘取了部分代码得以解决 现在此发布与大家共享

  实现

   在NMSMTP的OnConnect事件中添加代码

var  strUserName strPassword: String;begin  strUserName := EncodeString( CoolSlob );//CoolSlob是服务器的帐号  strPassword := EncodeString( Password );//Password是密码  进行认证 输入编码后的用户名 密码  nmsmtp Transaction( EHLO ) ;  nmsmtp Transaction( AUTH LOGIN );  nmsmtp Transaction(strUserName);  nmsmtp Transaction(strPassword);  StatusBar SimpleText := 连接成功 ;end;

   EncodeString函数实现过程

对参数Decoded字符串进行Base 编码 返回编码后的字符串function EncodeString(Decoded:string):String;var    mmTemp mmDecoded:TMemoryStream;    strTemp:TStrings;begin    mmTemp := TMemoryStream Create;    mmDecoded:=TMemoryStream Create;    strTemp:=TStringList Create;    strTemp Add(Decoded);    strTemp SaveToStream(mmTemp);    mmTemp Position := ;    剔除mmTemp从strTemp中带来的字符# #     mmDecoded CopyFrom(mmTemp mmTemp Size );    对mmDecoded进行Base 编码 由mmTemp返回编码后的结果    EncodeBASE (mmTemp mmDecoded);    获得Base 编码后的字符串    mmTemp Position:= ;    strTemp LoadFromStream(mmTemp);    返回结果必须从strTemp[ ]中获得 如果使用strTemp Text会    带来不必要的字符# #     Result:=strTemp[ ];end;

   EncodeBASE 函数实现过程

function EncodeBASE (Encoded: TMemoryStream ; Decoded: TMemoryStream): Integer;const    _Code : String[ ] =        ( ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +/ );var    I: LongInt;    B: array[ ] of Byte;    J K L M Quads: Integer;    Stream: string[ ];    EncLine: String;begin    Encoded Clear;    Stream := ;    Quads := ;    为提高效率 每 字节流为一组进行编码    J := Decoded Size div ;    Decoded Position := ;    对前J* 个字节流进行编码    for I := to J do    begin        Decoded Read(B );        for M := to do        begin            for K := to do            begin                L:= *M + *K;                Stream[Quads+ ] := _Code [(B[L] div )+ ];                Stream[Quads+ ] := _Code [(B[L] mod )* + (B[L+ ] div )+ ];                Stream[Quads+ ] := _Code [(B[L+ ] mod )* + (B[L+ ] div )+ ];                Stream[Quads+ ] := _Code [B[L+ ] mod + ];                Inc(Quads );                if Quads = then                begin                    Stream[ ] := # ;                    EncLine := Stream+# # ;                    Encoded Write(EncLine[ ] Length(EncLine));                    Quads := ;                end;            end;        end;    end;

    对以 为模的余数字节流进行编码    J := (Decoded Size mod ) div ;    for I := to J do    begin        Decoded Read(B );        Stream[Quads+ ] := _Code [(B[ ] div )+ ];        Stream[Quads+ ] := _Code [(B[ ] mod )* + (B[ ] div )+ ];        Stream[Quads+ ] := _Code [(B[ ] mod )* + (B[ ] div )+ ];        Stream[Quads+ ] := _Code [B[ ] mod + ];        Inc(Quads );        每行 个字符        if Quads = then        begin            Stream[ ] := # ;            EncLine := Stream+# # ;            Encoded Write(EncLine[ ] Length(EncLine));            Quads := ;        end;    end;    = 补位    if (Decoded Size mod ) = then    begin        Decoded Read(B );        Stream[Quads+ ] := _Code [(B[ ] div )+ ];        Stream[Quads+ ] := _Code [(B[ ] mod )* + (B[ ] div )+ ];        Stream[Quads+ ] := _Code [(B[ ] mod )* + ];        Stream[Quads+ ] := = ;        Inc(Quads );    end;

    if (Decoded Size mod ) = then    begin        Decoded Read(B );        Stream[Quads+ ] := _Code [(B[ ] div )+ ];        Stream[Quads+ ] := _Code [(B[ ] mod )* + ];        Stream[Quads+ ] := = ;        Stream[Quads+ ] := = ;        Inc(Quads );    end;

    Stream[ ] := Chr(Quads);    if Quads > then    begin        EncLine := Stream+# # ;        Encoded Write(EncLine[ ] Length(EncLine));    end;

cha138/Article/program/Delphi/201311/25054

相关参考

知识大全 ASP.NET服务器控件发送脚本

ASP.NET服务器控件发送脚本  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要尽管从技术角

知识大全 邮件发送组件

  先添加引入命名空间SystemNetMail  组件代码:  ///<summary>  ///邮件发送组件  ///</summary>  publicclassEmai

知识大全 java实现邮件的发送分享

  java实现邮件的发送分享方法如下  publicclassPopupAuthenticatorextendsAuthenticator  publicPasswordAuthentication

知识大全 .NET邮件发送

.NET邮件发送  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  usingSystem;&nbs

知识大全 Java发送邮件

Java发送邮件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  记得曾经学习用javamail发

知识大全 使用JavaMail 实现邮件发送

使用JavaMail实现邮件发送  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   im

知识大全 QQ三国会员 邮件发送附件能发送三国币吗拜托各位大神

QQ三国会员邮件发送附件能发送三国币吗拜托各位大神  以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!QQ

知识大全 如何使用JSP来发送邮件

如何使用JSP来发送邮件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  MESSAGEJSP  

知识大全 谁知道怎么发送公众号模板消息

谁知道怎么发送公众号模板消息?请教吧!2014年08月14日微信团队向具有支付权限的公众号开放了模板消息,使用效果良好,现扩大模板消息开放范围,向认证后的服务号进行开放。所有服务号都可以在功能->

知识大全 从asp.net页面发送电子邮件

  我们经常看到在一些博客页面里可以发表评论通过电子邮件通知版主(例如咱们的博客园)那么如何用发送电子邮件呢?我们可以借助NET提供的强大的类库达到目的  首先我们要引入SystemWebMail命名