封装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