jMAIL使用,发邮件

 
package cn.grgbanking.view.server.util;
 
import java.util.Properties;
 
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
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;
 
import cn.grgbanking.view.server.service.ISendMail;
 
import cn.grgbanking.view.server.util.OSysLog;
 
//实现邮件发送的功能,系统需要提供SMTP服务器的地址
 
public class OSendMail implements ISendMail {
 
       private MimeMessage mimeMsg; // MIME邮件对象
 
       private Session session; // 邮件会话对象
 
       private Properties props; // 系统属性
 
       private String username = ""; // smtp认证用户名和密码
 
       private String password = "";
 
       private String defaultFrom;
 
       private Multipart mp; // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象
 
       public OSendMail() {
              setSmtpHost("");// 如果没有指定邮件服务器,就从getConfig类中获取
              createSession();
       }
 
       public OSendMail(String smtp) {
              setSmtpHost(smtp);
              createSession();
       }
 
       public void setDefaultFrom(String from) {
              defaultFrom = from;
       }
 
       /**
        * @param hostName
        *            String
        */
       public void setSmtpHost(String hostName) {
              // System.out.println("设置系统属性:mail.smtp.host = "+hostName);
              if (props == null)
                     props = System.getProperties(); // 获得系统属性对象
 
              props.put("mail.smtp.host", hostName); // 设置SMTP主机
       }
 
       /**
        * @return boolean
        */
       public boolean createSession() {
              try {
                     // System.out.println("准备获取邮件会话对象!");
                     session = Session.getDefaultInstance(props, null); // 获得邮件会话对象
              } catch (Exception e) {
                     System.err.println("获取邮件会话对象时发生错误!");
                        OSysLog.error(e);
                     return false;
              }
              return true;
       }
 
       public boolean createMimeMessage() {
              // System.out.println("准备创建MIME邮件对象!");
              try {
                     mimeMsg = new MimeMessage(session); // 创建MIME邮件对象
                     mp = new MimeMultipart();
 
                     return true;
              } catch (Exception e) {
                     System.err.println("创建MIME邮件对象失败!");
                        OSysLog.error(e);
                     return false;
              }
       }
 
       /**
        * @param need
        *            boolean
        */
       public void setNeedAuth(boolean need) {
              // System.out.println("设置smtp身份认证:mail.smtp.auth = "+need);
              if (props == null)
                     props = System.getProperties();
 
              if (need) {
                     props.put("mail.smtp.auth", "true");
              } else {
                     props.put("mail.smtp.auth", "false");
              }
       }
 
       /**
        * @param name
        *            String
        * @param pass
        *            String
        */
       public void setNamePass(String name, String pass) {
              username = name;
              password = pass;
       }
 
       /**
        * @param mailSubject
        *            String
        * @return boolean
        */
       public boolean setSubject(String mailSubject) {
              // System.out.println("设置邮件主题!");
              try {
                     mimeMsg.setSubject(mailSubject);
                     return true;
              } catch (Exception e) {
                     System.err.println("设置邮件主题发生错误!");
                        OSysLog.error(e);
                     return false;
              }
       }
 
       /**
        * @param mailBody
        *            String
        */
       public boolean setBody(String mailBody) {
              try {
                     BodyPart bp = new MimeBodyPart();
                     bp.setContent(
                                   "<meta http-equiv=Content-Type content=text/html; charset=gb2312>"
                                                 + mailBody, "text/html;charset=GB2312");
                     mp.addBodyPart(bp);
 
                     return true;
              } catch (Exception e) {
                     System.err.println("设置邮件正文时发生错误!");
                        OSysLog.error(e);
                     return false;
              }
       }
 
       /**
        * @param name
        *            String
        * @param pass
        *            String
        */
       public boolean addFileAffix(String filename) {
 
              try {
                     BodyPart bp = new MimeBodyPart();
                     FileDataSource fileds = new FileDataSource(filename);
                     bp.setDataHandler(new DataHandler(fileds));
                     bp.setFileName(fileds.getName());
 
                     mp.addBodyPart(bp);
 
                     return true;
              } catch (Exception e) {
                     System.err.println("增加邮件附件:" + filename + "发生错误!");
                        OSysLog.error(e);
                     return false;
              }
       }
 
