| 在本教程中,您将使用 Sun Java Studio Creator 集成开发环境 (integrated development environment, IDE) 创建一个 Web 应用程序,用户可以使用该应用程序将意见发送到预定义的电子邮件地址。 |
|
目录
|
![[spacer]](/im/a.gif) |
 |
设计应用程序
- 创建一个 Web 应用程序项目,并将其命名为
EmailProject。
图 1 显示了采用以下步骤创建的页面。
图 1:电子邮件项目的设计布局 |
- 将“文本区域”组件从组件面板的“基本”类别拖动到页面上,然后拖动“文本区域”的边框以将其放大。
- 右键单击“文本区域”,然后从弹出式菜单中选择“设置初始焦点”。
此操作可以确保在显示页面时文本区域处于焦点位置,从而使得用户可以直接开始键入内容。
- 将“标签”组件拖动到页面上,并将其放置在“文本区域”组件上方。将标签的 text 属性设置为
Please enter your comments below。
- 将标签与“文本区域”建立连接。选择标签,按住 Ctrl+Shift 组合键,然后拖动一条直线到“文本区域”组件。
此操作会将标签的 for 属性设置为 textArea1。
- 将一个“按钮”组件拖放到页面上。将按钮的 text 设置为
Send Us Your Comments。
- 在“属性”窗口中,将按钮的
id 属性设置为 cmdSend。
添加用于发送电子邮件的代码
- 在可视设计器中,双击 "Send Us Your Comments" 按钮以查看该按钮的 Java 代码。
- 单击组件面板中的“代码片段”标签,然后展开“Web 应用程序函数”节点。
- 将“发送电子邮件”代码片段拖动到
cmdSend_action 方法中,并将其放在紧邻 return null 语句之前的位置。
- 在对话框中,键入收件人和发件人的电子邮件地址。输入用于发送电子邮件的 SMTP 邮件服务器名称。如果您对要输入的内容没有把握,请尝试使用自己的电子邮件地址,并使用您的电子邮件程序中的 SMTP 邮件服务器设置。如有必要,请在邮件服务器设置中包含端口号。下图显示了一个示例。
图 2:用于设置发送电子邮件代码的参数的对话框 |
- 单击“确定”。
“发送电子邮件”代码片段即被添加到 cmdSend_action 方法中。代码包含了您在对话框中输入的值(在下面的样例代码中以粗体显示)。按 Ctrl+Shift+F 组合键重新设置代码格式。
| 代码样例 1:发送邮件代码片段 |
public String cmdSend_action() {
// Send Email
// This clip can be used in a button action
// method to send an e-mail via SMTP
// (if no authentication is required from the mailserver)
// TODO: Create a Text Area component on the page and
// a Button, place this code in the Button's action method
// TODO: set the from, to addresses and the mail server
String from = "sender-email@somecompany.com"; // from address
String to = "receive-comments@yourcompany.com"; // to address
String mailserver = "your-SMTP-mail-server@yourcompany.com";
// please note that if your mail server requires authentication,
// this code may not work
try {
sun.net.smtp.SmtpClient client = new sun.net.smtp.SmtpClient( mailserver );
client.from(from);
client.to(to);
java.io.PrintStream message = client.startMessage();
message.println("To: " + to);
// TODO: set the subject line
message.println("Subject: Customer Comments");
// TODO: set the body of the message
message.println(getTextArea1().getValue().toString());
client.closeServer();
} catch (java.io.IOException ex) {
// in the case of an exception, print a message to the output log
log("ERROR SENDING EMAIL:"+ex);
}
return null;
} |
- 将下面以粗体显示的代码添加到
cmdSend_action 方法中,使其位于 client.closeServer 语句之后。
| 代码样例 2:发送意见 Java 代码 |
// TODO: set the body of the message
message.println(getTextArea1().getValue().toString());
client.closeServer();
textArea1.setText("Your comments have been submitted.");
|
- 要发送本地化的邮件,请参见执行更多操作:发送本地化的邮件中对
cmdSend_action 方法进行的其他更改。
运行并测试应用程序
- 部署并运行该应用程序。
- 键入一些意见,然后单击 "Send Us Your Comments" 按钮。
下图显示了结果。
图 3:电子邮件项目:输出 |
执行更多操作:发送本地化的邮件
要发送本地化的邮件,必须对 cmdSend_action() 方法作如下更改:
- 为邮件添加相应的头标
- 将邮件正文的编码更改为适合您的语言环境。例如,日语的语言环境为 ISO-2022-JP
以下样例显示了将邮件本地化为日语时,需要添加到 cmdSend_action() 方法中的代码。请将代码放在紧邻 client.closeServer 语句之前的位置。
| 代码样例 3:用于发送日语本地化邮件的代码 |
public String cmdSend_action() {
...
// Add correct headers to the message
message.println("Content-type: text/plain; charset=iso-2022-jp");
message.println("Content-language: ja");
message.println("Content-transfer-encoding: 7bit");
message.println("");
// Encode the message body correctly
String mesg = getTextArea1().getText().toString() + "\r\n";
Charset charset = Charset.forName("ISO2022JP");
CharsetEncoder encoder = charset.newEncoder();
CharBuffer charBuff = CharBuffer.wrap(mesg.toCharArray());
ByteBuffer byteBuff = encoder.encode(charBuff);
String newMesg = new String(byteBuff.array());
message.println(newMesg);
client.closeServer();
...
}
|
如果 Java 编辑器因 IDE 无法解析符号而显示错误,请使用 Java 编辑器的“修复导入”功能来解决该问题。在 Java 编辑器中单击鼠标右键,然后从弹出式菜单中选择“修复导入”。“修复导入”功能会将下列语句添加到 imports 块中:
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
另请参见:
更多的开发者资源:
有关为开发者提供的更多教程、文章、提示、论坛、更新和专家建议,请访问 Sun Developer Network (SDN) 上的 Java Studio Creator 开发者资源,网址为 http://gceclub.sun.com.cn/prodtech/javatools/jscreator/。
此页的最新修改时间:2006 年 4 月 27 日
|