用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

发送邮件

2017-09-07 作者: 低调的小飞举报

[java]代码库

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
/**
 *
 * 发送邮件
 */
public class SMTPSender {
 
    private MimeMessage mimeMsg; // MIME邮件对象
 
    private Session session; // 邮件会话对象
    private Properties props; // 系统属性
    private boolean needAuth = false; // smtp是否需要认证
 
    private String username = ""; // smtp认证用户名和密码
    private String password = "";
 
    private Multipart mp; // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象
 
    public SMTPSender(String smtp) {
        setSmtpHost(smtp);
        createMimeMessage();
    }
 
    public void setHost(String smtp) {
        setSmtpHost(smtp);
        createMimeMessage();
 
    }
 
    /**
     *
     * @param hostName
     */
    public void setSmtpHost(String hostName) {
        System.out.println("设置系统属性:mail.smtp.host = " + hostName);
        if (props == null)
            props = System.getProperties(); // 获得系统属性对象
 
        props.put("mail.smtp.host", hostName); // 设置SMTP主机
    }
 
    /**
     *
     * @return
     */
    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
     */
    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
     * @param pass
     */
    public void setNamePass(String name, String pass) {
        username = name;
        password = pass;
    }
 
    /**
     *
     * @param mailSubject
     * @return
     */
    public boolean setSubject(String mailSubject) {
        System.out.println("设置邮件主题!");
        try {
            mimeMsg.setSubject(mailSubject);
            return true;
        } catch (Exception e) {
            System.err.println("设置邮件主题发生错误!");
            return false;
        }
    }
 
    /**
     *
     * @param mailBody
     * @return
     */
    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 filename
     * @return
     */
    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 from
     * @return
     */
    public boolean setFrom(String from) {
        System.out.println("设置发信人!");
        try {
            mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人
            return true;
        } catch (Exception e) {
            return false;
        }
    }
 
    /**
     *
     * @param to
     * @return
     */
    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 copyto
     * @return
     */
    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;
        }
    }
 
    /**
     *
     * @return
     */
    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;
        }
    }
 
    /**
     *
     * @param toemail
     * @param title
     * @param msg
     * @return
     */
    public boolean initMail(String toemail, String title, String msg) {
        String mailbody = msg;
        System.out.println("toemail:" + toemail);
 
        SMTPSender themail = new SMTPSender(mailbody);
        themail.setHost("smtp.163.com");
        themail.setNeedAuth(true);
 
        if (themail.setSubject(title) == false) {
            System.out.println("setsubject fail");
        }
 
        if (themail.setBody(mailbody) == false) {
            System.out.println("setbody fail");
        }
 
        if (themail.setTo(toemail) == false) {
            System.out.println("setto fail");
        }
 
        if (themail.setFrom("xxx@163.com") == false) {
            System.out.println("setfrom fail");
            themail.setNamePass("xxx", "xxx");
        }
 
        if (themail.sendout() == false) {
            return false;
        }
 
        return true;
    }
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...