J2EE实现发送邮件功能

简介:

   以前做过一个项目,需要有这样的功能,即用户申请帐号后,需要得到系统管理员的批准,管理在批准以后会自动加载邮件内容并自动发送邮件给用户注册邮箱。现在很多的网站或系统都有这样的内容,比如注册淘宝,facebook,校内,csdn,注册成功后都会有一封邮件发送给用户,我做的这个很简单,没有确认链接什么的,只是将一个自动加载的内容发送至用户邮箱。

    在使用该程序时,可以将发送邮箱服务器,用户名,密码等放到constant或国际化文件等(便于以后维护)文件中。

    在使用该程序时,可以将发送邮箱服务器,用户名,密码等放到constant或国际化文件等(便于以后维护)文件中。
 
  /**
      *   管理员   实现邮件发送功能   *   若成功,进入了发送邮件成功页面   如果有错误,跳转到错误提醒界面
      */
 
     public  ActionForward execute(ActionMapping mapping, ActionForm actionForm,
            HttpServletRequest request, HttpServletResponse response)
             throws  Exception {
        MessageResources messages = getResources(request);
        HttpSession httpSession = request.getSession();
        EmailForm emailForm = (EmailForm) actionForm;
         if  (httpSession ==  null ) {
            logger.warn(StringUtil.getLogString( " 管理员 " " 超时,需要重新登录。 " ));
             return  mapping.findForward( "timeout" );
        }
 
         //  必须是管理员才允许操作,否则说明是非法登录
         
 
         //  发送方信息
         final  String fromEmail = messages.getMessage( "FromEmail" );
         final  String fromEmailName =  messages.getMessage( "FromEmailName" );
         final  String fromEmailPwd =  messages.getMessage( "FromEmailPwd" );
         final  String smtpHost =  messages.getMessage( "SmtpHost" );
 
         //  接收方信息
        String subjects = emailForm.getSubject().trim();
        String texts = emailForm.getText().trim();
        String email_to =emailForm.getEmail().trim();
 
         try  {
 
            Properties props =  new  Properties();
 
            Transport transport;
             //  设置 SMTP 服务器
            props.put( "mail.smtp.host" , smtpHost);
             //  指定是否需要 SMTP 验证
            props.put( "mail.smtp.auth" "true" );
            props.put( "mail.smtp.starttls.enable" "true" );
             /*  获取邮件会话对象  */
 
             //  将邮件的 props 属性和 Authenticator 属性(密码验证)放在 session 中。
            Session session = Session.getInstance(props,  new  Authenticator() {
 
                public  PasswordAuthentication getPasswordAuthentication() {
                    return   new  PasswordAuthentication(fromEmailName,
                          fromEmailPwd);
               }
            });
            Message newMessage =  null ;
             try  { //  创建 mime 邮件对象
               newMessage =  new  MimeMessage(session);
             catch  (RuntimeException e) {
 
               e.printStackTrace();
               response.setContentType( "text/html;charset=GBK" ); // 设置发送到客户端的响应的内容类型
               PrintWriter out = response.getWriter();
               String alertmsg = messages
                      .getMessage( " 发送失败 " ); // 发送失败
               out.println( "<script>alert('"  + alertmsg +  "')</script>" );
               out.println(( "<script> window.close();</script>" )); // 关闭窗口
               out.println( "<script>window.location='teamAdmin.do'</script>" ); // 重新回到某页面
               out.println( "<script>location.reload()</script>" ); // 强迫浏览器刷新当前页面
               out.flush();
                return   null ;
 
            }
 
            newMessage.setFrom( new  InternetAddress(fromEmail));
 
            String[] email_team =  null ;
            email_team = email_to.split( ";" );
             /*  如果接收邮箱是多个,那么就循环发送  */
             for  ( int  i = 0; i < email_team.length; i++) {
               String email =  null ;
               email = email_team[i];
                //  设置邮件收件人,主题,内容,正文
               newMessage.setRecipient(Message.RecipientType.TO,
                       new  InternetAddress(email));
               newMessage.setSubject(subjects); // 文件标题
 
               newMessage.setSentDate( new  Date()); // 发送时间
 
               newMessage.setText(texts);
                //  创建 smtp 邮件协议发送对象
               transport = session.getTransport( "smtp" );
                // transport.send() 方法中实现取得与邮件服务器的连接,和通过邮件服务器发送邮件。
 
              
               transport.send(newMessage);
            }
 
        }
         catch  (AuthenticationFailedException e)
        {
            response.setContentType( "text/html;charset=GBK" );
            PrintWriter out = response.getWriter();
            String alertmsg = messages.getMessage( " 密码有误,发送失败 " );
            out.println( "<script>alert('"  + alertmsg +  "')</script>" );
            out.println( "<script>window.location='teamAdmin.do'</script>" );
            out.flush();
             return   null ;
        }
         catch  (MessagingException e)
        {
            response.setContentType( "text/html;charset=GBK" );
            PrintWriter out = response.getWriter();
            String alertmsg = messages.getMessage( " 网络链接有误,发送失败 " );
            out.println( "<script>alert('"  + alertmsg +  "')</script>" );
            out.println( "<script>window.location='teamAdmin.do'</script>" );
            out.flush();
             return   null ;
        }
         catch  (Exception e)
        {
            response.setContentType( "text/html;charset=GBK" );
            PrintWriter out = response.getWriter();
            String alertmsg = messages.getMessage( " 发送失败 " );
            out.println( "<script>alert('"  + alertmsg +  "')</script>" );
            out.println( "<script>window.location='teamAdmin.do'</script>" );
            out.flush();
             return   null ;
        }
        response.setContentType( "text/html;charset=GBK" );
        PrintWriter out = response.getWriter();
        String alertmsg =  " 发送邮件成功! " ;
        out.println( "<script>alert('"  + alertmsg +  "')</script>" );
        out.println( "<script>window.location='teamAdmin.do'</script>" );
        out.flush();
 
         return   null ;
 
    }
 
    }



     本文转自 gaochaojs 51CTO博客,原文链接:http://blog.51cto.com/jncumter/179158,如需转载请自行联系原作者

