⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mailutil.java

📁 电信的网厅的整站代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            Session session = Session.getDefaultInstance(properties, new Authenticator() {
                public PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(user, password);
                }
            });//获得邮件会话对象

            MimeMessage mimeMsg = new MimeMessage(session);//创建MIME邮件对象

            if (sender != null) //设置发件人地址
                mimeMsg.setFrom(new InternetAddress(sender));

            if (receiver != null) //设置收件人地址
                mimeMsg.setRecipients(Message.RecipientType.TO, parse(receiver));

            if (copyReceiver != null) //设置抄送人地址
                mimeMsg.setRecipients(Message.RecipientType.CC, parse(copyReceiver));

            if (hiddenReceiver != null) //设置暗送人地址
                mimeMsg.setRecipients(Message.RecipientType.BCC, parse(hiddenReceiver));

            if (subject != null) //设置邮件主题
                mimeMsg.setSubject(subject, "GBK");

            MimeBodyPart part = new MimeBodyPart();//mail内容部分
            part.setText(content == null ? "" : content, "GBK");
            part.setContent(this.getContent(), TEXT_H + ";charset=GBK");

            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(part); //在 Multipart 中增加mail内容部分

            if (affixPath != null) //mail附件部分
            {
                ArrayList parts = parsePath(affixPath);
                for (int i = 0; i < parts.size(); i++) {
                    multipart.addBodyPart((MimeBodyPart) parts.get(i));
                }
            }
            mimeMsg.setContent(multipart); //增加 Multipart 到信息体
            mimeMsg.setSentDate(new Date());//设置发送日期

            Transport.send(mimeMsg); //发送邮件
        } else {
            // 通过Socket发送电子邮件。
        	try {
        		this.sendMail(receiver);
			} catch (Exception ex) {
				throw new MessagingException(ex.getMessage());
			}
        }
    }

    /**
     * <p>Title: 电子邮件实用工具 </p>
     * <p>Description: 解析地址集合字符串</p>
     * <p>Method:parse</p>
     * <p>Copyright: Copyright (c) 2005</p>
     * <p>Company: FuJian NewDoone </p>
     * @throws MessagingException mail发送失败
     * @author zengzc
     * @version 1.0
     */
    private InternetAddress[] parse(String addressSet) throws AddressException {
        ArrayList list = new ArrayList();

        StringTokenizer tokens = new StringTokenizer(addressSet, ";");
        while (tokens.hasMoreTokens()) {
            list.add(new InternetAddress(tokens.nextToken().trim()));
        }

        InternetAddress[] addressArray = new InternetAddress[list.size()];
        list.toArray(addressArray);
        return addressArray;
    }

    /**
     * <p>Title: 电子邮件实用工具 </p>
     * <p>Description: 解析附件路径字符串</p>
     * <p>Method:parsePath</p>
     * <p>Copyright: Copyright (c) 2005</p>
     * <p>Company: FuJian NewDoone </p>
     * @throws MessagingException mail发送失败
     * @author zengzc
     * @version 1.0
     */
    private ArrayList parsePath(String affixPath) throws MessagingException {
        ArrayList list = new ArrayList();

        StringTokenizer tokens = new StringTokenizer(affixPath, ";");
        while (tokens.hasMoreTokens()) {
            MimeBodyPart part = new MimeBodyPart();
            FileDataSource source = new FileDataSource(tokens.nextToken().trim());
            part.setDataHandler(new DataHandler(source));
            part.setFileName(source.getName());
            list.add(part);
        }

        return list;
    }

    /**
     * <p>Title: 电子邮件实用工具 </p>
     * <p>Description: 发送电子邮件</p>
     * <p>输入:发送者清单,用';'隔开</p>
     * <p>输入:邮件主题</p>
     * <p>输入:邮件内容</p>
     * <p>输入:发送者电子邮件,为了防止将来可能存在多个发送者邮件,因此该邮箱由发送者自行定义</p>
     * <p>配置文件:Email.properties</p>
     * <p>配置说明:EmailServerName--电子邮件服务器</p>
     * <p>		  FromAddress--发送者电子邮件</p>
     * <p>		  FromUser--发送者</p>
     * <p>		  FromUserPWD--发送者邮箱密码</p>
     * <p>		  ifSMTPauth--是否需要发送验证,字符型,true或者false</p>
     * <p>Method:initSetting</p>
     * <p>Copyright: Copyright (c) 2005</p>
     * <p>Company: FuJian NewDoone </p>
     * @throws MessagingException mail发送失败
     * @author zengzc
     * @version 1.0
     */
    public void initSetting(String recvList, String mailSubject, String mailContent) {
        try {
            ClassLoader cl = Thread.currentThread().getContextClassLoader();
            InputStream is = cl.getResourceAsStream("Email.properties");
            Properties dbProps = new Properties();
            dbProps.load(is);
            String mailserver = (String) dbProps.getProperty("EmailServerName");
            String fromaddress = (String) dbProps.getProperty("FromAddress");
            String fromuser = (String) dbProps.getProperty("FromUser");
            String fromuserPWD = (String) dbProps.getProperty("FromUserPWD");
            String ifSMTPauth = (String) dbProps.getProperty("ifSMTPauth");

            if (ifSMTPauth.trim().toUpperCase().equals("TRUE")) //需要进行身份验证
            {
                ifSMTPauth = "true";
            } else {
                ifSMTPauth = "false";
            }

            setSmtpHost(mailserver);
            setUser(fromuser);
            setPassword(fromuserPWD);

            setSender(fromaddress);
            setReceiver(recvList);
            setSubject(mailSubject);
            setContent(mailContent);

            //mail.setAffixPath("C:/BssSysFLD");  //添加附件
            FileLogger.getLogger().debug("Java Email服务器的ip:" + mailserver);
            FileLogger.getLogger().debug("邮件发送人的邮箱地址:" + fromaddress);

        } catch (IOException ex) {
            FileLogger.getLogger().error("没有取得服务器的路径:" + ex.getMessage(), ex);
        }
    }

    /**
     * <p>设置其他的发送人</p>
     * @param CopyRecv    抄送人电子邮件,用;隔开
     * @param HiddenRecv  暗松人电子邮件,用;隔开
     * @author 曾忠诚
     * @version 1.0
     */
    public void setOtherRecevier(String CopyRecv, String HiddenRecv) {
        setCopyReceiver(CopyRecv);
        setHiddenReceiver(HiddenRecv);
    }

    private void sendCommand(Parameters parms, String cmd) throws IOException {
        parms.mailOut.println(cmd);
        parms.mailIn.readLine();
    }

    /**发送数据到主机的方法
     */
    private void sendData(Parameters parms, String to, String subject, String message)
            throws IOException {
        parms.mailOut.println("data");
        parms.mailIn.readLine();
        StringBuffer mailContent = new StringBuffer();
        mailContent.append("FROM:").append(this.getSender());
        mailContent.append("\r\n");
        mailContent.append("TO:").append(to);
        mailContent.append("\r\n");
        mailContent.append("subject:").append(subject);
        mailContent.append("\r\n");
        mailContent.append("Mime-Version: 1.0");
        mailContent.append("\r\n");
        mailContent.append("Content-Type: ").append(TEXT_H).append(";");
        //mailContent.append("\r\n");
        mailContent.append(" charset=\"GBK\"");
        mailContent.append("\r\n");
        mailContent.append("Content-Transfer-Encoding: 7bit");
        mailContent.append("\r\n");
        mailContent.append("X-RCPT-TO: <").append(this.getSender()).append(">");
        mailContent.append("\r\n");
        mailContent.append("\r\n");
        mailContent.append(message);
        mailContent.append("\r\n.\r\nquit");
        parms.mailOut.println(mailContent.toString());
        parms.mailIn.readLine();
    }

    private void sendMail(String eMail)throws Exception {
        try {
            Parameters parms = new Parameters();
            parms.socket = new Socket(this.getSmtpHost(), 25);
            parms.mailOut = new PrintWriter(parms.socket.getOutputStream(), true);
            parms.mailIn = new BufferedReader(new InputStreamReader(parms.socket.getInputStream()));
            parms.mailIn.readLine();
            sendCommand(parms, "HELO fj.ct10000.com");
            sendCommand(parms, "mail from:" + this.getSender());
            sendCommand(parms, "rcpt to:" + eMail);
            String subject = this.getSubject();
            String message = this.getContent();
            sendData(parms, eMail, subject, message);
            parms.socket.close();
        } catch (Exception ex) {
            FileLogger.getLogger().warn(ex.getMessage(), ex);
            throw ex;
        }

    }

    class Parameters {
        Socket socket;
        PrintWriter mailOut;
        BufferedReader mailIn;
    }

    /**
     *
     * @param args
     * @author 曾忠诚
     * <p>测试方法</p>
     */
    public static void main(String[] args) {
        MailUtil mail = new MailUtil();
        mail.initSetting("janage@fj.ct10000.com", "这是邮件测试",
                "<html><body><font size=9pt>这是邮件测试</font></body></html>");
        try {
            mail.smtp();

            System.out.print("send success!");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -