`
yexin218
  • 浏览: 970766 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Flex实现简单的Email发送

    博客分类:
  • Flex
阅读更多

 

  本文主要介绍和实现怎么使用Flex-java来实现Email的发送。这尤其是在做用户回馈的时候需要用到。当然这实现的只要是一个简单的例子。正在执行发送Email功能还是使用java来实现的,Flex只不过提供了数据的输入和封装。使用的原理很简单:
Flex-Form <--接受用户输入
   ||
   ||使用RemoteObject方式就用户输入的数据封装成json格式传递到后台java bean
   ||
Java Bean()--->执行真正的Email发送----->回馈消息---->Flex-Form
使用的界面如下图:
简单实现了用户输入的验证以及Email验证(更详细的可以参考Adobe数据验证 )
以下是实现的代码:
1.后台java处理:【你需要两个jar: mail.jar and activation.jar
package mail;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class SendFlexMail {
     private static final String SMTP_HOST_NAME = "smtp.163.com";
     private static final String SMTP_AUTH_USER = "feixianryexin";
     private static final String SMTP_AUTH_PWD = "yourpassword";

     // Add List of Email address to who email needs to be sent to

     private String[] emailList;
      public String sendFlexMail(String flexMail){
         String result="";
         JSONArray flexJavaMail = JSONArray.fromObject(flexMail);
         emailList = new String[2];
         JSONObject mailJsonObj = JSONObject.fromObject(flexJavaMail.getString(0));
         emailList[0] = mailJsonObj.getString("senderEmail");//send mail to yourself

         emailList[1] = mailJsonObj.getString("sendToEmail");
         String senderName = mailJsonObj.getString("senderName");
         String sendToName = mailJsonObj.getString("sendToName");
         String senderMail = mailJsonObj.getString("senderEmail");
         String emailMessage = mailJsonObj.getString("emailMessage");
         String emailTopic = sendToName+":A Letter From Your Friend "+senderName;
         try{
         postMail(emailList,emailTopic, emailMessage,senderMail);
         result="Congratulations!";
         }catch (MessagingException e){
             e.printStackTrace();
         }
         return result;
      }
     public void postMail( String recipients[ ], String subject,
     String message , String from) throws MessagingException
     {
     boolean debug = false;

     //Set the host smtp address

     Properties props = new Properties();
     props.put("mail.smtp.host", SMTP_HOST_NAME);
     props.put("mail.smtp.auth", "true");

     Authenticator auth = new SMTPAuthenticator();
     Session session = Session.getDefaultInstance(props, auth);

     session.setDebug(debug);

     // create a message

     Message msg = new MimeMessage(session);

     // set the from and to address

     InternetAddress addressFrom = new InternetAddress(from);
     msg.setFrom(addressFrom);

     InternetAddress[] addressTo = new InternetAddress[recipients.length];
     for (int i = 0; i < recipients.length; i++)
     {
     addressTo[i] = new InternetAddress(recipients[i]);
     }
     msg.setRecipients(Message.RecipientType.TO, addressTo);


     // Setting the Subject and Content Type

     msg.setSubject(subject);
     msg.setContent(message, "text/plain");
     Transport.send(msg);
     }


    /**
    * SimpleAuthenticator is used to do simple authentication
    * when the SMTP server requires it.
    */
    private class SMTPAuthenticator extends javax.mail.Authenticator
    {

     public PasswordAuthentication getPasswordAuthentication()
     {
     String username = SMTP_AUTH_USER;
     String password = SMTP_AUTH_PWD;
     return new PasswordAuthentication(username, password);
     }
    }

}

 2.前台的Flex-Form:
  
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" viewSourceURL="srcview/index.html">

<mx:Script>
    <![CDATA[
        import mx.controls.Alert;
        import mx.controls.TextInput;
        import mx.rpc.events.ResultEvent 
        import mx.collections.ArrayCollection;
        import com.adobe.serialization.json.JSON;
        
        private var flexMail:ArrayCollection;
        public function sendMailAction( ):void
        {
         
            
           flexMail = new ArrayCollection();
           var mailObj:Object = new Object();
           mailObj.senderName = senderName.text;
           mailObj.senderEmail =senderEmail.text;
           mailObj.sendToName = sendToName.text;
           mailObj.sendToEmail = sendToEmail.text;
           mailObj.emailMessage =emailMessage.text;
           
           //check email valid

           if(senderName.text !="" && senderEmail.text!=""&&sendToName.text!=""&& sendToEmail.text!=""&& emailMessage.text!=""){
                 if(senderEmail.text.indexOf("@")==-1 || sendToEmail.text.indexOf("@")==-1){
                   labState.text="Email格式不正确哦!";
                 }else{
                     flexMail.addItem(mailObj); 
                     var emailString:String = JSON.encode(flexMail.toArray());
                     sendMail.sendFlexMail(emailString)
                     labState.text="正在发送请稍候...";
           }
           }else{
                labState.text="请输入所有的选项!";
           }

        } 
        
        public function sendFlexMailResult(event:ResultEvent):void
        {
            Alert.show(event.result as String);
            senderName.text="";
            senderEmail.text="";
            sendToName.text="";
            sendToEmail.text="";
            emailMessage.text="";
            labState.text="恭喜,成功发送邮件!";
        }
        
    ]]>
</mx:Script>

<mx:Style source="mailFormCSS.css" />

<mx:RemoteObject id="sendMail" destination="sendFlexMail" showBusyCursor="true" result="sendFlexMailResult(event)" />
    <mx:Panel width="448" height="474" >
        <mx:Text width="100%" height="29" text="Email Form" styleName="header"/>
        <mx:Text text="Flex3 / BlazeDS / Java" styleName="subHeader" />
        <mx:HRule width="100%"/>
        
         <mx:Form id="emailForm" width="100%" >
         
             <mx:FormItem label="Your Name:" horizontalAlign="left" width="100%">
                <mx:TextInput id="senderName" width="100%"/>
            </mx:FormItem>
            
            <mx:FormItem label="Your E-mail:" width="100%">
                <mx:TextInput id="senderEmail" width="100%"/>
            </mx:FormItem>
         
            <mx:FormItem label="Friends Name:" horizontalAlign="left" width="100%">
                <mx:TextInput id="sendToName" width="100%"/>
            </mx:FormItem>
    
            <mx:FormItem label="Friends E-mail:" width="100%">
                <mx:TextInput id="sendToEmail" width="100%"/>
            </mx:FormItem>
            
            <mx:FormItem label="Message" horizontalAlign="left" width="100%">
                <mx:TextArea id="emailMessage" width="100%" height="100"/>
            </mx:FormItem>
            
             <mx:FormItem width="100%" height="33">
                <mx:Spacer width="200" />
                <mx:Button id="submitBtn" label="Submit" click="sendMailAction()"/>
             </mx:FormItem>
        </mx:Form>
        
     <mx:HBox styleName="cbStyle" width="414">
      <mx:Label id="labState" width="393" fontSize="14" color="#FE0113"/>
           <!-- <mx:CheckBox label="Check to send a copy to yourself" id="cb"/>-->
        </mx:HBox>
        
        <mx:HRule width="100%" height="0"/>
        
        <mx:Label styleName="footer">
               <mx:htmlText><![CDATA[<a href="http://yexin218.cublog.cn" target="_blank" ><b>一路风尘制作</b></a>]]></mx:htmlText>
           </mx:Label>
    
    </mx:Panel>
    
</mx:Application>
 

数据传递使用的是BlazeDS.关于BlazeDS参考:使用BlazeDS实现Java和Flex通信

附件下载【包含Flex-plugin的eclipse工程文件以及源码】:DownLoad

5
1
分享到:
评论
2 楼 hacker47 2008-07-13  
FLEX几乎只是客户端的解决方案,AIR中有对数据库操作的相关类库,可以目前支持差强人意,据我所知,FLEX自身还不能发送EMAIL.
1 楼 yexin218 2008-06-16  
我一直在想,Flex本身有没有发送Email的功能呢?知道的朋友,不妨相告。谢谢

相关推荐

    51CTO下载-Flex实现简单的Email发送

    首先,要实现Email发送,我们需要理解Flex中的网络通信机制。Flex主要通过HTTPService、WebService或Socket等组件与服务器进行数据交换。在这个场景中,我们可能会使用SMTP(Simple Mail Transfer Protocol)服务,...

    FlexBuilder

    5. `Email.txt`:这可能是一个简单的文本文件,包含邮件发送的示例代码或者是一些关键配置信息,如SMTP服务器的设置。 总的来说,这个压缩包是学习和实践FlexBuilder中使用AS3发送电子邮件的好资源。通过阅读和实践...

    FLEX与C#、PHP、JAVA语言通信全面解析

    以下是一个简单的示例: - FLEX端: - 使用HTTPService对象创建一个请求,设置URL为C#服务端的地址,结果格式为E4X,方法为POST,并设置contentType为"application/xml"。 - 发送XML数据到C#端,然后添加一个...

    Flex 2和PHP交互.doc

    在Flex 2与PHP交互的过程中,主要通过HTTPService组件来实现数据的发送和接收。HTTPService允许Flex应用向服务器发送HTTP请求,并接收响应的数据。在本例中,`flex.php`是一个简单的PHP脚本,它接收并处理来自Flex...

    flex send mail by as

    在本场景中,"flex send mail by as" 指的是使用Flex和ActionScript(AS)来实现邮件发送功能。ActionScript是Flex中用于交互逻辑和控制的主要脚本语言,类似JavaScript,但它是面向对象的。 SMTP(Simple Mail ...

    利用Java并配置Foxmail发送邮箱(携带附件)

    发送附件是通过`Multipart`对象实现的,它允许我们组合多个部分,包括文本和二进制文件。首先,创建一个`MimeBodyPart`对象来表示附件,然后将其添加到`Multipart`: ```java MimeBodyPart attachmentPart = new ...

    FLEX通过JSP与数据库交互

    为了解决FLEX无法直接与数据库通信的问题,可以采用以下方法:通过HTTPService组件向JSP页面发送请求,由JSP页面处理这些请求并与数据库进行交互。这种方法不仅解决了跨平台问题,还能够利用Java强大的后端处理能力...

    FLex连接数据

    - Flex应用程序通过Flash Remoting向服务器端的数据服务发送请求。 - 服务器端的数据服务接收请求,与数据库进行交互,获取所需数据。 - 数据服务处理数据并返回结果给Flex应用程序。 - Flex应用程序根据返回的...

    flex与j2ee(jsp sevlet)进入交互.doc

    MXML 文件定义了 Flex 应用的界面和行为,包括一个表单用于输入员工信息(如 Name, Email, Phone, ZipCode),以及两个按钮(Submit 和 Reset)。`HTTPService` 组件被用来发送 HTTP 请求到服务器,这里的 URL 设置...

    Flex基础培训-5-[数据验证

    在Flex中,可以通过和等组件来实现带有数据验证的表单界面。例如,以下代码段表示了一个带有城市字段的表单项,其中"required=true"表示该字段是必填项,但这个属性只是在界面上显示一个星号,并不会进行数据格式的...

    RPC的实现

    ### RPC的实现 #### 1. 前言 远程过程调用(RPC,Remote Procedure Call)是一种协议,它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的程序,无需了解底层网络协议细节。RPC设计的目标是为开发者...

    jquery 留言板

    1. 提交表单:利用jQuery的`submit`事件,我们可以阻止表单的默认提交行为,并通过AJAX将数据发送到服务器。例如: ```javascript $("#msg-form").submit(function(event) { event.preventDefault(); var name = ...

    Flash builder 4.5学习-通过Java持久化FB数据-Java例程

    例如,我们可能有一个`User`实体类,其中包含`id`、`name`和`email`等属性。然后,我们可以通过`EntityManager`来执行CRUD(创建、读取、更新、删除)操作。 在Flash Builder中,我们创建一个新的ActionScript项目...

    CSS3网站用户登录设计代码.zip

    - **Flexbox布局**:使用`display: flex`和相关属性,可以轻松实现响应式和对齐布局,适应不同屏幕尺寸的登录表单。 - **Grid布局**:CSS3的`grid`布局可以创建二维网格,方便地调整登录界面的元素布局。 2. **...

    表单验证.rar

    例如,可以使用`display: flex`或`grid`来实现响应式布局,适应不同设备的屏幕尺寸。同时,还可以通过CSS伪类(如`:hover`, `:focus`, `:invalid`)来改变用户交互时表单元素的样式,提供视觉反馈。 `images`文件夹...

    中秋节静态HTML网页作业作品 大学生中秋网页设计制作成品 简单DIV CS网站.md

    - CSS中利用百分比单位和Flexbox布局实现自适应布局。 5. **网站结构组织:** - 使用`&lt;header&gt;`、`&lt;main&gt;`、`&lt;section&gt;`、`&lt;footer&gt;`等语义化标签来构建网页结构。 - 通过内部链接(`&lt;a&gt;`)连接不同的部分,提高...

    php extjs grid 装载数据

    {header: '邮箱', dataIndex: 'email', flex: 1} ], renderTo: Ext.getBody() }); ``` 这将创建一个带有三列的Grid,并将数据从Store填充到对应的列。 5. **添加分页功能** 如果数据量较大,可以添加分页...

Global site tag (gtag.js) - Google Analytics