• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>Flex>文章内容
  • Flex实现简单的Email发送
  • 来源:相濡以沫 作者:onlyzhangqin 2008-06-16 【


本文主要介绍和实现怎么使用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
Java代码 复制代码
  1. package mail;   
  2. import javax.mail.*;   
  3. import javax.mail.internet.*;   
  4. import java.util.*;   
  5. import net.sf.json.JSONArray;   
  6. import net.sf.json.JSONObject;   
  7.   
  8. public class SendFlexMail {   
  9.      private static final String SMTP_HOST_NAME = "smtp.163.com";   
  10.      private static final String SMTP_AUTH_USER = "feixianryexin";   
  11.      private static final String SMTP_AUTH_PWD = "yourpassword";   
  12.   
  13.      // Add List of Email address to who email needs to be sent to   
  14.   
  15.      private String[] emailList;   
  16.       public String sendFlexMail(String flexMail){   
  17.          String result="";   
  18.          JSONArray flexJavaMail = JSONArray.fromObject(flexMail);   
  19.          emailList = new String[2];   
  20.          JSONObject mailJsonObj = JSONObject.fromObject(flexJavaMail.getString(0));   
  21.          emailList[0] = mailJsonObj.getString("senderEmail");//send mail to yourself   
  22.   
  23.          emailList[1] = mailJsonObj.getString("sendToEmail");   
  24.          String senderName = mailJsonObj.getString("senderName");   
  25.          String sendToName = mailJsonObj.getString("sendToName");   
  26.          String senderMail = mailJsonObj.getString("senderEmail");   
  27.          String emailMessage = mailJsonObj.getString("emailMessage");   
  28.          String emailTopic = sendToName+":A Letter From Your Friend "+senderName;   
  29.          try{   
  30.          postMail(emailList,emailTopic, emailMessage,senderMail);   
  31.          result="Congratulations!";   
  32.          }catch (MessagingException e){   
  33.              e.printStackTrace();   
  34.          }   
  35.          return result;   
  36.       }   
  37.      public void postMail( String recipients[ ], String subject,   
  38.      String message , String from) throws MessagingException   
  39.      {   
  40.      boolean debug = false;   
  41.   
  42.      //Set the host smtp address   
  43.   
  44.      Properties props = new Properties();   
  45.      props.put("mail.smtp.host", SMTP_HOST_NAME);   
  46.      props.put("mail.smtp.auth""true");   
  47.   
  48.      Authenticator auth = new SMTPAuthenticator();   
  49.      Session session = Session.getDefaultInstance(props, auth);   
  50.   
  51.      session.setDebug(debug);   
  52.   
  53.      // create a message   
  54.   
  55.      Message msg = new MimeMessage(session);   
  56.   
  57.      // set the from and to address   
  58.   
  59.      InternetAddress addressFrom = new InternetAddress(from);   
  60.      msg.setFrom(addressFrom);   
  61.   
  62.      InternetAddress[] addressTo = new InternetAddress[recipients.length];   
  63.      for (int i = 0; i < recipients.length; i++)   
  64.      {   
  65.      addressTo[i] = new InternetAddress(recipients[i]);   
  66.      }   
  67.      msg.setRecipients(Message.RecipientType.TO, addressTo);   
  68.   
  69.   
  70.      // Setting the Subject and Content Type   
  71.   
  72.      msg.setSubject(subject);   
  73.      msg.setContent(message, "text/plain");   
  74.      Transport.send(msg);   
  75.      }   
  76.   
  77.   
  78.     /**  
  79.     * SimpleAuthenticator is used to do simple authentication  
  80.     * when the SMTP server requires it.  
  81.     */  
  82.     private class SMTPAuthenticator extends javax.mail.Authenticator   
  83.     {   
  84.   
  85.      public PasswordAuthentication getPasswordAuthentication()   
  86.      {   
  87.      String username = SMTP_AUTH_USER;   
  88.      String password = SMTP_AUTH_PWD;   
  89.      return new PasswordAuthentication(username, password);   
  90.      }   
  91.     }   
  92.   
  93. }  
 2.前台的Flex-Form:
  