相关文章
|
13天前
|
API
Sendmail邮箱API发送邮件的步骤
AokSend教程:使用Sendmail API发送邮件涉及5步。1) 导入sendmail库;2) 连接SMTP服务器(如`smtp.sendmail.com:587`);3) 设置发件人(`sender@example.com`)和收件人(`recipient@example.com`);4) 编写邮件内容,包括主题和正文;5) 使用`sendmail.send()`发送邮件。AokSend提供高效、触达率高的触发式和SMTP/API接口,适合大规模验证码发信服务。
|
17天前
|
搜索推荐 JavaScript 前端开发
Gmail邮箱API发送邮件的方法有什么
使用Gmail API发送邮件,需先获取API访问权限,包括在Google Cloud Platform上创建项目,启用Gmail API,生成API密钥或OAuth 2.0凭据。然后,用Python等编程语言设置API请求,指定邮件详情。发送简单邮件涉及创建Base64编码的消息体,而带附件的邮件需编码为multipart格式。可添加邮件头信息,并处理发送结果以确保成功。Gmail API使应用能集成自动化、个性化的邮件发送功能,提升效率和体验。
|
22天前
|
安全 API
触发式邮件邮箱API发送邮件的步骤
触发式邮件邮箱API是自动化邮件发送的高效工具,如AokSend、Mailgun和蜂邮EDM等提供此类服务。主要步骤包括:选择服务提供商、注册获取API密钥、配置触发事件(如用户注册或下单)、编写邮件模板及调用API发送邮件。使用时注意遵循服务提供商规则,保证安全可靠性。
|
2天前
|
API 网络安全 数据安全/隐私保护
SMTP邮件邮箱API发送邮件的方法和步骤
使用SMTP邮件邮箱API(如AokSend)发送邮件涉及6个步骤:获取SMTP服务器地址和端口,进行身份验证,构建邮件内容,连接到服务器,发送邮件及处理结果。例如,Gmail的SMTP服务器地址是smtp.gmail.com,端口587。此方法适用于程序化发送邮件,确保安全并支持大规模发信服务。
|
7天前
|
安全 API 开发者
Zoho Mail邮箱API发送邮件的方法
Zoho Mail提供了强大的API,使开发者可以通过编程方式轻松地使用Zoho Mail发送邮件。aoksend将介绍如何使用Zoho Mail邮箱API发送邮件,以及一些常见的用法示例。
|
6天前
|
API 开发者
触发式邮件邮箱API发送邮件的方法和步骤
触发式邮件API如Aoksend让开发者能基于特定事件自动发送邮件。选择邮箱提供商(如Aoksend、Mailgun、AWS SES),注册并获取API密钥,设置权限和验证。编写代码调用API(示例代码提供),并在用户注册、订单处理等事件触发时发送邮件,提升效率和准确性。
|
17天前
|
安全 API 数据安全/隐私保护
Hotmail邮箱API发送邮件有什么好处
Hotmail邮箱API提供便捷的邮件发送服务,支持自动化、批量发送,确保邮件可靠、及时到达。它兼容多种格式,包含丰富功能如附件、模板,且安全加密,易于集成。AokSend是高效发信服务,支持触发式接口和SMTP/API,适用于大规模验证码发送。
|
17天前
|
API 开发者
Foxmail邮箱API发送邮件的步骤
使用Foxmail邮箱API发送邮件涉及五个步骤:注册开发者账号获取API密钥,配置API参数,构建邮件内容(主题、收件人、正文),通过API发送邮件请求并附带密钥,以及处理服务器返回的发送结果。AokSend提供稳定高效的发信服务,支持SMTP/API接口,适合大量邮件发送需求。确保遵循API规范以确保邮件成功送达。
|
Java Shell 数据安全/隐私保护
如何利用我们搭建的Mail的发送邮件服务工具
如何利用我们搭建的Mail的发送邮件服务工具
如何利用我们搭建的Mail的发送邮件服务工具
|
安全 Java 网络安全
Java Mail---SMTP、POP3协议-DOS下手动收发邮件演示过程
Java Mail---SMTP、POP3协议-DOS下手动收发邮件演示过程
247 0
Java Mail---SMTP、POP3协议-DOS下手动收发邮件演示过程