码迷,mamicode.com
首页 > 编程语言 > 详细

java发送邮件

时间:2014-10-20 19:39:40      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:java发送邮件

一、创建项目
    项目名称:javamaildemo
三、添加jar包
    1.在项目中创建lib包
        /lib
    2.在包添加jar包
        activation.jar
        mail.jar
三、创建发送邮件的类
    1.在src下创建包
        包名:cn.jbit.javamaildemo.domain
    2.在包下创建发送邮件类
        类名:SendMail.java
        类内容:
        public class SendMail {
            // 收件人邮箱地址
            private String to;
            // 发件人邮箱地址
            private String from;
            // SMTP服务器地址
            private String smtpServer;
            // 登录SMTP服务器的用户名
            private String username;
            // 登录SMTP服务器的密码
            private String password;
            // 邮件主题
            private String subject;
            // 邮件正文
            private String content;
            // 记录所有附件文件的集合
            List<String> attachments = new ArrayList<String>();
        
            // 无参数的构造器
            public SendMail() {
            }
        
            public SendMail(String to, String from, String smtpServer, String username,
                    String password, String subject, String content) {
                this.to = to;
                this.from = from;
                this.smtpServer = smtpServer;
                this.username = username;
                this.password = password;
                this.subject = subject;
                this.content = content;
            }
        
            // to属性的setter方法
            public void setTo(String to) {
                this.to = to;
            }
        
            // from属性的setter方法
            public void setFrom(String from) {
                this.from = from;
            }
        
            // smtpServer属性的setter方法
            public void setSmtpServer(String smtpServer) {
                this.smtpServer = smtpServer;
            }
        
            // username属性的setter方法
            public void setUsername(String username) {
                this.username = username;
            }
        
            // password属性的setter方法
            public void setPassword(String password) {
                this.password = password;
            }
        
            // subject属性的setter方法
            public void setSubject(String subject) {
                this.subject = subject;
            }
        
            // content属性的setter方法
            public void setContent(String content) {
                this.content = content;
            }
        
            // 把邮件主题转换为中文
            public String transferChinese(String strText) {
                try {
                    strText = MimeUtility.encodeText(new String(strText.getBytes(),
                            "utf-8"), "GB2312", "B");
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return strText;
            }
        
            // 增加附件,将附件文件名添加的List集合中
            public void attachfile(String fname) {
                attachments.add(fname);
            }
        
            // 发送邮件
            public boolean send() {
                // 创建邮件Session所需的Properties对象
                Properties props = new Properties();
                props.put("mail.smtp.host", smtpServer);
                props.put("mail.smtp.auth", "true");
                // 创建Session对象
                Session session = Session.getDefaultInstance(props
                // 以匿名内部类的形式创建登录服务器的认证对象
                        , new Authenticator() {
                            public PasswordAuthentication getPasswordAuthentication() {
                                return new PasswordAuthentication(username, password);
                            }
                        });
                try {
                    // 构造MimeMessage并设置相关属性值
                    MimeMessage msg = new MimeMessage(session);
                    // 设置发件人
                    msg.setFrom(new InternetAddress(from));
                    // 设置收件人
                    InternetAddress[] addresses = { new InternetAddress(to) };
                    msg.setRecipients(Message.RecipientType.TO, addresses);
                    // 设置邮件主题
                    subject = transferChinese(subject);
                    msg.setSubject(subject);
                    // 构造Multipart
                    Multipart mp = new MimeMultipart();
                    // 向Multipart添加正文
                    MimeBodyPart mbpContent = new MimeBodyPart();
                    mbpContent.setText(content);
                    // 将BodyPart添加到MultiPart中
                    mp.addBodyPart(mbpContent);
                    // 向Multipart添加附件
                    // 遍历附件列表,将所有文件添加到邮件消息里
                    for (String efile : attachments) {
                        MimeBodyPart mbpFile = new MimeBodyPart();
                        // 以文件名创建FileDataSource对象
                        FileDataSource fds = new FileDataSource(efile);
                        // 处理附件
                        mbpFile.setDataHandler(new DataHandler(fds));
                        mbpFile.setFileName(fds.getName());
                        // 将BodyPart添加到MultiPart中
                        mp.addBodyPart(mbpFile);
                    }
                    // 清空附件列表
                    attachments.clear();
                    // 向Multipart添加MimeMessage
                    msg.setContent(mp);
                    // 设置发送日期
                    msg.setSentDate(new Date());
                    // 发送邮件
                    Transport.send(msg);
                } catch (MessagingException mex) {
                    mex.printStackTrace();
                    return false;
                }
                return true;
            }
        }
四、测试邮件发送
    1.在项目中创建test目录
        /test
    2.在目录下创建包
        包名:cn.jbit.javamaildemo.service
    3.在包下创建测试类
        类名:SendMailTest.java
        类内容:
            public class SendMailTest {
            
                /**
                 * @param args
                 */
                public static void main(String[] args) {
                    SendMail sendMail = new SendMail();
                    /*
                     * 126邮箱:smtp.126.com
                     * 163邮箱:smtp.163.com
                     * QQ邮箱:smtp.qq.com
                     */
                    sendMail.setSmtpServer("smtp.163.com");
                    // 此处设置登录的用户名
                    sendMail.setUsername("");
                    // 此处设置登录的密码
                    sendMail.setPassword("");
                    // 设置收件人的地址
                    sendMail.setTo("");
                    // 设置发送人地址
                    sendMail.setFrom("");
                    // 设置标题
                    sendMail.setSubject("测试邮件标题!");
                    // 设置内容
                    sendMail.setContent("你好这是一个带多附件的测试邮件!");
                    // 粘贴附件
                    sendMail.attachfile("D:/1.jpg");
                    if (sendMail.send()) {
                        System.out.println("---邮件发送成功---");
                    }
                }
            }

本文出自 “素颜” 博客,请务必保留此出处http://suyanzhu.blog.51cto.com/8050189/1565971

java发送邮件

标签:java发送邮件

原文地址:http://suyanzhu.blog.51cto.com/8050189/1565971

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!