L脚本语言 使用L脚本语言实现SMTP协议发送邮件

封装SMTP协议为库文件

 libsmtp.scp

#scplib
#scpeng
load:extobj,socket
//封装SMTP会话对象
define:class,SMTPSESSION
public:
	define:socket,sock
        define:address,serveraddr
        define:string,m_sender
        define:string,m_receipt
        define:function,smtp_connect
		define:string,mess	
                sock.create() //创建套接字对象
                sock.connect(serveraddr) //连接到服务器
                sock.receive(mess) //接收欢迎消息
                mess.show()
	end
        define:function,smtp_sayhello
		define:string,mess,"EHLO robot\r\n"	
                sock.send(mess)
                sock.receive(mess)
                mess.show()	
	end
        
        
	define:function,smtp_tell_sender,s
		define:string,mess
                m_sender=s
                mess.format("MAIL FROM: <%s>\r\n",s)
                mess.show()	
                sock.send(mess)
                sock.receive(mess)
                mess.show()
	end

	define:function,smtp_tell_receipt,t
		define:string,mess
                m_receipt=t
                mess.format("RCPT TO: <%s>\r\n",t)
                mess.show()	
                sock.send(mess)
                sock.receive(mess)
                mess.show()
	end
	define:function,smtp_start_data
		define:string,mess,"DATA\r\n"
                mess.show()	
                sock.send(mess)
                sock.receive(mess)
                mess.show()
	end
        
        
	define:function,smtp_send_body,subject,body
		define:string,all
		define:string,mess,"DATA\r\n"
                define:string,head   
                define:time,sendtime   
                define:string,stime   
                sendtime=currenttime
                stime=sendtime.transform(GMT)                
                
                all=mess
                head.format("From:%s\r\n",m_sender);
                all+=head

		head.format("To:%s\r\n",m_receipt);
		all+=head

		head.format("Date:%s\r\n",stime);
		all+=head		

		head.format("Subject:%s\r\n\r\n",subject);
		all+=head
                
                all+=body;
                all+="\r\n.\r\n";	

		all.show()	
                sock.send(all)
                sock.receive(mess)
                mess.show()
	end

	define:function,smtp_close
		define:string,mess,"QUIT\r\n"
                mess.show()	
                sock.send(mess)
                sock.receive(mess)
                mess.show()
                sock.shutdown()
	end
 
end

//封装SMTP协议对象
define:class,SMTP
public:	
    define:string,serverip
        
	define:function,sendmail,from,to,subject,data
		define:SMTPSESSION,smtpsession
                smtpsession.serveraddr.set(ip,serverip)
                smtpsession.serveraddr.set(port,"25")
                smtpsession.smtp_connect()
                smtpsession.smtp_sayhello()
				#这里假设smtp服务器不需要身份认证
                smtpsession.smtp_tell_sender(from)
                smtpsession.smtp_tell_receipt(to)
                smtpsession.smtp_start_data()
                smtpsession.smtp_send_body(subject,data)
                smtpsession.smtp_close()
    end
	define:function,setserveraddress,sip
		serverip = sip
	end
end

发送邮件

smtp.scp

#scp
#scpeng
import,"E:\\script\\libsmtp.scp"
define:function,main
	define:string,f,"a@test.com" //发送者
        define:string,t,"b@test.com" //接收人
        define:string,s,"hello" //主题
        define:string,d,"hello b!" //正文
        define:SMTP,smtp //创建SMTP对象
	smtp.setserveraddress("192.168.1.33") //指定邮件服务器地址
        smtp.sendmail(f,t,s,d) //发送邮件
end

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值