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

📄 mailer.java

📁 java 客户端发邮件的简单程序代码 作为学习者的参考
💻 JAVA
字号:
/*
 * 邮件信息配置类
 */
package com.wondtech.mail;

/**
 * @author Administrator
 */

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.MessagingException;
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 org.apache.log4j.Logger;

import com.wondtech.framework.util.StringHelper;

public class Mailer
{

    private static Logger logger = Logger.getLogger(Mailer.class);

    private MimeMessage mimeMsg; // MIME邮件对象

    private Session session; // 邮件会话对象

    private Properties props; // 系统属性

    private String username = ""; // smtp验证用户名与密码

    private String password = "";

    private Multipart mp; // Multipart对象,邮件内容,标题,附件等內容均添加到其中后再生成MimeMessage对象

    public Mailer()
    {
        setSmtpHost("mail.sms2job.com");// 指定邮件服务器地址
        createMimeMessage();
    }

    public Mailer(String smtp)
    {
        setSmtpHost(smtp);
        createMimeMessage();
    }

    /**
     * @param hostName
     *            String
     */
    public void setSmtpHost(String hostName)
    {
        logger.info("设置系统属性:mail.smtp.host = " + hostName);
        if (props == null)
        {
            props = System.getProperties(); // 获取系统属性
        }

        props.put("mail.smtp.host", hostName); // 设置SMTP主机
    }

    /**
     * @return boolean
     */
    public boolean createMimeMessage()
    {
        try
        {
            logger.info("准备获取邮件会话对象?!");
            session = Session.getDefaultInstance(props, null);
        }
        catch (Exception e)
        {
            logger.error("获取邮件会话对象出错?!" + e);
            return false;
        }

        logger.info("准备创建MIME邮件对象?!");
        try
        {
            mimeMsg = new MimeMessage(session);
            mp = new MimeMultipart();

            return true;
        }
        catch (Exception e)
        {
            logger.error("创建MIME邮件对象失败?!" + e);
            return false;
        }
    }

    /**
     * @param need
     *            boolean
     */
    public void setNeedAuth(boolean need)
    {
        logger.info("设置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)
    {
        logger.info("设置邮件主题?!");
        mailSubject = StringHelper.toGBK(mailSubject);
        try
        {
            mimeMsg.setSubject(mailSubject);
            return true;
        }
        catch (Exception e)
        {
            logger.error("设置邮件主题出错?!");
            return false;
        }
    }

    /**
     * @param mailBody
     *            String
     */
    public boolean setBody(String mailBody, boolean isHtml)
    {
        mailBody = StringHelper.toGBK(mailBody);
        try
        {
            BodyPart bp = new MimeBodyPart();
            if (isHtml)
            {
                bp.setContent("<META http-equiv=Content-Type content=text/html; charset=GBK>" + mailBody,
                        "text/html; charset=GBK");
            }
            else
            {
                bp.setText(mailBody);
            }
            mp.addBodyPart(bp);

            return true;
        }
        catch (Exception e)
        {
            logger.error("设置邮件正文出错?!" + e);
            return false;
        }
    }

    /**
     * @param name
     *            String
     * @param pass
     *            String
     */
    public boolean addFileAffix(String filename)
    {

        logger.info("增加邮件附件?!" + 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)
        {
            logger.error("增加邮件附件?!" + filename + "出错?!" + e);
            return false;
        }
    }

    /**
     * @param name
     *            String
     * @param pass
     *            String
     */
    public boolean setFrom(String from)
    {
        logger.info("设置发信人!");
        try
        {
            mimeMsg.setFrom(new InternetAddress(from));
            return true;
        }
        catch (Exception 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)
        {
            return false;
        }
    }

    public boolean addTo(String to)
    {
        if (to == null)
            return false;

        try
        {
            mimeMsg.addRecipients(Message.RecipientType.TO, to);
            return true;
        }
        catch (MessagingException e)
        {
            e.printStackTrace();
            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)
        {
            return false;
        }
    }

    public boolean addCopyTo(String to)
    {
        if (to == null)
        {
            return false;
        }

        try
        {
            mimeMsg.addRecipients(Message.RecipientType.CC, to);
            return true;
        }
        catch (MessagingException e)
        {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * @param name
     *            String
     * @param pass
     *            String
     */
    public void send() throws Exception
    {

        mimeMsg.setContent(mp);
        mimeMsg.saveChanges();
        logger.info("正在发发送邮件......");

        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);

        logger.info("邮件发送成功!");
        transport.close();
    }
}

⌨️ 快捷键说明

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