24小时热门版块排行榜    

查看: 136  |  回复: 1
当前主题已经存档。

bb135789

[交流] 【求助】java邮件发送软件开发的问题

最近在学习JAVA,在学习邮件开发时遇到了问题.运行程序后,出现N个邮件发送界面,且设置完成后,发送失败.小弟找不到原因,望哪位高手帮忙解答。小弟奉上所有金币。以下为所有程序:

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;


public class UseSMTPMail extends JFrame {
   JButton sendButton=new JButton("发信";
   JLabel hostLabel=new JLabel("SMTP服务器";
   JLabel usernameLabel=new JLabel("用户名:";
   JLabel passwordLabel=new JLabel("密码:";
   JLabel fromLabel=new JLabel("发件人:";
   JLabel toLabel=new JLabel("收件人:";
   JLabel subjectLabel=new JLabel("主题:";
   JTextField usernameField=new JTextField(40);
   JPasswordField passwordField=new JPasswordField(40);
   JTextField hostField=new JTextField(40);
   JTextField fromField=new JTextField(40);
   JTextField toField=new JTextField(40);
   JTextField subjectField=new JTextField(40);
   JTextArea message=new JTextArea(10,10);
   JScrollPane jsp=new JScrollPane(message);
   public UseSMTPMail(){
     Container contentPane=this.getContentPane();
     JPanel labels=new JPanel(new GridLayout(6,1));
     JPanel fields=new JPanel(new GridLayout(6,1));
     labels.add(hostLabel);fields.add(hostField);
     labels.add(usernameLabel);fields.add(usernameField);
     labels.add(passwordLabel);fields.add(passwordField);
     labels.add(toLabel);fields.add(toField);
     labels.add(fromLabel);fields.add(toField);
     labels.add(subjectLabel);fields.add(subjectField);
     Box north=Box.createHorizontalBox();
     north.add(labels);north.add(fields);
     contentPane.add(north,"North";contentPane.add(jsp,"Center";
     JPanel south=new JPanel();
     south.add(sendButton);
     sendButton.addActionListener(new SendMail());
     contentPane.add(south,"South";
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     setTitle("发送电子邮件";
     setSize(400,400);
     setVisible(true);
   }
   class SendMail implements ActionListener
   {
     public void actionPerformed(ActionEvent evt){
       try{
         Properties props=new Properties();
         props.put("mail.smtp.auth","true";
         Session session=Session.getDefaultInstance(props,new Authenticator(){
           public PasswordAuthentication getPasswordAuthentication(){
             return new PasswordAuthentication(usernameField.getText(),
             passwordField.getText());
          }
  });
  final Message msg=new MimeMessage(session);
  Address to=new InternetAddress(toField.getText());
  Address from=new InternetAddress(fromField.getText());
  msg.setFrom(from);
  msg.setRecipient(Message.RecipientType.TO,to);
  msg.setSentDate(new Date());
  msg.setSubject(transferChinese(subjectField.getText()));
  msg.setContent(message.getText(),"GBK";
  Runnable r=new Runnable(){
    public void run(){
      try{
      Transport.send(msg);
      }catch(Exception e){e.printStackTrace();}
    }
  };
  Thread t=new Thread(r);
  t.start();
  message.setText("";
  }catch(Exception e){e.printStackTrace();}
  }
   }
public String transferChinese(String strText){
try{
    strText=MimeUtility.encodeText(new String(strText.getBytes(),"GB2312","GB2312","B";
}catch(Exception e){e.printStackTrace();}
return strText;
}
public static void main(String[] args){
Font font=new Font("JFrame",Font.PLAIN,14);
    Enumeration keys=UIManager.getLookAndFeelDefaults().keys();
    while(keys.hasMoreElements()){
    Object key=keys.nextElement();
    if(UIManager.get(key)instanceof Font)UIManager.put(key,font);
    UseSMTPMail smail=new UseSMTPMail();
    }
}
}

召唤高手,高手快来啊~~~~~
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaoxiaoqi

木虫 (著名写手)

★ ★
波不动(金币+2,VIP+0):感谢参与应助! 12-8 19:16
可以参照孙卫琴 的 JAVA网络编程
上面的解说还是比较详细的。
2楼2009-12-08 19:11:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 bb135789 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见