Xml代码 复制代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" viewSourceURL="srcview/index.html">  
  3.   
  4. <mx:Script>  
  5.     <![CDATA[  
  6.         import mx.controls.Alert;  
  7.         import mx.controls.TextInput;  
  8.         import mx.rpc.events.ResultEvent   
  9.         import mx.collections.ArrayCollection;  
  10.         import com.adobe.serialization.json.JSON;  
  11.           
  12.         private var flexMail:ArrayCollection;  
  13.         public function sendMailAction( ):void  
  14.         {  
  15.            
  16.               
  17.            flexMail = new ArrayCollection();  
  18.            var mailObj:Object = new Object();  
  19.            mailObj.senderName = senderName.text;  
  20.            mailObj.senderEmail =senderEmail.text;  
  21.            mailObj.sendToName = sendToName.text;  
  22.            mailObj.sendToEmail = sendToEmail.text;  
  23.            mailObj.emailMessage =emailMessage.text;  
  24.              
  25.            //check email valid  
  26.  
  27.            if(senderName.text !="" && senderEmail.text!=""&&sendToName.text!=""&& sendToEmail.text!=""&& emailMessage.text!=""){  
  28.                  if(senderEmail.text.indexOf("@")==-1 || sendToEmail.text.indexOf("@")==-1){  
  29.                    labState.text="Email格式不正确哦!";  
  30.                  }else{  
  31.                      flexMail.addItem(mailObj);   
  32.                      var emailString:String = JSON.encode(flexMail.toArray());  
  33.                      sendMail.sendFlexMail(emailString)  
  34.                      labState.text="正在发送请稍候...";  
  35.            }  
  36.            }else{  
  37.                 labState.text="请输入所有的选项!";  
  38.            }  
  39.  
  40.         }   
  41.           
  42.         public function sendFlexMailResult(event:ResultEvent):void  
  43.         {  
  44.             Alert.show(event.result as String);  
  45.             senderName.text="";  
  46.             senderEmail.text="";  
  47.             sendToName.text="";  
  48.             sendToEmail.text="";  
  49.             emailMessage.text="";  
  50.             labState.text="恭喜,成功发送邮件!";  
  51.         }  
  52.           
  53.     ]]>  
  54. </mx:Script>  
  55.   
  56. <mx:Style source="mailFormCSS.css" />  
  57.   
  58. <mx:RemoteObject id="sendMail" destination="sendFlexMail" showBusyCursor="true" result="sendFlexMailResult(event)" />  
  59.     <mx:Panel width="448" height="474" >  
  60.         <mx:Text width="100%" height="29" text="Email Form" styleName="header"/>  
  61.         <mx:Text text="Flex3 / BlazeDS / Java" styleName="subHeader" />  
  62.         <mx:HRule width="100%"/>  
  63.            
  64.          <mx:Form id="emailForm" width="100%" >  
  65.             
  66.              <mx:FormItem label="Your Name:" horizontalAlign="left" width="100%">  
  67.                 <mx:TextInput id="senderName" width="100%"/>  
  68.             </mx:FormItem>  
  69.                
  70.             <mx:FormItem label="Your E-mail:" width="100%">  
  71.                 <mx:TextInput id="senderEmail" width="100%"/>  
  72.             </mx:FormItem>  
  73.             
  74.             <mx:FormItem label="Friends Name:" horizontalAlign="left" width="100%">  
  75.                 <mx:TextInput id="sendToName" width="100%"/>  
  76.             </mx:FormItem>  
  77.        
  78.             <mx:FormItem label="Friends E-mail:" width="100%">  
  79.                 <mx:TextInput id="sendToEmail" width="100%"/>  
  80.             </mx:FormItem>  
  81.                
  82.             <mx:FormItem label="Message" horizontalAlign="left" width="100%">  
  83.                 <mx:TextArea id="emailMessage" width="100%" height="100"/>  
  84.             </mx:FormItem>  
  85.                
  86.              <mx:FormItem width="100%" height="33">  
  87.                 <mx:Spacer width="200" />  
  88.                 <mx:Button id="submitBtn" label="Submit" click="sendMailAction()"/>  
  89.              </mx:FormItem>  
  90.         </mx:Form>  
  91.            
  92.      <mx:HBox styleName="cbStyle" width="414">  
  93.       <mx:Label id="labState" width="393" fontSize="14" color="#FE0113"/>  
  94.            <!-- <mx:CheckBox label="Check to send a copy to yourself" id="cb"/>-->  
  95.         </mx:HBox>  
  96.            
  97.         <mx:HRule width="100%" height="0"/>  
  98.            
  99.         <mx:Label styleName="footer">  
  100.                <mx:htmlText><![CDATA[<a href="http://yexin218.cublog.cn" target="_blank" ><b>一路风尘制作</b></a>]]></mx:htmlText>  
  101.            </mx:Label>  
  102.        
  103.     </mx:Panel>  
  104.        
  105. </mx:Application>  
 

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

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




上一篇:自定义Flex组件皮肤   下一篇:创建伸缩和拖拽的flex组件
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)