续上:
---------------------------------------
class NewMail {  private MimeMessage mimeMsg; //MIME邮件对象  private Session session; //邮件会话对象 
private Properties props; //系统属性 
private boolean needAuth = false; //smtp是否需要认证  private String username = ""; //smtp认证用户名和密码 
private String password = ""; private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象 
 
public NewMail() { 
setSmtpHost("smtp.163.com");// 指定邮件服务器
createMimeMessage(); 
}  public NewMail(String smtp){ 
setSmtpHost(smtp); 
createMimeMessage(); 
}  public void setSmtpHost(String hostName) { 
System.out.println("设置系统属性:mail.smtp.host = "+hostName); 
if(props == null)props = System.getProperties(); //获得系统属性对象  props.put("mail.smtp.host",hostName); //设置SMTP主机 

public boolean createMimeMessage() 

try{ 
System.out.println("准备获取邮件会话对象!"); 
session = Session.getDefaultInstance(props,null); //获得邮件会话对象 

catch(Exception e){ 
System.err.println("获取邮件会话对象时发生错误!"+e); 
return false; 
}  System.out.println("准备创建MIME邮件对象!"); 
try{ 
mimeMsg = new MimeMessage(session); //创建MIME邮件对象 
mp = new MimeMultipart(); 
return true; 

catch(Exception e){ 
System.err.println("创建MIME邮件对象失败!"+e); 
return false; 

}  // 设置是否需要认证
public void setNeedAuth(boolean need) { 
System.out.println("设置smtp身份认证:mail.smtp.auth = "+need); 
if(props == null)  props = System.getProperties(); 
if(need){ 
props.put("mail.smtp.auth","true"); 
}
else{ 
props.put("mail.smtp.auth","false"); 


// 设置 用户名 和 密码
public void setNamePass(String name,String pass) { 
username = name; 
password = pass; 

public boolean setSubject(String mailSubject) { 
System.out.println("设置邮件主题!"); 
try{ 
mimeMsg.setSubject(mailSubject); 
return true; 

catch(Exception e) { 
System.err.println("设置邮件主题发生错误!"); 
return false; 

}  /*
 邮件正文
*/ 
public boolean setBody(String mailBody) { 
try{ 
BodyPart bp = new MimeBodyPart(); 
bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=gb2312>"+mailBody,"text/html;charset=GB2312"); 
mp.addBodyPart(bp); 
return true; 

catch(Exception e){ 
System.err.println("设置邮件正文时发生错误!"+e); 
return false; 

}  public boolean addFileAffix(String filename) { 
System.out.println("增加邮件附件:"+filename);  try{ 
BodyPart bp = new MimeBodyPart(); 
FileDataSource fileds = new FileDataSource(filename); 
bp.setDataHandler(new DataHandler(fileds)); 
bp.setFileName(fileds.getName()); 
mp.addBodyPart(bp); 
return true; 

catch(Exception e){ 
System.err.println("增加邮件附件:"+filename+"发生错误!"+e); 
return false; 


public boolean setFrom(String from) { 
System.out.println("设置发信人!"); 
try{ 
mimeMsg.setFrom(new InternetAddress(from)); //设置发信人 
return true; 

catch(Exception e){
return false; 

}  public boolean setTo(String to){ 
if(to == null)  return false; 
try{ 
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to)); 
return true; 

catch(Exception e){
return false; 
}  }  public boolean setCopyTo(String copyto) { 
if(copyto == null)return false; 
try{ 
mimeMsg.setRecipients(Message.RecipientType.CC,(Address[])InternetAddress.parse(copyto)); 
return true; 

catch(Exception e){
return false; 


 
public boolean sendout() { 
try{ 
mimeMsg.setContent(mp); 
mimeMsg.saveChanges(); 
System.out.println("正在发送邮件....");
Session mailSession = Session.getInstance(props,null); 
//Session mailSession = Session.getPasswordAuthentication(myurlname);
Transport transport = mailSession.getTransport("smtp");
transport.connect((String)props.get("mail.smtp.host"),username,password); 
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO)); 
//transport.send(mimeMsg); 
System.out.println("发送邮件成功!"); 
transport.close();  return true; 

catch(Exception e){ 
System.err.println("邮件发送失败!"+e); 
return false; 



------------------------------
我的程序添加附件需要在程序中加入(因为不知道如何做到像其他网站提供的那种发附件时浏览文件夹的按钮)
要想发送附件须将send()方法中的 发送附件的那个语句前的注释去掉。
public void send() { 
        String smtp = smtpTF.getText().trim();
if (smtp.equals(""))
{
smtp = "smtp.163.com";
}
NewMail mail = new NewMail(smtp);  // 指定邮件服务器
mail.setNeedAuth(true);  //设置需要验证 String mailbody = msg.getText();
if(mail.setSubject(subject.getText().trim()) == false) return; 
if(mail.setTo(recp.getText().trim()) == false) return;  // 填上 邮件接受人的邮件地址
if(mail.setFrom(userName.getText().trim()) == false) return; // 填上 发送者的邮件地址
//if(mail.addFileAffix("d:\\test.txt") == false) return;   //增加  附件
if(mail.setBody(mailbody) == false) return;
StringTokenizer tempName=new StringTokenizer(userName.getText().trim(),"@");
mail.setNamePass(tempName.nextToken(),passWord.getText()); //输在这里输入 你邮件的 用户名和密码 以便用户验证
if(mail.sendout() == false) return;

}