⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aemailsender.java

📁 野蔷薇论坛源码 java 自己看看吧。 学习用
💻 JAVA
字号:
/* 
 * Created on 2007-9-24
 * Last modified on 2007-10-17
 * Powered by YeQiangWei.com
 */
package com.yeqiangwei.club.service.mail;

import java.util.ArrayList;
import java.util.List;

import javax.mail.Session;

import org.apache.log4j.Logger;

import com.yeqiangwei.club.controller.form.AEmailForm;
import com.yeqiangwei.club.service.ServiceLocator;
import com.yeqiangwei.club.service.ServiceWrapper;
import com.yeqiangwei.club.service.user.UserService;
import com.yeqiangwei.club.service.util.BasicInfoService;
import com.yeqiangwei.club.exception.ClubException;
import com.yeqiangwei.club.util.MessageUtils;
import com.yeqiangwei.club.param.UserParameter;
import com.yeqiangwei.club.service.model.UserModel;
import com.yeqiangwei.util.Validator;
import com.yeqiangwei.util.StringHelper;

public class AEmailSender {
	
	private static final Logger logger = Logger.getLogger(AEmailSender.class);
	
	public static UserModel SENDING;
	
	public static String SENDING_ADDRESS; //正在发送的地址
	
	public static long TOTAL = 0;
	
	public static int PAGE = 0;
	
	public static int PAGES = 0;
	
	public static int STATE = 0;
	
	public static boolean STOP = false;
	
	private boolean isAllowed(String emailAddress, String nchar){
		boolean bea = true;
		if(!Validator.isEmpty(nchar)){
			nchar = nchar.replace("\r\n", "|");
			List<String> list = StringHelper.stringToList(nchar, "|");
			if(!Validator.isEmpty(list)){
				for(int i=0; i<list.size(); i++){
					if(emailAddress.indexOf(list.get(i))!=-1){
						bea = false;
						break;
					}
				}
			}
		}		
		return bea;
	}
	
	public void sendEmail(AEmailForm emailForm) throws ClubException {
		if(Validator.isEmpty(emailForm.getSubject())||Validator.isEmpty(emailForm.getContent())){
			throw new ClubException(MessageUtils.getMessage("error_empty"));
		}
		if(STATE==1){
			throw new ClubException("发送任务正在执行...");
		}
		STATE = 1;
		UserParameter param = new UserParameter();
		param.setRows(emailForm.getRows());
		param.setPage(emailForm.getStartPage());
		if(!Validator.isEmpty(emailForm.getNotin())){
			String notin = emailForm.getNotin()
			.replace("\r\n",",")
			.replace("|",",")
			.replace(",",",");
			param.setEmailAddressNotin(notin);
		}
		long total = this.getUserService().countByParameter(param);
		int pages = (int) (total/param.getRows());
		if(total%param.getRows()!=0){
			pages++;
		}
		PAGES = pages;
		//if(pages>emailForm.getEndPage()){
			//pages = emailForm.getEndPage();
		//}
		outer:
		for(int page=emailForm.getStartPage(); page<=pages; page++){
			if(STOP){
				break outer;
			}
			PAGE=page;
			param.setPage(page);
			param.setOrderBy(new Byte("8"));
			List<UserModel> list = this.getUserService().findByParameter(param);
			TOTAL = this.getUserService().countByParameter(param);
			List<UserModel> slist = new ArrayList<UserModel>();
			if(!Validator.isEmpty(list)){
				for(int i=0; i<list.size(); i++){
					if(STOP){
						break outer;
					}
					UserModel userModel = list.get(i);
					if(!this.isAllowed(userModel.getEmailAddress(),emailForm.getNoAllowedChar())){
						logger.debug("remove: "+userModel.getEmailAddress());
					}else{
						slist.add(userModel);
					}
				}
				if(!Validator.isEmpty(slist)){
					Session session = this.getMailService().getSession();
					for(int i=0; i<slist.size(); i++){
						if(STOP){
							break outer;
						}
						UserModel userModel = slist.get(i);
						SENDING = userModel;
						MailEntry mail = new MailEntry();
						mail.setSubject(emailForm.getSubject());
						mail.setContent(emailForm.getContent());
						mail.setTaker(userModel.getUserName());
						mail.setTo(userModel.getEmailAddress());
						mail.setFrom(this.getBasicInfoService().findOnly().getEmailAddress());
						mail.setSender(this.getBasicInfoService().findOnly().getEmailSender());
						this.replace(mail, userModel);
						EmailUtils.filterMailfooter(mail);
						try{
							this.getMailService().sendMail(session,mail);
							logger.error("taker="+userModel.getUserName());
							logger.error("to="+userModel.getEmailAddress());
							logger.error("发送成功!");
						}catch(ClubException e){
							logger.error("taker="+userModel.getUserName());
							logger.error("to="+userModel.getEmailAddress());
							logger.error(e.toString());
						}
					}
				}
			}
		}
		STATE = 2;
	}
	
	public void sendsEmail(String subject, String content, String emails
			, String notin, String noAllowedChar) throws ClubException{
		if(Validator.isEmpty(subject)||Validator.isEmpty(content)||Validator.isEmpty(emails)){
			throw new ClubException(MessageUtils.getMessage("error_empty"));
		}
		if(STATE==1){
			throw new ClubException("发送任务正在执行...");
		}
		STATE = 1;
		List<String> list = StringHelper.stringToList(emails, "\r\n");
		if(Validator.isEmpty(list)&&emails.indexOf("|")!=-1){
			list = StringHelper.stringToList(emails, "|");
		}
		if(!Validator.isEmpty(list)){
			AEmailSender.TOTAL = list.size();
			Session session = this.getMailService().getSession();
			for(int i=0; i<list.size(); i++){
				if(STOP){
					break;
				}
				String emailAddress = list.get(i);
				if((!Validator.isEmpty(notin)&&emailAddress.equalsIgnoreCase(notin))
						||!Validator.isEmpty(noAllowedChar)&&emailAddress.indexOf(noAllowedChar)!=-1){
					continue;
				}
				MailEntry mail = new MailEntry();
				mail.setSubject(subject);
				mail.setContent(content);
				mail.setTaker(emailAddress.substring(0,emailAddress.indexOf("@")));
				mail.setTo(emailAddress);
				mail.setFrom(this.getBasicInfoService().findOnly().getEmailAddress());
				mail.setSender(this.getBasicInfoService().findOnly().getEmailSender());
				EmailUtils.filterMailfooter(mail);
				SENDING_ADDRESS = emailAddress;
				try{
					this.getMailService().sendMail(session,mail);
					logger.error("taker="+mail.getTaker());
					logger.error("to="+mail.getTo());
					logger.error("发送成功!");
				}catch(ClubException e){
					logger.error("taker="+mail.getTaker());
					logger.error("to="+mail.getTo());
					logger.error(e.toString());
				}
			}
		}
		STATE = 2;
	}
	
	public void replace(MailEntry mail, UserModel user){
		mail.setContent(mail.getContent().replaceAll("\\{userName\\}", user.getUserName()));
		mail.setSubject(mail.getSubject().replaceAll("\\{userName\\}", user.getUserName()));
	}
	
	
	private MailService getMailService() {
		return ServiceWrapper.<MailService>getSingletonInstance(ServiceLocator.EMAIL);
	}
	
	private UserService getUserService() {
		return ServiceWrapper.<UserService>getSingletonInstance(ServiceLocator.USER);
	}
	
	
	public BasicInfoService getBasicInfoService() {
		return ServiceWrapper.<BasicInfoService>getSingletonInstance(ServiceLocator.BASICINFO);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -