»搜索提示
 
从 Web 应用程序发送电子邮件
2006 年 4 月 [修订号:V2-4]  
在本教程中,您将使用 Sun Java Studio Creator 集成开发环境 (integrated development environment, IDE) 创建一个 Web 应用程序,用户可以使用该应用程序将意见发送到预定义的电子邮件地址。
 
目录
 
设计应用程序
添加用于发送电子邮件的代码
运行并测试应用程序
执行更多操作:发送本地化的邮件
[spacer] 此页上的内容适用于 Sun Java Studio Creator 2
 

设计应用程序

  1. 创建一个 Web 应用程序项目,并将其命名为 EmailProject

    图 1 显示了采用以下步骤创建的页面。
     
    图 1:电子邮件项目的设计布局
    图 1:电子邮件项目的设计布局
     
  2. 将“文本区域”组件从组件面板的“基本”类别拖动到页面上,然后拖动“文本区域”的边框以将其放大。

  3. 右键单击“文本区域”,然后从弹出式菜单中选择“设置初始焦点”。

    此操作可以确保在显示页面时文本区域处于焦点位置,从而使得用户可以直接开始键入内容。

  4. 将“标签”组件拖动到页面上,并将其放置在“文本区域”组件上方。将标签的 text 属性设置为 Please enter your comments below

  5. 将标签与“文本区域”建立连接。选择标签,按住 Ctrl+Shift 组合键,然后拖动一条直线到“文本区域”组件。

    此操作会将标签的 for 属性设置为 textArea1。

  6. 将一个“按钮”组件拖放到页面上。将按钮的 text 设置为 Send Us Your Comments

  7. 在“属性”窗口中,将按钮的 id 属性设置为 cmdSend
 

添加用于发送电子邮件的代码

  1. 在可视设计器中,双击 "Send Us Your Comments" 按钮以查看该按钮的 Java 代码。

  2. 单击组件面板中的“代码片段”标签,然后展开“Web 应用程序函数”节点。

  3. 将“发送电子邮件”代码片段拖动到 cmdSend_action 方法中,并将其放在紧邻 return null 语句之前的位置。

  4. 在对话框中,键入收件人和发件人的电子邮件地址。输入用于发送电子邮件的 SMTP 邮件服务器名称。如果您对要输入的内容没有把握,请尝试使用自己的电子邮件地址,并使用您的电子邮件程序中的 SMTP 邮件服务器设置。如有必要,请在邮件服务器设置中包含端口号。下图显示了一个示例。
     
    图 2:用于设置发送电子邮件代码的参数的对话框
    图 2:用于设置发送电子邮件代码的参数的对话框
     
  5. 单击“确定”。

    “发送电子邮件”代码片段即被添加到 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;
        }
     
  6. 将下面以粗体显示的代码添加到 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.");
    
     
  7. 要发送本地化的邮件,请参见执行更多操作:发送本地化的邮件中对 cmdSend_action 方法进行的其他更改。
 

运行并测试应用程序

  1. 部署并运行该应用程序。

  2. 键入一些意见,然后单击 "Send Us Your Comments" 按钮。

    下图显示了结果。
     
    图 3:电子邮件项目:输出
    图 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 日