纯as发送email(Flex)

本文介绍了一个使用ActionScript (AS) 编写的邮件发送实用类,该类通过Socket连接到SMTP服务器并实现了邮件发送的基本流程。包括连接、认证、设置发件人与收件人、发送邮件内容等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  近来在做邮件项目时候,我发现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,ConnectionHa ndler); socket.addEventListener(Event.CLOSE,CloseHandler); socket.addEventListener(ProgressEvent.SOCKET_DATA, ReceiveHandler); socket.addEventListener(SecurityErrorEvent.SECURIT Y_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: "); sendMessage("RCPT TO: "); 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(); } } } 调用类 width="100%"> 这个类发送还有有错误,安全策略问题和容错问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值