java发送mail

package  common.mail;

import  java.util. * ;
import  javax.activation. * ;
import  javax.mail. * ;
import  javax.mail.internet. * ;
import  common.mail.Mail.MailInfor.Accessory;

/**
 * classname Mail
 * action 用于发送mail,借住163的smtp服务器
 * 
@version 2007/7/26
 * 
*/

public   class  Mail  {

  
/**
   * 内部类MailInor包函了发送邮件需要的基本信息
   * 以属性方式需要对其进行配置
   * 
*/

  
class MailInfor {
    
/**
     * constructor 无参
     * action 对属性进行初始化
     * 
*/

    MailInfor() 
{
      setAccessory(
false);
    }


    
private String host = "smtp.163.com";
    
private String fromMail = "zhangliyang_good@163.com";
    
private List toMail;
    
private String userName = "zhangliyang_good";
    
private String password = "xtgmybjjmh";
    
private String subject;
    
private String content;
    
private boolean isDebug = false;
    
private boolean accessory;
    
private List accessorys;

    
public void setAccessorys(List accessList) {
      
this.accessorys = accessList;
    }


    
public List getAccessorys() {
      
return this.accessorys;
    }


    
public void setHost(String host) {
      
this.host = host;
    }


    
public void setFromMail(String fromMail) {
      
this.fromMail = fromMail;
    }


    
public void setToMail(List toMail) {
      
this.toMail = toMail;
    }


    
public void setUserName(String userName) {
      
this.userName = userName;
    }


    
public void setPassword(String password) {
      
this.password = password;
    }


    
public void setSubject(String subject) {
      
this.subject = subject;
    }


    
public void setContent(String content) {
      
this.content = content;
    }


    
public String getHost() {
      
return host;
    }


    
public String getFromMail() {
      
return fromMail;
    }


    
public List getToMail() {
      
return toMail;
    }


    
public String getUserName() {
      
return userName;
    }


    
public String getPassword() {
      
return password;
    }


    
public String getSubject() {
      
return subject;
    }


    
public String getContent() {
      
return content;
    }


    
public void setIsDebug(boolean isDebug) {
      
this.isDebug = isDebug;
    }


    
public boolean isIsDebug() {
      
return isDebug;
    }


    
public void setAccessory(boolean accessory) {
      
this.accessory = accessory;
    }


    
public boolean isAccessory() {
      
return accessory;
    }


    
/**
     * 内部类Accessory用于发送附件,包函了发送附件需要的信息
     * 以属性方式需要对其进行配置
     * 
*/

    
class Accessory {
      
private String fileUrl;
      
private String fileName;
      
public void setFileUrl(String fileUrl) {
        
this.fileUrl = fileUrl;
      }


      
public String getFileUrl() {
        
return this.fileUrl;
      }


      
public void setFileName(String fileName) {
        
this.fileName = fileName;
      }


      
public String getFileName() {
        
return this.fileName;
      }


    }

  }


  
public boolean sendMail(MailInfor infor) {
    Properties props 
= new Properties();
    props.put(
"mail.smtp.host", infor.getHost());
    props.put(
"mail.smtp.auth""true");
    Session session 
= Session.getDefaultInstance(props);

    
//是否在控制台输出日志信息
    session.setDebug(infor.isIsDebug());

    MimeMessage message 
= new MimeMessage(session);
    
try {
      message.setFrom(
new InternetAddress(infor.getFromMail()));
      List list 
= infor.getToMail();
      
if (list != null{
        Iterator iter 
= list.iterator();
        
while (iter.hasNext()) {
          message.addRecipient(Message.RecipientType.TO,
                               
new InternetAddress( (String) iter.next()));
        }

      }

      
else {
        
throw new NullPointerException("tomail is not null");
      }


      message.setSubject(infor.getSubject());
      MimeMultipart mm 
= new MimeMultipart();

      
//普通文本
      BodyPart htmlPart = new MimeBodyPart();
      htmlPart.setContent(infor.getContent(), 
"text/html;charset=gb2312");

      
//附件
      if (infor.isAccessory()) {
        List accessorys 
= infor.getAccessorys();
        Iterator iter 
= accessorys.iterator();
        BodyPart streamContent 
= null;
        DataSource dataSource 
= null;
        Accessory accessory 
= null;
        
while (iter.hasNext()) {
          streamContent 
= new MimeBodyPart();
          accessory 
= (Accessory) iter.next();
          dataSource 
= new FileDataSource(accessory.getFileUrl());
          streamContent.setDataHandler(
new DataHandler(dataSource));
          streamContent.setFileName(accessory.getFileName());
          mm.addBodyPart(streamContent);
        }

      }

      
//填加相应的属性
      mm.addBodyPart(htmlPart);

      message.setContent(mm);
      message.saveChanges();
      Transport transport 
= session.getTransport("smtp");
      transport.connect(infor.getHost(), infor.getUserName(),
                        infor.getPassword());
      transport.sendMessage(message, message.getAllRecipients());
      transport.close();
    }

    
catch (Exception e) {
      e.printStackTrace();
      
return false;
    }

    
return true;
  }


  
//示例
  public static void main(String[] args) {
    Mail mail 
= new Mail();
    MailInfor infor 
= mail.new MailInfor();
    List list 
= new ArrayList();
    list.add(
"aaaaa@163.com");
    infor.setToMail(list);
    infor.setSubject(
"你好");
    infor.setContent(
"......................");
    infor.setFromMail(
"aaaaa@163.com");
    infor.setUserName(
"aaaaa");
    infor.setPassword(
"123456");
    infor.setAccessory(
true);

    
//填加附件
    list = new ArrayList();

    
for (int i = 0; i < 2; i++{
      Accessory accessory 
= infor.new Accessory();
      accessory.setFileName(
"bb.jpg");
      accessory.setFileUrl(
          
"c:/{D940ED42-3EDC-430B-ACE2-2764187EBFED}0.jpg");
      list.add(accessory);
    }

    infor.setAccessorys(list);

    
if (mail.sendMail(infor)) {
      System.out.println(
"成功");
    }

  }

}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值