• 选学校
  • 高中毕后选择什么学校好
  • 启蒙星
  • 北大青鸟课程介绍
  • 北大青鸟助你走上高级软件工程师修炼之路
  • 转行不是梦,学北大青鸟IT培训
  • 北大青鸟辉煌12年
  • 株洲北大青鸟校区升级

您现在的位置:株洲北大青鸟 >> >> 师资力量>> 技术天地

师资力量
开班信息
输入姓名手机号码预约试听课程
姓  名:*
手机号:*
创业摇篮班
开班日期:10月15日
招生人数:25
就业直通班
开班日期:10月31日
招生人数:25
就业精英班
开班日期:9月13日
招生人数:已满
技术天地
  • 使用JavaMail发邮件
  • 发表日期:2011/5/14 14:34:29 阅读数:862  
  •  
  • 使用JavaMail发邮件
    --李赞红
    package com.ookang.service;

    import java.io.File;
    import java.io.UnsupportedEncodingException;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;

    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.BodyPart;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Multipart;
    import javax.mail.Transport;
    import javax.mail.internet.AddressException;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import javax.mail.internet.MimeUtility;
    import javax.mail.internet.MimeMessage.RecipientType;


    /**
     * 发送邮件
     * @author 李赞红
     *
     */
    public class SendEmail {
    private Message msg;
    private String userName; //验证用户名
    private String password; //验证密码
    private List<InternetAddress> tos;
    private List<InternetAddress> ccs;
    private Multipart multipart;
    private List<String> attachments; //附件的绝对路径名
    private boolean validate;
    public void setUserName(String userName) {
    this.userName = userName;
    }
    public void setPassword(String password) {
    this.password = password;
    }
    public SendEmail(boolean auth) {
    this.validate = auth;
    multipart = new MimeMultipart();
    tos = new ArrayList<InternetAddress>();
    ccs = new ArrayList<InternetAddress>();
    attachments = new ArrayList<String>();
    }
    /**
    * @param auth 是否验证
    * @param userName 用户名
    * @param password 密码
    */
    public SendEmail(String userName, String password){
    this(true);
    this.userName = userName;
    this.password = password;
    this.createMessage();
    }
    public SendEmail() {
    this(true);
    }
    /**
    * 创建Message
    * @param auth 是否需要验证
    */
    public void createMessage(){
    if(validate){
    msg = new MimeMessage(SessionFactory.getSession(userName, password));
    }else{
    msg = new MimeMessage(SessionFactory.getSession());
    }
    }
    /**
    * 判断是否有附件
    * @return
    */
    public boolean isAttachs(){
    return attachments != null && attachments.size() > 0;
    }
    /**
    * 设置发送人
    * @param from 发送人
    * @return
    */
    public boolean setFrom(String from) {
    try {
    msg.setFrom(new InternetAddress(from));
    return true;
    } catch (AddressException e) {
    e.printStackTrace();
    throw new SendMessageException("发送人设置错误", e);
    } catch (MessagingException e) {
    e.printStackTrace();
    throw new SendMessageException("发送人设置错误", e);
    }
    }
    /**
    * 设置简单邮件的正文,本方法必须位于添加附件之后调用
    * @param text
    * @return
    */
    public boolean setText(String text){
    try {
    if(isAttachs()){
    BodyPart content = new MimeBodyPart();
    content.setText(text);
    multipart.addBodyPart(content);
    msg.setContent(multipart);
    }else{
    msg.setText(text);
    }
    return true;
    } catch (MessagingException e) {
    e.printStackTrace();
    throw new SendMessageException("邮件正文错误", e);
    }
    }
    /**
    * 设置标题
    * @param subject
    * @return
    */
    public boolean setSubject(String subject){
    if(subject == null || subject.length() == 0){
    throw new SendMessageException("邮件标题不能为空");
    }
    try {
    msg.setSubject(subject);
    return true;
    } catch (MessagingException e) {
    e.printStackTrace();
    throw new SendMessageException("邮件标题错误", e);
    }
    }
    /**
    * 添加收信人
    * @param to
    * @return
    */
    public boolean addTo(String to){
    try {
    InternetAddress address = new InternetAddress(to);
    msg.addRecipient(RecipientType.TO, address);
    tos.add(address);
    return true;
    } catch (AddressException e) {
    e.printStackTrace();
    throw new SendMessageException("不是有效的邮箱地址(收信人)", e);
    } catch (MessagingException e) {
    e.printStackTrace();
    throw new SendMessageException("不是有效的邮箱地址(收信人)", e);
    }
    }
    /**
    * 添加多个收件人
    * @param to
    */
    public void addTo(String[] to){
    if(to == null) return;
    for(int i = 0; i < to.length; i ++){
    this.addTo(to[i]);
    }
    }
    /**
    * 添加抄送人
    * @param cc
    * @return
    */
    public boolean addCc(String cc){
    try {
    InternetAddress address = new InternetAddress(cc);
    msg.addRecipient(RecipientType.CC, address);
    ccs.add(address);
    return true;
    } catch (AddressException e) {
    e.printStackTrace();
    throw new SendMessageException("不是有效的邮箱地址(抄送人)", e);
    } catch (MessagingException e) {
    e.printStackTrace();
    throw new SendMessageException("不是有效的邮箱地址(抄送人)", e);
    }
    }
    /**
    * 添加多个抄送人
    * @param cc
    */
    public void addCc(String[] cc){
    if(cc == null) return;
    for(int i = 0; i < cc.length; i ++){
    this.addCc(cc[i]);
    }
    }
    /**
    * 添加附件
    * @param fileName 附件的绝对路径名
    * @return
    */
    public boolean addAttachment(String fileName){
    attachments.add(fileName);
    File file = new File(fileName);
    if(!file.exists()) throw new SendMessageException("附件不存在或已被删除, e");
    String simpleFileName = null; //文件名(不含路径)
    int pos = fileName.lastIndexOf('\\');
    if(pos == -1){
    pos = fileName.lastIndexOf('/');
    }
    if(pos != -1){
    simpleFileName = fileName.substring(pos + 1);
    }else{
    simpleFileName = fileName;
    }
    BodyPart bodyPart = new MimeBodyPart();
    try {
    bodyPart.setDataHandler(new DataHandler(new FileDataSource(fileName)));
    //处理附件名为中文时的乱码问题
    simpleFileName = MimeUtility.encodeWord(simpleFileName);
    bodyPart.setFileName(simpleFileName);
    multipart.addBodyPart(bodyPart);
    return true;
    } catch (MessagingException e) {
    e.printStackTrace();
    throw new SendMessageException("附件添加失败", e);
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    throw new SendMessageException("处理附件中文名乱码失败", e);
    }
    }
    /**
    * 添加多个附件
    * @param fileName
    * @return
    */
    public boolean addAttachment(String[] fileName){
    boolean v = true;
    if(fileName == null) return false;
    for(int i = 0; i < fileName.length; i ++){
    v &= this.addAttachment(fileName[i]);
    }
    return v;
    }
    /**
    * 发送邮件
    * @return
    */
    public boolean sendEmail() throws SendMessageException{
    try {
    msg.setSentDate(new Date());
    msg.saveChanges();
    Transport.send(msg);
    return true;
    } catch (MessagingException e) {
    throw new SendMessageException("邮件发送失败", e);
    }
    }
    }
上一篇:使用代理模式处理JDBC事务
下一篇:株洲健坤北大青鸟知识窗:教你如何沉着应对百度只收录首页
分享到:

版权所有 ©株洲健坤科技职业培训学校    学校地址:株洲市天元区黄山路205号健坤大厦(天元区消防中队对面)

咨询报名热线:400-8812-866    邮箱地址:4008812866@b.qq.com   备案号: 湘ICP备10202015号  

北大青鸟学费是多少 湖南北大青鸟怎么样
株洲北大青鸟好不好 株洲北大青鸟学费多少 株洲北大青鸟学校这么样
秒速时时彩官方网站