纯as发送email(Flex)

   近来在做邮件项目时候,我发现as有那么强大的逻辑能力,为什么不用来发送email。发送email时候,我们还可以把压力留给用户,留在前台,那么后台可以减负,在一些需要大量发送信息的系统中,无疑有一定的用处的。

package com.shine.framework.mail.util
{
	import flash.events.Event;
	import flash.events.ProgressEvent;
	import flash.events.SecurityErrorEvent;
	import flash.net.Socket;
	import flash.utils.ByteArray;
	
	import mx.controls.Alert; 
    
	public class MailUtil
	{
		private var socket:Socket;  
        private var smtp:String;  
        private var _user:String;
        private var _pwd:String;
        private var _mailFrom:String;
        private var _mailTo:String;
        private var _subject:String;
        private var _content:String;
        private var num:int=99;
        
        
		public function MailUtil(smtp:String)
		{
			initSocket(smtp);  
		}
		
		public function initSocket(smtp:String):void  
        {  
            this.smtp = smtp;  
            if(socket==null || !socket.connected)  
            {  
                socket = new Socket();  
                socket.connect(smtp,25);  
                socket.addEventListener(Event.CONNECT,ConnectionHandler);  
                socket.addEventListener(Event.CLOSE,CloseHandler);  
                socket.addEventListener(ProgressEvent.SOCKET_DATA,ReceiveHandler);  
                socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,ErrorHandler);  
            }  
        }  
          
        private function ErrorHandler(evt:SecurityErrorEvent):void  
        {  
            Alert.show("error!");
            Alert.show(String(evt.text));
        }  
          
        public function ConnectionHandler(evt:Event):void  
        {  
            Alert.show("链接成功");
        }  
          
        public function CloseHandler(evt:Event):void  
        {   
            Alert.show("已经从服务器断开");
        }  
          
        private function ReceiveHandler(evt:Event):void  
        {  
            var msg:String = "";  
            while(socket.bytesAvailable)  
            {  
                msg += socket.readMultiByte(socket.bytesAvailable,"utf8");  
            }  
            //Alert.show(msg);
            if(num==0){
            	sendUserName(_user);
            	num++;
            }else if(num==1){
            	sendPassword(_pwd);
            	num++;
            }else if(num==2){
            	setFromandTo(_mailFrom,_mailTo);
            	num++;
            }else if(num==3){
            	sendContent(_subject,_content);
            	num++;
            }else if(num==4){
            	Alert.show("发送成功");
            	num++;
            }
        }  
          
        public function Send(user:String, pwd:String, mailFrom:String, mailTo:String,subject:String,content:String):void  
        {  
            if(socket==null || !socket.connected)  
            {  
                initSocket(this.smtp);  
            }  
            
            this._user=user;
            this._pwd=pwd;
            this._mailFrom=mailFrom;
            this._mailTo=mailTo;
            this._subject=subject;
            this._content=content;
            
            sendHello();
            num=0;
        } 
        
        private function sendHello():void{
        	sendMessage("HELO mail"); 
            sendMessage("AUTH LOGIN"); 	
        } 
        
        private function sendUserName(user:String):void{
        	sendMessage(Base64.encode(user));
        }
        
        private function sendPassword(pwd:String):void{
        	sendMessage(Base64.encode(pwd));
        }
        
        private function setFromandTo(mailFrom:String,mailTo:String):void{
        	sendMessage("MAIL FROM: <"+mailFrom+">");  
            sendMessage("RCPT TO: <"+mailTo+">");  
            sendMessage("DATA");
        }
        
        private function sendContent(subject:String,content:String):void{
        	sendMessage("Content-Type: text/html");  
            sendMessage("Subject: "+subject);  
            sendMessage("");  
            sendMessage("");  
            sendMessage(content);  
            sendMessage(".");  
        }
        
        internal function sendMessage(msg:String):void  
        {  
            var message:ByteArray = new ByteArray();  
            message.writeUTFBytes(msg+"/r/n");  
            socket.writeBytes(message);  
            socket.flush();  
        }  
	}
}

调用类

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="{init()}">
	<mx:Script>
		<!--[CDATA[
			import com.shine.framework.mail.util.MailUtil;
			import com.shine.framework.mail.util.Mail; 
            import com.shine.framework.mail.util.Base64;  
            import mx.controls.Alert;  
              
            private var xmlSocket:Socket;  
            private var m:MailUtil;  
              
            private function init():void  
            {  
                m = new MailUtil("smtp.163.com");  
            }  
              
            public function login():void  
            {  
                m.Send("arjick@163.com","password","arjick@163.com","348700730@qq.com","测试4","测试");  
            }  
		]]-->
	</mx:Script>
	<mx:VBox width="100%">
		<mx:Button id="testEmail" label="测试" click="{login()}" />
	</mx:VBox>
</mx:Application>

这个类发送还有有错误,安全策略问题和容错问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值