利用javamail 发送邮件

package com.util.mail;

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;

/**
 * 发送邮件
 *
 * @author Admin
 *
 */
public class SendMail {

    /**
     * MiMe 邮件对象
     */
    private MimeMessage mimeMsg;
    /**
     * 保持会话的Session
     */
    private Session session;
    /**
     * 保存系统属性
     */
    private Properties props;
    /**
     * 是否需要验证
     */
    private boolean needAuth;

    /**
     * Multipart 对象,邮件内容、标题、附件等添加完成后生成MimeMessage 对象
     */
    private Multipart mp;

    /**
     * 用户名
     */
    private String username = "";
    /**
     * 密码
     */
    private String password = "";

//    public SendMail() {
//
//        setSmtpHost(getConfig.mailHost);// 如果没有指定邮件服务器,就从getConfig类中获取
//
//        createMimeMessage();
//
//    }

    public SendMail(String smtp) {

        setSmtpHost(smtp);

        createMimeMessage();

    }

    /**
     *
     * @param hostName
     *            String
     */

    public void setSmtpHost(String hostName) {  // hostName=smtp.msn.com

        System.out.println("设置系统属性:mail.smtp.host = " + hostName);

        if (props == null) {
            props = System.getProperties(); // 获得系统属性对象
        }
      
        /**
         * mail.smtp.host   发信服务器地址
         */
        props.put("mail.smtp.host", hostName); // 设置SMTP主机  

    }

    /**
     *
     * @return boolean
     */

    public boolean createMimeMessage()

    {

        try {

            System.out.println("准备获取邮件会话对象!");

            session = Session.getDefaultInstance(props, null); // 获得邮件会话对象
       
           
        }

        catch (Exception e) {

            System.err.println("获取邮件会话对象时发生错误!" + e);

            return false;

        }

        System.out.println("准备创建MIME邮件对象!");

        try {

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

            mp = new MimeMultipart();

            return true;

        }

        catch (Exception e) {

            System.err.println("创建MIME邮件对象失败!" + e);

            return false;

        }

    }

    /**
     *  是否需要验证
     *
     * @param need
     *            boolean
     */

    public void setNeedAuth(boolean need) {

        System.out.println("设置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) {
        System.out.println("设置邮件主题!");
            try {
                mimeMsg.setSubject(mailSubject);
            } catch (MessagingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return true;

   

       
    }

    /**
     *
     * @param mailBody
     *            String
     */

    public boolean setBody(String mailBody) {

        try {

            BodyPart bp = new MimeBodyPart();

            bp.setContent("" + mailBody, "text/html;charset=GB2312");

            mp.addBodyPart(bp);

            return true;

        }

        catch (Exception e) {

            System.err.println("设置邮件正文时发生错误!" + e);

            return false;

        }

    }

    /**
     *
     * @param name
     *            String
     *
     * @param pass
     *            String
     */

    public boolean addFileAffix(String filename) {

        System.out.println("增加邮件附件:" + 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) {

            System.err.println("增加邮件附件:" + filename + "发生错误!" + e);

            return false;

        }

    }

    /**
     *
     * @param name
     *            String
     *
     * @param pass
     *            String
     *           
     *     发信人的地址
     */

    public boolean setFrom(String from) {

        System.out.println("设置发信人!");

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

    }

    /**
     *
     * @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;
        }

    }

    /**
     *
     * @param name
     *            String
     *
     * @param pass
     *            String
     */

    public boolean sendout()

    {

        try {

            mimeMsg.setContent(mp);

            mimeMsg.saveChanges();

            System.out.println("正在发送邮件....");

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

            System.out.println("发送邮件成功!");

            transport.close();

            return true;

        }

        catch (Exception e)

        {

            System.err.println("邮件发送失败!" + e);

            return false;

        }

    }

    /**
     *
     * Just do it as this
     */

    public static void main(String[] args) {
       
        //邮件的主题为字符串
        String mailbody = "" + "dear!";

        SendMail themail = new SendMail("smtp.126.com");   //发送方服务器的地址

        themail.setNeedAuth(true);

        if (themail.setSubject("标题") == false){
            return;
        }
        if (themail.setBody(mailbody) == false){
            return;
        }
        if (themail.setTo("接受邮件地址,如: test@163.com") == false){
            return;
        }
        if (themail.setFrom("发送邮件地址,如:2010@126.com") == false){
            return;
        }
        if (themail.addFileAffix("c:\\boot.ini") == false){
            return;
        }
        themail.setNamePass("发送邮件名,和上面对应应该为:2010,注意不要添加:@126.com", "密码");

        if (themail.sendout() == false)
            return;

    }

}
注意要导入javamail 所需的必要jar包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值