JavaMail(3)--给多人发送邮件

关键技术:

  • MimeMessage的setRecipients方法设置邮件的收件人,其中Message.RecipientType.TO常量表示收件人类型是邮件接收者,Message.RecipientType.CC常量表示收件人类型是抄送者,Message.RecipientType.BCC常量表示收件人的类型是密送着。
  • 在调用MimeMessage的setRecipients方法时,除了可以指定收件人的类型外,还可以传入一个数组,指定多个收件人的地址。

 

package  book.email;

import  java.util.Date;

import  javax.mail.Address;
import  javax.mail.BodyPart;
import  javax.mail.Message;
import  javax.mail.MessagingException;
import  javax.mail.Multipart;
import  javax.mail.Session;
import  javax.mail.Transport;
import  javax.mail.internet.InternetAddress;
import  javax.mail.internet.MimeBodyPart;
import  javax.mail.internet.MimeMessage;
import  javax.mail.internet.MimeMultipart;

/**
 * 发送邮件给多个接收者、抄送邮件
 
*/
public   class  MultiMailsender {

    
/**
     * 发送邮件给多个接收者
     * 
@param  mailInfo    带发送邮件的信息
     * 
@return
     
*/
    
public   static   boolean  sendMailtoMultiReceiver(MultiMailSenderInfo mailInfo){
        MyAuthenticator authenticator 
=   null ;
        
if  (mailInfo.isValidate()) {
            authenticator 
=   new  MyAuthenticator(mailInfo.getUserName(),
                    mailInfo.getPassword());
        }
        Session sendMailSession 
=  Session.getInstance(mailInfo
                .getProperties(), authenticator);
        
try  {
            Message mailMessage 
=   new  MimeMessage(sendMailSession);
            
//  创建邮件发送者地址
            Address from  =   new  InternetAddress(mailInfo.getFromAddress());
            mailMessage.setFrom(from);
            
//  创建邮件的接收者地址,并设置到邮件消息中
            Address[] tos  =   null ;
            String[] receivers 
=  mailInfo.getReceivers();
            
if  (receivers  !=   null ){
                
//  为每个邮件接收者创建一个地址
                tos  =   new  InternetAddress[receivers.length  +   1 ];
                tos[
0 =   new  InternetAddress(mailInfo.getToAddress());
                
for  ( int  i = 0 ; i < receivers.length; i ++ ){
                    tos[i
+ 1 =   new  InternetAddress(receivers[i]);
                }
            } 
else  {
                tos 
=   new  InternetAddress[ 1 ];
                tos[
0 =   new  InternetAddress(mailInfo.getToAddress());
            }
            
//  将所有接收者地址都添加到邮件接收者属性中
            mailMessage.setRecipients(Message.RecipientType.TO, tos);
            
            mailMessage.setSubject(mailInfo.getSubject());
            mailMessage.setSentDate(
new  Date());
            
//  设置邮件内容
            Multipart mainPart  =   new  MimeMultipart();
            BodyPart html 
=   new  MimeBodyPart();
            html.setContent(mailInfo.getContent(), 
" text/html; charset=GBK " );
            mainPart.addBodyPart(html);
            mailMessage.setContent(mainPart);
            
//  发送邮件
            Transport.send(mailMessage);
            
return   true ;
        } 
catch  (MessagingException ex) {
            ex.printStackTrace();
        }
        
return   false ;
    }
    
    
/**
     * 发送带抄送的邮件
     * 
@param  mailInfo    待发送邮件的消息
     * 
@return
     
*/
    
public   static   boolean  sendMailtoMultiCC(MultiMailSenderInfo mailInfo){
        MyAuthenticator authenticator 
=   null ;
        
if  (mailInfo.isValidate()) {
            authenticator 
=   new  MyAuthenticator(mailInfo.getUserName(),
                    mailInfo.getPassword());
        }
        Session sendMailSession 
=  Session.getInstance(mailInfo
                .getProperties(), authenticator);
        
try  {
            Message mailMessage 
=   new  MimeMessage(sendMailSession);
            
//  创建邮件发送者地址
            Address from  =   new  InternetAddress(mailInfo.getFromAddress());
            mailMessage.setFrom(from);
            
//  创建邮件的接收者地址,并设置到邮件消息中
            Address to  =   new  InternetAddress(mailInfo.getToAddress());
            mailMessage.setRecipient(Message.RecipientType.TO, to);
            
            
//  获取抄送者信息
            String[] ccs  =  mailInfo.getCcs();
            
if  (ccs  !=   null ){
                
//  为每个邮件接收者创建一个地址
                Address[] ccAdresses  =   new  InternetAddress[ccs.length];
                
for  ( int  i = 0 ; i < ccs.length; i ++ ){
                    ccAdresses[i] 
=   new  InternetAddress(ccs[i]);
                }
                
//  将抄送者信息设置到邮件信息中,注意类型为Message.RecipientType.CC
                mailMessage.setRecipients(Message.RecipientType.CC, ccAdresses);
            } 
            
            mailMessage.setSubject(mailInfo.getSubject());
            mailMessage.setSentDate(
new  Date());
            
//  设置邮件内容
            Multipart mainPart  =   new  MimeMultipart();
            BodyPart html 
=   new  MimeBodyPart();
            html.setContent(mailInfo.getContent(), 
" text/html; charset=GBK " );
            mainPart.addBodyPart(html);
            mailMessage.setContent(mainPart);
            
//  发送邮件
            Transport.send(mailMessage);
            
return   true ;
        } 
catch  (MessagingException ex) {
            ex.printStackTrace();
        }
        
return   false ;
    }

    
public   static   void  main(String[] args) {
        
//  创建邮件信息
        MultiMailSenderInfo mailInfo  =   new  MultiMailSenderInfo();
        mailInfo.setMailServerHost(
" smtp.sina.com.cn " );
        mailInfo.setMailServerPort(
" 25 " );
        mailInfo.setValidate(
true );
        mailInfo.setUserName(
" *** " );
        mailInfo.setPassword(
" *** " );
        mailInfo.setFromAddress(
" ***@sina.com " );
        mailInfo.setToAddress(
" ***@163.com " );
        mailInfo.setSubject(
" MyMail测试 " );
        mailInfo.setContent(
" 我的邮件测试/n/rMy test mail/n/r " );

        String[] receivers 
=   new  String[]{ " ***@163.com " " ***@tom.com " };
        String[] ccs 
=  receivers;
        mailInfo.setReceivers(receivers);
        mailInfo.setCcs(ccs);
        
        MultiMailsender.sendMailtoMultiReceiver(mailInfo);
        MultiMailsender.sendMailtoMultiCC(mailInfo);
    }
    
    
/**
     * 发送多接收者类型邮件的基本信息
     
*/
    
public   static   class  MultiMailSenderInfo  extends  MailSenderInfo{
        
//  邮件的接收者,可以有多个
         private  String[] receivers;
        
//  邮件的抄送者,可以有多个
         private  String[] ccs;
        
        
public  String[] getCcs() {
            
return  ccs;
        }
        
public   void  setCcs(String[] ccs) {
            
this .ccs  =  ccs;
        }
        
public  String[] getReceivers() {
            
return  receivers;
        }
        
public   void  setReceivers(String[] receivers) {
            
this .receivers  =  receivers;
        }
    }
}


转自:http://www.blogjava.net/kissyan4916/articles/279128.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值