`
wang_decheng
  • 浏览: 49046 次
  • 性别: Icon_minigender_1
  • 来自: 烟台
文章分类
社区版块
存档分类
最新评论

用java发送邮件

阅读更多
//处理要发送的html文件,主要是针对html文件中的图片 

            private String getContent(String searchString, String mailContent) { 

                try { 

                    Parser parser = Parser.createParser(new String(mailContent.getBytes(), ISO8859_1)); 

                    Node[] images = parser.extractAllNodesThatAre(ImageTag.class); 

                    for(int i=0;i<images.length;i++) { 

                        ImageTag imgTag = (ImageTag) images[i]; 

                        if(!imgTag.getImageURL().toLowerCase().startsWith("http://")) 

                            arrayList1.add(imgTag.getImageURL()); 

                    } 

                } catch (UnsupportedEncodingException e1) { 

                } catch (ParserException e) {} 

                String afterReplaceStr = mailContent; 

                //在html文件中用"cid:"+Content-ID来替换原来的图片链接 

                for (int m = 0; m < arrayList1.size(); m++) { 

                    arrayList2.add(createRandomStr()); 

                    String addString = "cid:" + (String) arrayList2.get(m); 

                    afterReplaceStr = mailContent.replaceAll( 

                            (String) arrayList1.get(m), addString); 

                } 

                return afterReplaceStr; 

            } 

            //产生一个随机字符串,为了给图片设定Content-ID值 

            private String createRandomStr() { 

                char[] randomChar = new char[8]; 

                for (int i = 0; i < 8; i++) { 

                    randomChar[i] = (char) (Math.random() * 26 + 'a'); 

                } 

                String replaceStr = new String(randomChar); 

                return replaceStr; 

            } 

            private final static String ISO8859_1 = "8859_1"; 

        }; 

    } 

    /** 

     * 用于实现邮件发送用户验证 

     * @see javax.mail.Authenticator#getPasswordAuthentication 

     */ 

    protected PasswordAuthentication getPasswordAuthentication() { 

        return new PasswordAuthentication(username, userpasswd); 

    } 

    /** 

     * 设置邮件标题 

     * @param mailSubject 

     * @throws MessagingException 

     */ 

    public void setSubject(String mailSubject) throws MessagingException { 

        this.mailSubject = mailSubject; 

        mailMessage.setSubject(mailSubject); 

    } 

    /** 

     * 所有子类都需要实现的抽象方法,为了支持不同的邮件类型 

     * @param mailContent 

     * @throws MessagingException 

     */ 

    protected abstract void setMailContent(String mailContent) throws MessagingException; 

    /** 

     * 设置邮件发送日期 

     * @param sendDate 

     * @throws MessagingException 

     */ 

    public void setSendDate(Date sendDate) throws MessagingException { 

        this.mailSendDate = sendDate; 

        mailMessage.setSentDate(sendDate); 

    } 

    /** 

     * 设置邮件发送附件 

     * @param attachmentName 

     * @throws MessagingException 

     */ 

    public void setAttachments(String attachmentName) throws MessagingException { 

        messageBodyPart = new MimeBodyPart(); 

        DataSource source = new FileDataSource(attachmentName); 

        messageBodyPart.setDataHandler(new DataHandler(source)); 

        int index = attachmentName.lastIndexOf(File.separator); 

        String attachmentRealName = attachmentName.substring(index + 1); 

        messageBodyPart.setFileName(attachmentRealName); 

        multipart.addBodyPart(messageBodyPart); 

    } 

    /** 

     * 设置发件人地址 

     * @param mailFrom 

     * @throws MessagingException 

     */ 

    public void setMailFrom(String mailFrom) throws MessagingException { 

        mailFromAddress = new InternetAddress(mailFrom); 

        mailMessage.setFrom(mailFromAddress); 

    } 

    /** 

     * 设置收件人地址,收件人类型为to,cc,bcc(大小写不限) 

     * @param mailTo   邮件接收者地址 

     * @param mailType 值为to,cc,bcc 

     * @author Liudong 

     */ 

    public void setMailTo(String[] mailTo, String mailType) throws Exception { 

        for (int i = 0; i < mailTo.length; i++) { 

            mailToAddress = new InternetAddress(mailTo[i]); 

            if (mailType.equalsIgnoreCase("to")) { 

                mailMessage.addRecipient(Message.RecipientType.TO,mailToAddress); 

            } else if (mailType.equalsIgnoreCase("cc")) { 

                mailMessage.addRecipient(Message.RecipientType.CC,mailToAddress); 

            } else if (mailType.equalsIgnoreCase("bcc")) { 

                mailMessage.addRecipient(Message.RecipientType.BCC,mailToAddress); 

            } else { 

                throw new Exception("Unknown mailType: " + mailType + "!"); 

            } 

        } 

    } 

    /** 

     * 开始发送邮件 

     * @throws MessagingException 

     * @throws SendFailedException 

     */ 

    public void sendMail() throws MessagingException, SendFailedException { 

        if (mailToAddress == null) 

            throw new MessagingException("请你必须你填写收件人地址!"); 

        mailMessage.setContent(multipart); 

        Transport.send(mailMessage); 

    } 

    /** 

     * 邮件发送测试 

     * @param args 

     */ 

    public static void main(String args[]) { 

        String mailHost = "smtp.163.com"; //发送邮件服务器地址 

        String mailUser = "hELLOwORD";   //发送邮件服务器的用户帐号 

        String mailPassword = "******";   //发送邮件服务器的用户密码 

        String[] toAddress = {"ttoc@163.com"}; 

        //使用超文本格式发送邮件 

        MailSender sendmail = MailSender.getHtmlMailSender(mailHost, mailUser,mailPassword); 

        //使用纯文本格式发送邮件 

        //MailSender sendmail = MailSender.getTextMailSender(mailHost, mailUser,mailPassword); 

        try { 

            sendmail.setSubject("要发送的标题?"); 

            sendmail.setSendDate(new Date()); 

            String content = "<H1>hELLOwORD's Test</H1><img src=\"http://www.javayou.com/images/logo.gif\">"; 

            //请注意如果是本地图片比如使用斜杠作为目录分隔符,如下所示,不支持中文???!!! 

            content+="<img src=\"C:/Documents and Settings/Administrator/My Documents/My Pictures/aaa.jpg\"/>"; 

            sendmail.setMailContent(content); // 

            sendmail.setAttachments("E:\\ConList.exe");//文章附件 

            sendmail.setMailFrom("ttoc@163.com");//显示谁发送的 

            sendmail.setMailTo(toAddress, "to");//cc抄送,bcc 暗送 

            //sendmail.setMailTo(toAddress, "cc");//设置抄送给... 

            //开始发送邮件 

            System.out.println("正在发送邮件,请稍候......."); 

            sendmail.sendMail(); 

            System.out.println("恭喜你,邮件已经成功发送!"); 

        } catch (Exception ex) { 

            ex.printStackTrace(); 

        } 

    } 

} 

 

0
0
分享到:
评论

相关推荐

    java发邮件 java发email

    Java发送电子邮件是一个常见的任务,尤其在自动化通知、报表发送或者用户验证等场景中。下面将详细解释如何使用Java来发送邮件,并提供相关的知识点。 首先,Java通过JavaMail API提供了发送邮件的功能。JavaMail ...

    java发送邮件工具

    java发送邮件工具类,用于java程序实现邮件的发送功能

    Java发送outlook邮件

    总之,Java发送Outlook邮件主要涉及JavaMail API的使用,包括配置SMTP服务器、创建邮件对象、设置邮件属性、添加附件和发送邮件。对于Notes邮件,可能需要使用IBM Domino Java API。理解这些概念和技术是Java开发者...

    使用java发送邮件的方法

    使用java发送邮件的方法,直接可以拿来用,最近找了个例子,稍微整理了一下

    JAVA发送邮件实现,消息格式化

    本文将详细讲解如何使用Java发送邮件,并着重介绍消息格式化的概念及其重要性。 首先,发送邮件的核心类是JavaMail API提供的`javax.mail`包中的`Session`, `Message`, `Transport`等类。为了发送邮件,我们需要...

    java发送邮件jar包2个

    java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个java发送邮件jar包2个...

    java发送邮件完整程序

    在这个"java发送邮件完整程序"中,我们将会探讨如何使用Java语言来构建一个邮件发送功能,包括所需的库、步骤以及关键代码片段。 首先,Java Mail API是实现邮件发送的核心库,它提供了丰富的接口和类来处理邮件的...

    javamail"java发送邮件所需要的包

    描述中提到的“java发送邮件所需要的包”即是指JavaMail API,它包含了一系列的类和接口,例如`javax.mail.Session`,它是邮件会话对象,用于配置邮件服务器的连接参数;`javax.mail.Transport`,用于发送邮件;`...

    java实现邮件发送(三种发送方式都有)

    Java发送邮件是软件开发中常见的需求,特别是在自动化通知、用户验证和客户服务等方面。在这个主题下,我们将探讨三种Java实现邮件发送的方式,以及如何通过提供的代码和参考资料进行实践。 首先,让我们了解一下...

    使用Java发送邮件

    本文将详细讲解如何使用Java发送邮件,包括所需的库、配置以及具体的代码实现。 首先,JavaMail API是Java平台上的标准邮件发送库,它提供了处理邮件的所有功能。在使用Java发送邮件时,我们需要引入JavaMail API的...

    java发送邮件功能

    Java发送邮件功能是Java开发中常见的一项任务,它允许开发者通过编程的方式实现电子邮件的发送,包括正文内容、附件以及抄送等高级功能。在Java中,我们主要利用JavaMail API来实现这一目标。 JavaMail API是一个...

    java发送邮件的实例

    总的来说,Java发送邮件涉及到了网络通信、邮件协议(如SMTP)、JavaMail API的使用,以及可能的认证机制。理解这些知识点对于实现一个稳定的邮件发送功能至关重要。在实际操作时,确保正确配置邮件服务信息,并对...

    用java发邮件(保证秒懂)

    通过实例,用java发邮件,保证秒懂, Xmail xmail = new Xmail(); xmail.setUsername("/////@163.com"); //设置发件人邮箱名字 xmail.setPassword("*******"); //邮箱密码 xmail.setHost("smtp.163.com"); //...

    JAVA发送邮件示例代码

    本文将详细讲解如何使用Java发送邮件,包括所需的库、基本概念以及实际示例代码。 首先,JavaMail API是Java平台用于处理邮件服务的核心库。要发送邮件,你需要在项目中引入JavaMail的依赖。如果你使用的是Maven,...

    Java邮件发送.zip

    总结来说,Java发送邮件涉及以下关键知识点: 1. JavaMail API的使用,包括`javax.mail`和`javax.mail.internet`包。 2. 配置SMTP服务器的参数,如主机名、端口、安全协议等。 3. 使用`Session`进行会话初始化和...

    JAVA发送邮件Demo

    本文将详细讲解如何使用Java发送邮件,基于提供的标题"JAVA发送邮件Demo"和描述,我们将快速入门并理解核心概念。 首先,JavaMail API是Java中用于处理邮件的库,它提供了发送、接收邮件的功能。要使用JavaMail,你...

    java发送邮件源码

    本示例主要关注如何使用Java发送邮件,并结合`Mail.jar`库来实现这一功能。`Mail.jar`通常包含了JavaMail API,这是一个用于处理邮件的开源库。 首先,我们需要在项目中引入JavaMail API的相关依赖。如果是在Maven...

    基于Java的邮件发送模板

    在Java开发中,发送邮件是一项常见的任务,尤其在企业级应用和服务中,它用于通知、确认订单、发送报告等。本篇文章将详细讲解如何利用Java实现邮件发送,并结合Apache的相关库来创建邮件发送模板,以提升效率和用户...

Global site tag (gtag.js) - Google Analytics