Java发送邮件过滤无效地址的方式

public void postMail(String recipients[], String subject, String message, String from) throws MessagingException
	{
		

		Properties props = new Properties();
		props.put("mail.transport.protocol", "smtp");
		props.put("mail.smtp.host", this.smtpHostName);
		props.put("mail.smtp.port", this.smtpPort);
		props.put("mail.smtp.auth", "false");
		props.put("mail.smtp.connectiontimeout", this.connectionTimeout);
		props.put("mail.smtp.timeout", this.socketIOTimeout);
        //创建Session实例对象
		Session session = Session.getDefaultInstance(props, null);

		session.setDebug(false);
        //创建MimeMessage实例对象
		Message msg = new MimeMessage(session);

		InternetAddress addressFrom = new InternetAddress(from);
		//设置发件人地址
		msg.setFrom(addressFrom);

		InternetAddress[] addressTo = new InternetAddress[recipients.length];
		for (int i = 0; i < recipients.length; i++)
		{
			addressTo[i] = new InternetAddress(recipients[i]);
		}
		//设置收件人地址
		msg.setRecipients(Message.RecipientType.TO, addressTo);
        //设置邮件主题
		msg.setSubject(subject);
		//设置message为邮件正文,指定MINI类型为text/plain类型,并制定字符编码为KSC5601
		msg.setContent(message, "text/plain;charset=KSC5601");
		//发送邮件
		try {
			Transport.send(msg);
		}catch(SendFailedException  e) {    
            // 打印无效地址
			Address[] invalid = e.getInvalidAddresses();
			if (invalid != null) {
				System.out.println("unsend mail: invalid address");
				for (int i = 0; i < invalid.length; i++) {
					System.out.println("invalid address:" + invalid[i]);
				}
			}
            // 重新组装邮箱地址
			Address[] validAddresses = e.getValidUnsentAddresses();
			if (validAddresses != null) {
				String[] toUsers = new String[validAddresses.length];
				for (int i = 0; i < validAddresses.length; i++) {
					toUsers[i] = validAddresses[i].toString();
				}
				postMail(toUsers, subject, message, from);
			}

		} 
		catch (MessagingException me) {
			me.printStackTrace();
			System.out.println(me.getMessage());
		}
		

	}

需要在catch里捕获发送失败的异常,SendFailedException,该异常类会获取有效地址和无效地址,将有效地址重新发送就可以,通过递归可实现过滤无效地址

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值