亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

學習自定義SMTPAppender中的源碼

2019-11-18 13:03:59
字體:
來源:轉載
供稿:網友

  package piv.zheng.log4j.test;
  
  import org.apache.log4j.AppenderSkeleton;
  import org.apache.log4j.Layout;
  import org.apache.log4j.helpers.LogLog;
  import org.apache.log4j.spi.LoggingEvent;
  import org.apache.log4j.spi.ErrorCode;
  import java.util.PRoperties;
  import java.util.Date;
  
  import javax.mail.session;
  import javax.mail.Transport;
  import javax.mail.Message;
  import javax.mail.MessagingException;
  import javax.mail.internet.MimeMessage;
  import javax.mail.Multipart;
  import javax.mail.internet.MimeMultipart;
  import javax.mail.internet.MimeBodyPart;
  import javax.mail.internet.InternetAddress;
  import javax.mail.internet.AddressException;
  
  public class SMTPAppender extends AppenderSkeleton {
  private String to; //收件人
  private String from; // 發件人
  private String subject; //郵件標題
  private String smtpHost; //郵件服務器
  private String auth; //身份驗證標識
  private String username; //用戶
  private String passWord; //密碼
  private boolean locationInfo = false;
  
  protected Session ses;
  protected Message msg;
  protected Properties props;
  
  public SMTPAppender() {}
  
  public SMTPAppender(Layout layout) {
  
  this.layout = layout;
  
  }
  
  //應用設置
  public void activateOptions() {
  props = new Properties(System.getProperties());
  if (smtpHost != null) {
  props.put("mail.smtp.host", smtpHost);
  }
  if (auth != null) {
  props.put("mail.smtp.auth", auth);
  }
  if (username != null) {
  props.put("username", username);
  }
  if (password != null) {
  props.put("password", password);
  }
  ses = Session.getInstance(props); //創建session
  
  msg = new MimeMessage(ses); //創建message
  
  try {
  //為message設置發件人
  if (from != null) {
  msg.setFrom(getAddress(from));
  } else {
  msg.setFrom();
  }
  
  //為message設置收件人
  if (to != null) {
  msg.setRecipients(Message.RecipientType.TO, parseAddress(to));
  }
  
  //為message設置標題
  if (subject != null) {
  msg.setSubject(subject);
  }
  } catch (MessagingException e) {
  LogLog.error("Could not activate SMTPAppender options.", e);
  }
  }
  
  //重寫執行方法,當執行日志輸出時會被調用
  public void append(LoggingEvent event) {
  //檢查message及layout
  if (!checkEntryConditions()) {
  return;
  }
  
  event.getThreadName();
  event.getNDC();
  if (locationInfo) {
  event.getLocationInformation();
  }
  
  //發送郵件
  sendBuffer(event);
  }
  
  protected boolean checkEntryConditions() {
  if (this.msg == null) {
  errorHandler.error("Message object not configured.");
  return false;
  }
  
  if (this.layout == null) {
  errorHandler.error("No layout set for appender named [" + name + "].");
  return false;
  }
  return true;
  }
  
  synchronized public void close() {
  this.closed = true;
  }
  
  InternetAddress getAddress(String addressStr) {
  try {
  return new InternetAddress(addressStr);
  } catch (AddressException e) {
  errorHandler.error("Could not parse address [" + addressStr + "].", e, ErrorCode.ADDRESS_PARSE_FAILURE);
  return null;
  }
  }
  
  InternetAddress[] parseAddress(String addressStr) {
  try {
  return InternetAddress.parse(addressStr, true);
  } catch (AddressException e) {
  errorHandler.error("Could not parse address [" + addressStr + "].", e, ErrorCode.ADDRESS_PARSE_FAILURE);
  return null;
  }
  }
  
  public boolean requiresLayout() {
  return true;
  }
  
  //發送郵件
  protected void sendBuffer(LoggingEvent event) {
  try {
  //將日志信息設置到message中
  MimeBodyPart part = new MimeBodyPart();
  
  StringBuffer sbuf = new StringBuffer();
  String t = layout.getHeader();
  if (t != null) {
  sbuf.append(t);
  }
  sbuf.append(layout.format(event));
  if (layout.ignoresThrowable()) {
  String[] s = event.getThrowableStrRep();
  if (s != null) {
  for (int j = 0; j < s.length; j++) {
  sbuf.append(s[j]);
  }
  }
  }
  t = layout.getFooter();
  if (t != null) {
  sbuf.append(t);
  }
  part.setContent(sbuf.toString(), layout.getContentType());
  
  Multipart mp = new MimeMultipart();
  mp.addBodyPart(part);
  
  msg.setContent(mp); //為message設置內容,即日志信息
  msg.setSentDate(new Date()); //為message設置發送時間
  
  //發送郵件
  Transport tr = ses.getTransport("smtp");
  tr.connect(smtpHost, username, password);
  tr.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO));
  tr.close();
  } catch (Exception e) {
  LogLog.error("Error occured while sending e-mail notification.", e);
  }
  }
  
  public void setTo(String to) {
  this.to = to;
  }
  
  public String getTo() {
  return to;
  }
  
  public void setFrom(String from) {
  this.from = from;
  }
  
  public String getFrom() {
  return from;
  }
  
  public String getSubject() {
  return subject;
  }
  
  public void setSubject(String subject) {
  this.subject = subject;
  }
  
  public void setSMTPHost(String smtpHost) {
  this.smtpHost = smtpHost;
  }
  
  public String getSMTPHost() {
  return smtpHost;
  }
  
  public void setAuth(String auth) {
  this.auth = auth;
  }
  
  public String getAuth() {
  return auth;
  }
  
  public void setUsername(String username) {
  this.username = username;
  }
  
  public String getUsername() {
  return username;
  }
  
  public void setPassword(String password) {
  this.password = password;
  }
  
  public String getPassword() {
  return password;
  }
  
  public void setLocationInfo(boolean locationInfo) {
  this.locationInfo = locationInfo;
  }
  
  public boolean getLocationInfo() {
  return locationInfo;
  }
  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕日韩视频| 一区二区在线视频播放| 少妇精69xxtheporn| xvideos国产精品| 国产日韩欧美影视| 国产在线观看91精品一区| 亚洲电影在线看| 久久亚洲综合国产精品99麻豆精品福利| 欧美丰满少妇xxxxx| 久久69精品久久久久久久电影好| 狠狠躁夜夜躁人人爽超碰91| 精品视频在线导航| 欧美日韩xxx| 久久精品中文字幕免费mv| 精品国产老师黑色丝袜高跟鞋| 91网站免费观看| 国产精品自产拍在线观看| 岛国av一区二区在线在线观看| 中文字幕亚洲欧美日韩2019| 影音先锋日韩有码| 国产成人福利夜色影视| 欧美成人午夜激情在线| 国产脚交av在线一区二区| 久久99久国产精品黄毛片入口| 久久久精品视频在线观看| 日韩精品免费视频| 亚洲欧美制服综合另类| 欧美一级大片视频| 欧美另类交人妖| 欧美性感美女h网站在线观看免费| 国产精品美女久久久久av超清| 国产精品91在线观看| 亚洲欧美资源在线| 欧美成人黑人xx视频免费观看| 日韩av最新在线| 亚洲一二在线观看| 亚洲欧洲日本专区| 蜜月aⅴ免费一区二区三区| 久久成人一区二区| 日韩午夜在线视频| 欧美一区三区三区高中清蜜桃| 日韩在线视频一区| 中文字幕亚洲无线码a| 国产人妖伪娘一区91| 97成人在线视频| 91成人免费观看网站| 亚洲色图第一页| 琪琪亚洲精品午夜在线| 9.1国产丝袜在线观看| 黄网动漫久久久| 在线免费看av不卡| 久久精品国产综合| 欧美日韩国产第一页| 粉嫩老牛aⅴ一区二区三区| 中文字幕亚洲情99在线| 亚洲午夜久久久影院| 国产一区二区三区在线| 亚洲欧美一区二区三区在线| 日韩免费看的电影电视剧大全| 69**夜色精品国产69乱| 福利一区视频在线观看| 岛国av午夜精品| 久久久久久久久久婷婷| 97精品视频在线播放| 亚洲肉体裸体xxxx137| 欧美视频裸体精品| 欧美最猛性xxxxx(亚洲精品)| 精品色蜜蜜精品视频在线观看| 日韩av电影免费观看高清| 中文字幕成人在线| 国产精品免费看久久久香蕉| 成人国产精品日本在线| 国产成人小视频在线观看| 国产视频综合在线| 国产精品免费久久久久影院| 中文字幕国产亚洲| 国产性猛交xxxx免费看久久| 尤物yw午夜国产精品视频| 久久99国产综合精品女同| 亚洲欧洲偷拍精品| 九九视频直播综合网| 日韩高清中文字幕| 性色av一区二区三区免费| 国产精品久久久久久久久借妻| 亚洲福利视频二区| 91日韩在线播放| 国产亚洲欧美日韩美女| 欧洲亚洲免费视频| 精品久久香蕉国产线看观看亚洲| 98午夜经典影视| 国产a级全部精品| 2019av中文字幕| 日本成人免费在线| 亚洲综合大片69999| 欧美日韩在线另类| 97久久国产精品| 国产精品扒开腿爽爽爽视频| 午夜精品福利在线观看| 欧美激情国内偷拍| 国产精品一区二区在线| 精品视频偷偷看在线观看| 欧美一级片久久久久久久| 正在播放欧美视频| 午夜精品久久久99热福利| 国产精品男人爽免费视频1| 亚洲精品一区中文字幕乱码| 亚洲一区二区三区视频播放| 久久99久久久久久久噜噜| 国产一区二区丝袜| 欧美日韩国产专区| 国产精品久久久久国产a级| 久久久国产精彩视频美女艺术照福利| 欧美午夜视频在线观看| 国内成人精品视频| 欧美亚洲第一页| 欧美性极品xxxx娇小| 亚洲成人亚洲激情| 亚洲毛片在线看| 91精品国产高清| 久久久久久久一区二区| 久久69精品久久久久久国产越南| 久久免费视频网站| 欧美日韩国产一中文字不卡| 亚洲成人a**站| 日韩中文字幕视频在线| 日韩精品在线播放| 欧美在线激情网| 国产香蕉一区二区三区在线视频| 欧美亚洲伦理www| 久久久免费在线观看| 国产成人精品视频在线| 黄色91在线观看| 精品国产31久久久久久| 91av视频在线播放| 亚洲最新视频在线| 亚洲色图校园春色| 亚洲va国产va天堂va久久| 久久国产精品首页| 欧美wwwxxxx| 成人久久久久久久| 亚洲xxx大片| 日韩精品亚洲精品| 91精品美女在线| 日韩av免费观影| 久久久av网站| 国产69精品久久久久9999| www.国产一区| 欧美在线性爱视频| 亚洲精品视频中文字幕| 国产精品久久久久久久久久东京| 国产精品久久久久福利| 亚洲xxxxx性| 色综合久久久久久中文网| 久久精品国产99国产精品澳门| 日韩av在线免费看| 亚洲国产精品人人爽夜夜爽| 国产精品丝袜白浆摸在线| 少妇高潮 亚洲精品| 国产精品欧美日韩一区二区| 97精品在线观看| 一区二区在线视频播放| 狠狠躁夜夜躁人人爽天天天天97| 91精品久久久久久久久久久| 国产热re99久久6国产精品|