zoukankan      html  css  js  c++  java
  • javamail的使用方法

    1.参考文献

    https://javaee.github.io/javamail/?xd_co_f=56d1d069-5c5e-41ff-bf54-df52d3d6ccb7

    2.javax.mail.jar的下载地址

    https://github.com/javaee/javamail/releases

    3.在eclipse中导入jar包

    流程如下 

    一、在项目名上右击,依次点击【New】-->【Floder】-->命名为lib

    二、将需要导入的jar包从本地文件系统复制或拖拽到lib文件夹内,弹出的提示框点copy files ok

    三、配置路径

    我们再在项目名上右击,依次选择【Build Path】-->【Configure Build Path...】。

    先选中【Libraries】页,再从右边的按钮中点击【add JARs...】

    我们在刚才打开的【Libraries】页中可以看到我们引入的jar包的名称。点击【OK】确认。

     

     

    二、Demo

    package com.star.networktest;
    
    
    import javax.mail.BodyPart;
    import javax.mail.Message;
    import javax.mail.Multipart;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.*;
    import java.util.*;
    import javax.activation.*;
    
    public class Access {
            private String host = ""; // smtp服务器
            private String from = ""; // 发件人地址
            private String to = ""; // 收件人地址
            private String affix = ""; // 附件地址
            private String affixName = ""; // 附件名称
            private String user = ""; // 用户名
            private String pwd = ""; // 密码
            private String subject = ""; // 邮件标题
    
            public void setAddress(String from, String to, String subject) {
                this.from = from;
                this.to = to;
                this.subject = subject;
            }
    
            public void setAffix(String affix, String affixName) {
                this.affix = affix;
                this.affixName = affixName;
            }
    
            public void send(String host, String user, String pwd) {
                this.host = host;
                this.user = user;
                this.pwd = pwd;
    
                Properties props = new Properties();
    
                // 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)
                props.put("mail.smtp.host", host);
                // 需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)
                props.put("mail.smtp.auth", "true");
    
                // 用刚刚设置好的props对象构建一个session
                Session session = Session.getDefaultInstance(props);
    
                // 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使
                // 用(你可以在控制台(console)上看到发送邮件的过程)
                session.setDebug(true);
    
                // 用session为参数定义消息对象
                MimeMessage message = new MimeMessage(session);
                try {
                    // 加载发件人地址
                    message.setFrom(new InternetAddress(from));
                    // 加载收件人地址
                    message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
                    // 加载标题
                    message.setSubject(subject);
    
                    // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
                    Multipart multipart = new MimeMultipart();
    
                    // 设置邮件的文本内容
                    BodyPart contentPart = new MimeBodyPart();
                    contentPart.setText("邮件的具体内容在此");
                    multipart.addBodyPart(contentPart);
                    // 添加附件
                    BodyPart messageBodyPart = new MimeBodyPart();
                    DataSource source = new FileDataSource(affix);
                    // 添加附件的内容
                    messageBodyPart.setDataHandler(new DataHandler(source));
                    // 添加附件的标题
                    // 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
                    // 报错参考https://jingyan.baidu.com/article/e73e26c0a2617a24adb6a7d4.html
                    sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
                    messageBodyPart.setFileName("=?GBK?B?"
                            + enc.encode(affixName.getBytes()) + "?=");
                    multipart.addBodyPart(messageBodyPart);
    
                    // 将multipart对象放到message中
                    message.setContent(multipart);
                    // 保存邮件
                    message.saveChanges();
                    // 发送邮件
                    Transport transport = session.getTransport("smtp");
                    // 连接服务器的邮箱
                    transport.connect(host, user, pwd);
                    // 把邮件发送出去
                    transport.sendMessage(message, message.getAllRecipients());
                    transport.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
    
            public static void main(String[] args) {
                Access cn = new Access();
                // 设置发件人地址、收件人地址和邮件标题
                cn.setAddress("starzhai@tom.com", "1449268538@qq.com", "网络连通状态检测报告");
                // 设置要发送附件的位置和标题
                cn.setAffix("G:/onlinelog.txt", "onlinelog.txt");
                
                /**
                 * 设置smtp服务器以及邮箱的帐号和密码
                 * 用QQ 邮箱作为发生者不好使 (原因不明)
                 * 163 邮箱可以,但是必须开启  POP3/SMTP服务 和 IMAP/SMTP服务
                 * 因为程序属于第三方登录,所有登录密码必须使用163的授权码
                 */
                cn.send("smtp.tom.com", "starzhai@tom.com", "自己的邮箱密码");
    
            }
        }
  • 相关阅读:
    out/host/linuxx86/obj/EXECUTABLES/aapt_intermediates/aapt 64 32 操作系统
    linux 查看路由器 电脑主机 端口号 占用
    linux proc进程 pid stat statm status id 目录 解析 内存使用
    linux vim 设置大全详解
    ubuntu subclipse svn no libsvnjavahl1 in java.library.path no svnjavahl1 in java.library.path no s
    win7 安装 ubuntu 双系统 详解 easybcd 工具 不能进入 ubuntu 界面
    Atitit.json xml 序列化循环引用解决方案json
    Atitit.编程语言and 自然语言的比较and 编程语言未来的发展
    Atitit.跨语言  文件夹与文件的io操作集合  草案
    Atitit.atijson 类库的新特性设计与实现 v3 q31
  • 原文地址:https://www.cnblogs.com/StarZhai/p/13657696.html
Copyright © 2011-2022 走看看