JavaMail(2)――给多人发送、抄送

关键技术:


1、MimeMessage的setRecipients方法设置邮件的收件人,其中Message.RecipientType.TO常量表示收件人类型是邮件接收者,Message.RecipientType.CC常量表示收件人类型是抄送者,Message.RecipientType.BCC常量表示收件人的类型是密送着。


2、在调用MimeMessage的setRecipients方法时,除了可以指定收件人的类型外,还可以传入一个数组,指定多个收件人的地址。


SourceCode:


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;


publicclass MultiMailsender {

/**

     * 发送邮件给多个接收者
     * 
@param mailInfo    带发送邮件的信息
     * 
@return

*/
publicstaticboolean 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);
returntrue;
        } catch (MessagingException ex) {
            ex.printStackTrace();
        }
returnfalse;
    }


    /**
     * 发送带抄送的邮件
     * 
@param mailInfo    待发送邮件的消息
     * 
@return

*/
publicstaticboolean 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);
returntrue;
        } catch (MessagingException ex) {
            ex.printStackTrace();
        }
returnfalse;
    }


publicstaticvoid 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);
    }


    /**
     * 发送多接收者类型邮件的基本信息
*/
publicstaticclass MultiMailSenderInfo extends MailSenderInfo{
// 邮件的接收者,可以有多个

private String[] receivers;
// 邮件的抄送者,可以有多个

private String[] ccs;

public String[] getCcs() {
return ccs;
        }
publicvoid setCcs(String[] ccs) {
this.ccs = ccs;
        }
public String[] getReceivers() {
return receivers;
        }
publicvoid setReceivers(String[] receivers) {
this.receivers = receivers;
        }
    }
}

 

你可能感兴趣的:(技术,import,sourcecode,收件人)