       /**
        * @param name
        *            String
        * @param pass
        *            String
        */
       public boolean setFrom(String from) {
              if (from == null) {
                     return false;
              }
              try {
                     mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人
                     return true;
              } catch (Exception e) {
                        OSysLog.error(e);
                     return false;
              }
       }
 
       /**
        * @param name
        *            String
        * @param pass
        *            String
        */
       public boolean setTo(String to) {
              if (to == null)
                     return false;
 
              try {
                     mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress
                                   .parse(to));
                     return true;
              } catch (Exception e) {
                        OSysLog.error(e);
                     return false;
              }
 
       }
 
       /**
        * @param name
        *            String
        * @param pass
        *            String
        */
       public boolean setCopyTo(String copyto) {
              if (copyto == null)
                     return false;
              try {
                     mimeMsg.setRecipients(Message.RecipientType.CC,
                                   (Address[]) InternetAddress.parse(copyto));
                     return true;
              } catch (Exception e) {
                        OSysLog.error(e);
                     return false;
              }
       }
 
       /**
        * @param name
        *            String
        * @param pass
        *            String
        */
       public boolean sendout() {
              try {
                     mimeMsg.setContent(mp);
                     mimeMsg.saveChanges();
                     // System.out.println("正在发送邮件....");
 
                     Session mailSession = Session.getInstance(props, null);
                     Transport transport = mailSession.getTransport("smtp");
                     transport.connect((String) props.get("mail.smtp.host"), username,
                                   password);
                     transport.sendMessage(mimeMsg, mimeMsg
                                   .getRecipients(Message.RecipientType.TO));
                     // transport.send(mimeMsg);
 
                     // System.out.println(" 发送邮件成功!");
                     transport.close();
                     return true;
              } catch (Exception e) {
                     System.err.println("邮件发送失败!");
                        OSysLog.error(e);
                     return false;
              }
       }
 
       /**
        * Just do it as this
        */
       public static void main(String[] args) {
 
                //证明可以发送邮件成功 ljming 2007/08/29
              String mailbody = "<meta http-equiv=Content-Type content=text/html; charset=gb2312>"
                            + "<div align=center><a href=http://www.csdn.net> csdn </a></div>";
              OSendMail sendMailer = new OSendMail();
                //sendMailer.send("211.154.109.68",true,"ljming","xxxxx","subject",mailbody,null,"ljming@grgbanking.com","ljming@grgbanking.com");
                sendMailer.setSmtpHost("smtp.163.com");
                sendMailer.setDefaultFrom("fiafa5000@163.com");
                sendMailer.setNeedAuth(true);
                sendMailer.setNamePass("帐号","密码");
                sendMailer.send("ljming to ming",mailbody,"superv3@yeah.net");
       }
 
       public boolean send(String smtpIP, boolean isNeedAuth, String user,
                     String pass, String subject, String mailBody, String[] fillAffix,
                     String mailTo, String mailFrom) {
              setSmtpHost(smtpIP);
              setNeedAuth(isNeedAuth);
              if (isNeedAuth)
                     setNamePass(user, pass);
              return send(subject, mailBody, fillAffix, mailTo, mailFrom);
       }
 
       public boolean send(String subject, String mailBody, String[] fillAffix,
                     String mailTo, String mailFrom) {
              if (!createMimeMessage())
                     return false;
              if (!setFrom(mailFrom))
                     return false;
              if (!setSubject(subject))
                     return false;
              if (!setBody(mailBody))
                     return false;
              if (!setTo(mailTo))
                     return false;
 
              if (fillAffix != null && fillAffix.length > 0) {
                     for (int i = 0; i < fillAffix.length; i++) {
                            if (addFileAffix(fillAffix[i]))
                                   return false;
                     }
              }
              if (!sendout())
                     return false;
              return true;
       }
 
       public boolean send(String subject, String mailBody, String mailTo) {
              return send(subject,mailBody,null,mailTo,defaultFrom);
           /*
              System.out.println("mailSubject:" + subject);
 
              if (!createMimeMessage())
                     return false;
              if (!setFrom(defaultFrom))
                     return false;
              if (!setSubject(subject))
                     return false;
              if (!setBody(mailBody))
                     return false;
              if (!setTo(mailTo))
                     return false;
              if (!sendout())
                     return false;
 
                return true;
            */
       }
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值