javaMail邮件发送功能(多收件人,多抄送人,多密送人,多附件)

先看源码,再来理解,可以直接使用!

JavaMailWithAttachment.java:

<span style="font-family: Arial, Helvetica, sans-serif;">private MimeMessage message;</span>

    private Session session;
    private Transport transport;

    private String mailHost = "";
    private String sender_username = "";
    private String sender_password = "";
    private String contentPart_Type = "";

    private Properties properties = new Properties();
    
    /*
     * 初始化方法
     */
    public JavaMailWithAttachment() {
        try {
        	FileInputStream is=new FileInputStream("E:/workspace1.6/ICRM-H5/src/mailServer.properties");
            properties.load(is);
            this.mailHost = properties.getProperty("mail.smtp.host");
            this.sender_username = properties.getProperty("mail.sender.username");
            this.sender_password = properties.getProperty("mail.sender.password");
            this.contentPart_Type = properties.getProperty("mail.contentPart.type");
        } catch (IOException e) {
            e.printStackTrace();
        }

        session = Session.getInstance(properties);
        session.setDebug(true); //开启后有调试信息,发布时关闭
        message = new MimeMessage(session);
    }

    
    /**
     * 发送邮件
     * @param subject
     * 				邮件主题
     * @param sendHtml
     * 				邮件内容
     * @param toUser
     * 				收件人  多个时参数形式  :  "xxx@xxx.com,xxx@xxx.com,xxx@xxx.com"
     * @param ccUser
     * 				抄送人   同上
     * @param bccUser
     * 				密送人   同上
     * @param attachment
     * 				附件
     */
	public void doSendHtmlEmail(String subject, String sendHtml,
    		String  toUser, String ccUser, String bccUser, File [] attachment){
    	try {
    		// 发件人
            InternetAddress from = new InternetAddress(sender_username);
            message.setFrom(from);
            
            // 设置多个收件人地址
            if(null != toUser && !toUser.isEmpty()){
	            @SuppressWarnings("static-access")
				InternetAddress[] internetAddressTo = new InternetAddress().parse(toUser);
	            message.setRecipients(Message.RecipientType.TO, internetAddressTo);
            }
            
            // 设置多个抄送地址
            if(null != ccUser && !ccUser.isEmpty()){
	            @SuppressWarnings("static-access")
				InternetAddress[] internetAddressCC = new InternetAddress().parse(ccUser);
	            message.setRecipients(Message.RecipientType.CC, internetAddressCC);
            }
            
            // 设置多个密送地址
            if(null != bccUser && !bccUser.isEmpty()){
	            @SuppressWarnings("static-access")
	            InternetAddress[] internetAddressBCC = new InternetAddress().parse(bccUser);
	            message.setRecipients(Message.RecipientType.BCC, internetAddressBCC);
            }
            
            // 发送日期
            message.setSentDate(new Date()); 
            
            // 邮件主题
            message.setSubject(subject);
            
            // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
            Multipart multipart = new MimeMultipart();
            
            // 添加邮件正文
            BodyPart contentPart = new MimeBodyPart();
            contentPart.setContent(sendHtml, contentPart_Type);
            multipart.addBodyPart(contentPart);
            
            BodyPart attachmentBodyPart = null;
            // 添加附件的内容
            if (null != attachment && attachment.length != 0) {
            	for (File file : attachment) {
            		attachmentBodyPart = new MimeBodyPart();
            		
            		DataSource source = new FileDataSource(file);
            		attachmentBodyPart.setDataHandler(new DataHandler(source));
            		//MimeUtility.encodeWord可以避免文件名乱码
                    attachmentBodyPart.setFileName(MimeUtility.encodeWord(file.getName()));
                    multipart.addBodyPart(attachmentBodyPart);
				}
            }
            
            // 将multipart对象放到message中
            message.setContent(multipart);
            
            // 保存邮件
            message.saveChanges();
            
            // smtp验证
            transport = session.getTransport("smtp");
            transport.connect(mailHost, sender_username, sender_password);
            
            // 发送
            transport.sendMessage(message, message.getAllRecipients());
            System.out.println("发送成功!");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (transport != null) {
                try {
                    transport.close();
                } catch (MessagingException e) {
                    e.printStackTrace();
                }
            }
		}
    }


mailServer.properties:


mail.smtp.host = smtp.ym.163.com

mail.smtp.auth = true

mail.sender.username = xxxx@xxxx.com

mail.sender.password = xxxxx

mail.contentPart.type = text/html;charset=UTF-8

由于javaMail需要一个Properties来注册Session,因此创建一个Properties来写入javaMail所需要的注册信息

mail.smtp.host 发送方的smtp服务器,现在默认的是网易企业邮箱的smtp服务器,可以根据不同的邮箱进行更改。

mail.smtp.auth 向smtp服务器提交认证

mail.sender.username 发送者邮箱

mail.smtp.password 发送者邮箱密码


还需要两个jar包:activation.jar ,mail.jar     

下载地址:http://download.csdn.net/detail/qq741437836/9600110



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值