本文主要介绍和实现怎么使用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
Flex与Java集成发送Email
本文介绍如何使用Flex和Java实现电子邮件的发送功能。通过Flex收集用户输入,并利用BlazeDS将数据传递给Java后端进行邮件发送。文章提供了一个简单的示例,包括Flex前端表单的设计和Java后端邮件发送的实现。

被折叠的 条评论
为什么被折叠?



