再试过了很多发邮件的方法后决定写一个连接服务器的方法来发邮件。

在这之前做过一个FTP客户端,采用的就是Socket 连接服务器,想到这里觉得用在SMTP上是不是也可以呢

于是立马打开telnet 连接了下,成功了,哈哈。开始查命令

EHLO LoaclHostName

auth login

输入用户名Base64

密码 base64

验证成功了

mail from:<mail> 这里是关键千万别把 <> 掉了,这个问题烦死我了

rcpt to:<mail> 同上

Data 状态码为354  就可以开始写邮件了,

ESMTP邮件发送方法,采用SocketWriteStream("Date:"+DateTime.Now.ToUniversalTime().ToString(),this.charset);//发送时间
ESMTP邮件发送方法,采用Socket
            WriteStream("From:\""+GetBase64(this.fromname)+"\"<"+this.from+">",this.charset);//发件人
ESMTP邮件发送方法,采用Socket
            WriteStream("To:\"" + GetBase64(this.toname) + "\"<"+this.to+">",this.charset);//收件人
ESMTP邮件发送方法,采用Socket
            WriteStream("Subject:"+GetBase64(this.subject),this.charset);//发送主题
ESMTP邮件发送方法,采用Socket
ESMTP邮件发送方法,采用Socket            
//信件ID
ESMTP邮件发送方法,采用Socket
            WriteStream("Message-Id:"+DateTime.Now.ToUniversalTime().ToString("yyyyMMddHHmmss")+this.from.Substring(this.from.IndexOf("@")),this.charset);
ESMTP邮件发送方法,采用Socket
ESMTP邮件发送方法,采用Socket            
//发送软件信息
ESMTP邮件发送方法,采用Socket
            WriteStream("X-mailer: MailSend 1 2 [cn]");
ESMTP邮件发送方法,采用Socket
ESMTP邮件发送方法,采用Socket            
//MIME版本
ESMTP邮件发送方法,采用Socket
            WriteStream("MIME-Version:1.0",this.charset);
ESMTP邮件发送方法,采用Socket
ESMTP邮件发送方法,采用Socket            
//回复地址
ESMTP邮件发送方法,采用Socket
            WriteStream("Reply-To:"+this.from,this.charset);
ESMTP邮件发送方法,采用Socket
ESMTP邮件发送方法,采用Socket            
//邮件优先级
ESMTP邮件发送方法,采用Socket
            if (priority !=3)

向服务器发送一个 "." 结束会话

if(!OperaStream("\r\n.","250"))
   {
    boolErr = true;
   }
OK了,到现在为止,不知道新浪为什么不能发,查了下,好像是新浪在验证时会访问你的机器,如果能访问成功才能发。不知道有什么高招忘指教

相关文章:

  • 2021-09-17
  • 2021-06-12
  • 2022-12-23
  • 2022-12-23
  • 2021-08-10
  • 2022-01-08
  • 2021-09-07
  • 2022-12-23
猜你喜欢
  • 2021-06-02
  • 2021-11-25
  • 2022-12-23
  • 2021-09-23
  • 2022-12-23
  • 2021-05-19
  • 2022-12-23
相关资源
相似解决方案