精华内容
参与话题
问答
  • Java邮件发送详解

    万次阅读 多人点赞 2019-07-19 13:37:34
    电子邮件 要在网络上实现邮件功能,必须要有专门的邮件服务器。 这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。 SMTP服务器地址:一般是 smtp....

    电子邮件

    要在网络上实现邮件功能,必须要有专门的邮件服务器。

    这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。

    SMTP服务器地址:一般是 smtp.xxx.com比如163邮箱是smtp.163.comqq邮箱是smtp.qq.com

    电子邮箱(E-Mail地址)的获得需要在邮件服务器上进行申请。比如我们要使用QQ邮箱,就需要开通邮箱功能;
    在这里插入图片描述

    传输协议

    SMTP协议

    发送邮件:

    我们通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。

    POP3协议

    接收邮件:

    我们通常把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)。

    邮件收发原理

    在这里插入图片描述

    1. 首先通过smtp协议连接到Smtp服务器,然后发送一封邮件给网易的邮件服务器
    2. 网易分析发现需要去QQ的邮件服务器,通过smtp协议将邮件转投给QQ的Smtp服务器
    3. QQ将接收到的邮件存储在545646733@qq.com这个邮件账号的空间中
    4. 再通过Pop3协议连接到Pop3服务器收取邮件
    5. 从545646733@qq.com这个邮件账号的空间中取出邮件
    6. Pop3服务器将取出来的邮件送出去

    注意】有可能填写的收件人地址,发件人地址等信息都正确了,控制台也打印了正确的信息,但是在收件箱就是收不到信息。这是因为可能收件箱服务器拒收了你发的邮件(比如认为你的邮件是广告),这时候可能在垃圾箱里能找到,可能找不到。解决办法是重复的邮件内容不要多次发送,或者更换收件箱试试

    Java发送邮件

    概述

    我们将用代码完成邮件的发送。这在实际项目中应用的非常广泛,比如注册需要发送邮件进行账号激活,再比如OA项目中利用邮件进行任务提醒等等。

    使用Java发送 E-mail 十分简单,但是首先你应该准备 JavaMail API 和Java Activation Framework 。

    得到两个jar包:

    • mail.jar
    • activation.jar

    JavaMail 是sun公司(现以被甲骨文收购)为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如前面所讲的SMTP,POP3,IMAP,还有MIME等。我们在使用JavaMail API 编写邮件时,无须考虑邮件的底层实现细节,只要调用JavaMail 开发包中相应的API类就可以了。

    我们可以先尝试发送一封简单的邮件,首先请确保电脑可以连接网络。

    • 创建包含邮件服务器的网络连接信息的Session对象。
    • 创建代表邮件内容的Message对象
    • 创建Transport对象,连接服务器,发送Message,关闭连接

    主要有四个核心类,我们在编写程序时,记住这四个核心类,就很容易编写出Java邮件处理程序,如图所示:
    在这里插入图片描述

    纯文本邮件

    先在项目中导入jar包
    导入的就是在概述中提到的activation,jar和mail.jar包,如图所示:
    1563456199217.png

    QQ邮箱中获取对应的权限

    QQ邮箱需要安全验证,我们需要获取他对应的权限;

    进入QQ邮箱–>邮箱设置–>账户,下滑找到POP3/IMAP/SMTP/Exchange/CardDav/CalDav服务,开启POP3/SMTP服务,如图所示:
    在这里插入图片描述
    在这里插入图片描述
    记住这16位授权码,然后开始编写测试程序:

    import com.sun.mail.util.MailSSLSocketFactory;
    
    import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    
    public class SendEmail {
    
        public static void main(String[] args) throws Exception {
    
            Properties prop = new Properties();
            prop.setProperty("mail.host", "smtp.qq.com");  设置QQ邮件服务器
            prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议
            prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码
    
            // 关于QQ邮箱,还要设置SSL加密,加上以下代码即可
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            prop.put("mail.smtp.ssl.enable", "true");
            prop.put("mail.smtp.ssl.socketFactory", sf);
    
            //使用JavaMail发送邮件的5个步骤
    
            //创建定义整个应用程序所需的环境信息的 Session 对象
    
            Session session = Session.getDefaultInstance(prop, new Authenticator() {
                public PasswordAuthentication getPasswordAuthentication() {
                    //发件人邮件用户名、授权码
                    return new PasswordAuthentication("545646733@qq.com", "授权码");
                }
            });
    
    
            //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
            session.setDebug(true);
    
            //2、通过session得到transport对象
            Transport ts = session.getTransport();
    
            //3、使用邮箱的用户名和授权码连上邮件服务器
            ts.connect("smtp.qq.com", "545646733@qq.com", "授权码");
    
            //4、创建邮件
    
            //创建邮件对象
            MimeMessage message = new MimeMessage(session);
    
            //指明邮件的发件人
            message.setFrom(new InternetAddress("545646733@qq.com"));
    
            //指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
            message.setRecipient(Message.RecipientType.TO, new InternetAddress("545646733@qq.com"));
    
            //邮件的标题
            message.setSubject("只包含文本的简单邮件");
    
            //邮件的文本内容
            message.setContent("你好啊!", "text/html;charset=UTF-8");
    
            //5、发送邮件
            ts.sendMessage(message, message.getAllRecipients());
    
            ts.close();
        }
    
    }
    

    带图片和附件的邮件

    先认识两个类一个名词:

    MIME(多用途互联网邮件扩展类型)

    MimeBodyPart类

    javax.mail.internet.MimeBodyPart类 表示的是一个MIME消息,它和MimeMessage类一样都是从Part接口继承过来。

    MimeMultipart类

    javax.mail.internet.MimeMultipart是抽象类 Multipart的实现子类,它用来组合多个MIME消息。一个MimeMultipart对象可以包含多个代表MIME消息的MimeBodyPart对象。

    1563462870340.png

    创建包含内嵌图片的邮件

    前面的例子中是单独的使用HTML或者是纯文本内容,但是有时候我们需要在纯文本中使用内嵌的方式显示一些图片,因此就要将纯文本和内嵌图片单独存放在MimeBodyPart中然后再将其存放在一个Mimemultipart对象中即可。
    代码如下:

    import com.sun.mail.util.MailSSLSocketFactory;
    
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import java.util.Properties;
    
    public class SendImageEmail {
        public static void main(String[] args) throws Exception {
    
            Properties prop = new Properties();
            prop.setProperty("mail.host", "smtp.qq.com");  设置QQ邮件服务器
            prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议
            prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码
    
            // 关于QQ邮箱,还要设置SSL加密,加上以下代码即可
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            prop.put("mail.smtp.ssl.enable", "true");
            prop.put("mail.smtp.ssl.socketFactory", sf);
    
            //使用JavaMail发送邮件的5个步骤
    
            //1、创建定义整个应用程序所需的环境信息的 Session 对象
            Session session = Session.getDefaultInstance(prop, new Authenticator() {
                public PasswordAuthentication getPasswordAuthentication() {
                    //发件人邮件用户名、授权码
                    return new PasswordAuthentication("545646733@qq.com", "授权码");
                }
            });
    
    
            //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
            session.setDebug(true);
    
            //2、通过session得到transport对象
            Transport ts = session.getTransport();
    
            //3、使用邮箱的用户名和授权码连上邮件服务器
            ts.connect("smtp.qq.com", "545646733@qq.com", "授权码");
    
            //4、创建邮件
    
            //创建邮件
            MimeMessage message = new MimeMessage(session);
    
            // 设置邮件的基本信息
            //发件人
            message.setFrom(new InternetAddress("545646733@qq.com"));
            //收件人
            message.setRecipient(Message.RecipientType.TO, new InternetAddress("545646733@qq.com"));
            //邮件标题
            message.setSubject("带图片的邮件");
    
            // 准备邮件数据
    
            // 准备图片数据
            MimeBodyPart image = new MimeBodyPart();
            DataHandler dh = new DataHandler(new FileDataSource("src/resources/bz.jpg"));
            image.setDataHandler(dh);
            image.setContentID("bz.jpg");
    
            // 准备正文数据
            MimeBodyPart text = new MimeBodyPart();
            text.setContent("这是一封邮件正文带图片<img src='cid:bz.jpg'>的邮件", "text/html;charset=UTF-8");
    
            // 描述数据关系
            MimeMultipart mm = new MimeMultipart();
            mm.addBodyPart(text);
            mm.addBodyPart(image);
            mm.setSubType("related");
    
            //设置到消息中,保存修改
            message.setContent(mm);
            message.saveChanges();
    
            //5.发送邮件
            ts.sendMessage(message, message.getAllRecipients());
            ts.close();
        }
    }
    

    带图片和附件的复杂邮件发送
    代码如下:

    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import java.security.GeneralSecurityException;
    import java.util.Properties;
    
    public class SendFileMail {
        public static void main(String[] args) throws MessagingException, GeneralSecurityException {
    
            //创建一个配置文件保存并读取信息
            Properties properties = new Properties();
    
            //设置qq邮件服务器
            properties.setProperty("mail.host","smtp.qq.com");
            //设置发送的协议
            properties.setProperty("mail.transport.protocol","smtp");
            //设置用户是否需要验证
            properties.setProperty("mail.smtp.auth", "true");
    
    
            //=================================只有QQ存在的一个特性,需要建立一个安全的链接
            // 关于QQ邮箱,还要设置SSL加密,加上以下代码即可
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            properties.put("mail.smtp.ssl.enable", "true");
            properties.put("mail.smtp.ssl.socketFactory", sf);
    
            //=================================准备工作完毕
    
            //1.创建一个session会话对象;
            Session session = Session.getDefaultInstance(properties, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("545646733@qq.com", "授权码");
                }
            });
    
            //可以通过session开启Dubug模式,查看所有的过程
            session.setDebug(true);
    
    
            //2.获取连接对象,通过session对象获得Transport,需要捕获或者抛出异常;
            Transport tp = session.getTransport();
    
            //3.连接服务器,需要抛出异常;
            tp.connect("smtp.qq.com","545646733@qq.com","授权码");
    
            //4.连接上之后我们需要发送邮件;
            MimeMessage mimeMessage = imageMail(session);
    
            //5.发送邮件
            tp.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
    
            //6.关闭连接
            tp.close();
    
        }
    
    
        public static MimeMessage imageMail(Session session) throws MessagingException {
    
            //消息的固定信息
            MimeMessage mimeMessage = new MimeMessage(session);
    
            //邮件发送人
            mimeMessage.setFrom(new InternetAddress("545646733@qq.com"));
            //邮件接收人,可以同时发送给很多人,我们这里只发给自己;
            mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress("545646733@qq.com"));
            mimeMessage.setSubject("我也不知道是个什么东西就发给你了"); //邮件主题
    
    
            /*
            编写邮件内容
            1.图片
            2.附件
            3.文本
             */
    
            //图片
            MimeBodyPart body1 = new MimeBodyPart();
            body1.setDataHandler(new DataHandler(new FileDataSource("src/resources/yhbxb.png")));
            body1.setContentID("yhbxb.png"); //图片设置ID
    
            //文本
            MimeBodyPart body2 = new MimeBodyPart();
            body2.setContent("请注意,我不是广告<img src='cid:yhbxb.png'>","text/html;charset=utf-8");
    
            //附件
            MimeBodyPart body3 = new MimeBodyPart();
            body3.setDataHandler(new DataHandler(new FileDataSource("src/resources/log4j.properties")));
            body3.setFileName("log4j.properties"); //附件设置名字
    
            MimeBodyPart body4 = new MimeBodyPart();
            body4.setDataHandler(new DataHandler(new FileDataSource("src/resources/1.txt")));
            body4.setFileName(""); //附件设置名字
    
            //拼装邮件正文内容
            MimeMultipart multipart1 = new MimeMultipart();
            multipart1.addBodyPart(body1);
            multipart1.addBodyPart(body2);
            multipart1.setSubType("related"); //1.文本和图片内嵌成功!
    
            //new MimeBodyPart().setContent(multipart1); //将拼装好的正文内容设置为主体
            MimeBodyPart contentText =  new MimeBodyPart();
            contentText.setContent(multipart1);
    
            //拼接附件
            MimeMultipart allFile =new MimeMultipart();
            allFile.addBodyPart(body3); //附件
            allFile.addBodyPart(body4); //附件
            allFile.addBodyPart(contentText);//正文
            allFile.setSubType("mixed"); //正文和附件都存在邮件中,所有类型设置为mixed;
    
    
            //放到Message消息中
            mimeMessage.setContent(allFile);
            mimeMessage.saveChanges();//保存修改
    
    
            return mimeMessage;
    
        }
    
    }
    

    JavaWeb发送邮件

    现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件。邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息。今天我们也来实现一个这样的功能,用户注册成功之后,就将用户的注册信息以Email的形式发送到用户的注册邮箱当中,实现发送邮件功能就得借助于JavaMail了。

    项目实现:

    1. 新建一个JavaWeb项目,配置tomcat的参数,然后添加jar包(记得在tomcat目录下的common目录下也导包,不然会报500错误),并且添加实体类User,Servlet类RegisterServlet,工具类Sendmail,如图所示:
      在这里插入图片描述
    2. User类代码如下:
    public class User {
    
        private String username;
        private String password;
        private String email;
    
        public User() {
        }
    
        public User(String username, String password, String email) {
            this.username = username;
            this.password = password;
            this.email = email;
        }
    
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    ", email='" + email + '\'' +
                    '}';
        }
    }
    
    1. 前端注册页面register.jsp代码如下:
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>注册</title>
    </head>
    <body>
    
    <form action="${pageContext.request.contextPath}/RegisterServlet.do" method="post">
        用户名:<input type="text" name="username"><br/>
        密码:<input type="password" name="password"><br/>
        邮箱:<input type="text" name="email"><br/>
        <input type="submit" value="注册">
    </form>
    
    </body>
    </html>
    
    1. 工具类Sendmail类代码如下:
    import com.sun.mail.util.MailSSLSocketFactory;
    
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import java.util.Properties;
    
    public class Sendmail extends Thread {
    
        //用于给用户发送邮件的邮箱
        private String from = "24736743@qq.com";
        //邮箱的用户名
        private String username = "24736743@qq.com";
        //邮箱的密码
        private String password = "授权码";
        //发送邮件的服务器地址
        private String host = "smtp.qq.com";
    
        private User user;
        public Sendmail(User user){
            this.user = user;
        }
    
        //重写run方法的实现,在run方法中发送邮件给指定的用户
        @Override
        public void run() {
            try{
                Properties prop = new Properties();
                prop.setProperty("mail.host", host);
                prop.setProperty("mail.transport.protocol", "smtp");
                prop.setProperty("mail.smtp.auth", "true");
    
                // 关于QQ邮箱,还要设置SSL加密,加上以下代码即可
                MailSSLSocketFactory sf = new MailSSLSocketFactory();
                sf.setTrustAllHosts(true);
                prop.put("mail.smtp.ssl.enable", "true");
                prop.put("mail.smtp.ssl.socketFactory", sf);
    
                //1、创建定义整个应用程序所需的环境信息的 Session 对象
                Session session = Session.getDefaultInstance(prop, new Authenticator() {
                    public PasswordAuthentication getPasswordAuthentication() {
                        //发件人邮件用户名、授权码
                        return new PasswordAuthentication("24736743@qq.com", "授权码");
                    }
                });
    
                //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
                session.setDebug(true);
    
                //2、通过session得到transport对象
                Transport ts = session.getTransport();
    
                //3、使用邮箱的用户名和授权码连上邮件服务器
                ts.connect(host, username, password);
    
                //4、创建邮件
                MimeMessage message = new MimeMessage(session);
                message.setFrom(new InternetAddress(from)); //发件人
                message.setRecipient(Message.RecipientType.TO, new InternetAddress(user.getEmail())); //收件人
                message.setSubject("用户注册邮件"); //邮件的标题
    
                String info = "恭喜您注册成功,您的用户名:" + user.getUsername() + ",您的密码:" + user.getPassword() + ",请妥善保管,如有问题请联系网站客服!!";
    
                message.setContent(info, "text/html;charset=UTF-8");
                message.saveChanges();
    
                //发送邮件
                ts.sendMessage(message, message.getAllRecipients());
                ts.close();
            }catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    }
    
    1. Servlet类RegisterServlet类代码如下:
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class RegisterServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            try {
                //接收用户请求,封装成对象
                String username = request.getParameter("username");
                String password = request.getParameter("password");
                String email = request.getParameter("email");
                User user = new User(username,password,email);
    
                //用户注册成功之后,给用户发送一封邮件
                //我们使用线程来专门发送邮件,防止出现耗时,和网站注册人数过多的情况;
                Sendmail send = new Sendmail(user);
                //启动线程,线程启动之后就会执行run方法来发送邮件
                send.start();
    
                //注册用户
                request.setAttribute("message", "注册成功,我们已经发了一封带了注册信息的电子邮件,请查收!如网络不稳定,可能过会儿才能收到!!");
                request.getRequestDispatcher("info.jsp").forward(request, response);
            } catch (Exception e) {
                e.printStackTrace();
                request.setAttribute("message", "注册失败!!");
                request.getRequestDispatcher("info.jsp").forward(request, response);
            }
        }
    
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
    }
    
    1. 配置web.xml,代码如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
        <servlet>
            <servlet-name>register</servlet-name>
            <servlet-class>com.kuang.servlet.RegisterServlet</servlet-class>
        </servlet>
        
        <servlet-mapping>
            <servlet-name>register</servlet-name>
            <url-pattern>/RegisterServlet.do</url-pattern>
        </servlet-mapping>
    </web-app>
    
    1. 编写反馈页面info.jsp,代码如下:
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>提示信息</title>
    </head>
    <body>
        ${message}
    </body>
    </html>
    
    展开全文
  • Java实现邮件自动发送

    千次阅读 2019-06-14 18:05:16
    有时候我们会遇到自动发送邮件通知、邮件验证码、节假日祝福邮件发送、邮件自动发送广告功能,今天我们就谈谈邮件自动发送是怎么实现的。案例使用Java语言来编写,使用springBoot来搭建项目。 步骤一:添加邮件依赖...

    有时候我们会遇到自动发送邮件通知、邮件验证码、节假日祝福邮件发送、邮件自动发送广告功能,今天我们就谈谈邮件自动发送是怎么实现的。案例使用Java语言来编写,使用springBoot来搭建项目。

    步骤一:添加邮件依赖:spring-boot-starter-mail,如下图:

    如上图所示,添加项目使用到的依赖。

    步骤二:在配置文件编写邮箱信息,我这里使用yml文件格式,如下图:

    步骤三:在邮箱获取授权码,这里使用qq邮箱,如下图:

    1. 获取授权码入口:

    2. 开启POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

    步骤三:代码的编写,这里只写一个简单的示例,大家可以自行扩展,如下图:

    1. 邮件发送工具类编写

    代码全:

    package com.common.common.utils;
    
    import org.springframework.mail.SimpleMailMessage;
    
    /**
     * <Description> 右键发送工具
     * @author WEIQI
     * @version V1.0
     * @createDate 2019-06-14 16:06
     * @see com.common.common.utils
     */
    public class SendMailUtil {
    
        /**
        * Description 邮件发送自定义方法
        * @author WEIQI
        * @param subject 邮件标题
        * @param text  邮件内容
        * @createDate 2019/6/14 17:03
        **/
        public SimpleMailMessage sendIdentifyingCode(String subject, String text) {
            
            SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
            
            simpleMailMessage.setSubject(subject);
            simpleMailMessage.setText(text);
    
            simpleMailMessage.setFrom("627501768@qq.com");
            simpleMailMessage.setTo("WEI_QI@vip.163.com");
    
            return simpleMailMessage;
        }
    }
    


    2. 自动发送邮件定时任务

    代码全:

    package com.common.common.utils;
    
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.mail.javamail.JavaMailSenderImpl;
    import org.springframework.scheduling.annotation.EnableScheduling;
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    
    /**
     * <Description> 邮件定时发送
     * @author WEIQI
     * @version V1.0
     * @createDate 2019-06-14 17:06
     * @see com.common.common.utils
     */
    @Component
    @EnableScheduling
    public class SendMailTask {
    
        private static Log log = LogFactory.getLog(SendMailTask.class);
    
        @Autowired
        JavaMailSenderImpl javaMailSender;
    
        @Value("${mail.subject}")
        String subject;
        @Value("${mail.sendText}")
        String sendText;
    
        /**
        * Description 邮件发送定时任务,示例中每隔五秒执行一次
        * @author WEIQI
        * @param
        * @createDate 2019/6/14 17:38
        **/
        @Scheduled(cron = "*/5 * * * * ?")
        public void timingSendMail() {
            log.info("*** 邮件发送定时任务 ***");
    
            javaMailSender.send(new SendMailUtil().sendIdentifyingCode(subject, sendText));
        }
    }
    

     

    3. 配置文件信息

    spring:
      application:
        name: common
      mail:
        username: 627501768@qq.com
        password: "你的授权码"
        host: smtp.qq.com
        properties:
          smtp:
            ssl:
              enable: true
    server:
      port: 8083
    eureka:
      client:
        service-url:
          defaultZone: http://weiqi:weiqi123456@localhost:8761/eureka
    
    # 项目常量配置
    mail:
      subject: "国庆节快乐"
      sendText: "∴★*°☆∴ 提前祝您国庆节快乐 ∴☆ *★∴"
    

    步骤四:测试

    启动项目查看设定的邮箱,收到我们自定义的邮件,如图所示:

    按照上面操作,你就可以自己实现一个简单的邮件自动发送系统,如果想要更复杂的业务逻辑,可以自己做扩展。

    消息可以设置的参数如下图,可以自行设置:

    你也可以根据自己的使用场景,添加更多工具类,比如:邮件验证码、节假日祝福邮件定时发送、推销广告等等。

    展开全文
  • 话不多说直接上代码: ...MailUtil.java package com.myproject.aiplatform.aiopenplatform.util; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileO...

    话不多说直接上代码:
    MailUtil类(核心)

    MailUtil.java
    package com.myproject.aiplatform.aiopenplatform.util;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.UnsupportedEncodingException;
    import java.util.Properties;
    
    import javax.mail.MessagingException;
    import javax.mail.internet.MimeMessage;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.mail.javamail.JavaMailSenderImpl;
    import org.springframework.mail.javamail.MimeMessageHelper;
    
    public class MailUtil {
        private static final String HOST = MailConfig.host;
        private static final Integer PORT = MailConfig.port;
        private static final String USERNAME = MailConfig.userName;
        private static final String PASSWORD = MailConfig.passWord;
        private static final String emailForm = MailConfig.emailForm;
        private static final String timeout = MailConfig.timeout;
        private static final String personal = MailConfig.personal;
        private static final String subject = MailConfig.subject;
        private static final String html = MailConfig.html;
        private static JavaMailSenderImpl mailSender = createMailSender();
    
        /**
         * 邮件发送器
         *
         * @return 配置好的工具
         */
        private static JavaMailSenderImpl createMailSender() {
            JavaMailSenderImpl sender = new JavaMailSenderImpl();
            sender.setHost(HOST);
            sender.setPort(PORT);
            sender.setUsername(USERNAME);
            sender.setPassword(PASSWORD);
            sender.setDefaultEncoding("Utf-8");
            Properties p = new Properties();
            p.setProperty("mail.smtp.timeout", timeout);
            p.setProperty("mail.smtp.auth", "false");
            sender.setJavaMailProperties(p);
            return sender;
        }
    
        /**
         * 发送邮件
         *
         * @param to 接受人
         * @param subject 主题
         * @param html 发送内容
         * @throws MessagingException 异常
         * @throws UnsupportedEncodingException 异常
         */
        public static void sendMail(String to, String html) throws MessagingException,UnsupportedEncodingException {
            MimeMessage mimeMessage = mailSender.createMimeMessage();
            // 设置utf-8或GBK编码,否则邮件会有乱码
            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
            messageHelper.setFrom(emailForm, personal);
            messageHelper.setTo(to);
            messageHelper.setSubject(subject);
            messageHelper.setText(html, true);
    //      messageHelper.addAttachment("", new File(""));//附件
            mailSender.send(mimeMessage);
        }
    
    }
    

    MailConfig类(获取.properties文件内容)

    package com.myproject.aiplatform.aiopenplatform.util;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.Properties;
    
    public class MailConfig {
        private static final String PROPERTIES_DEFAULT = "mailConfig.properties";
        public static String host;
        public static Integer port;
        public static String userName;
        public static String passWord;
        public static String emailForm;
        public static String timeout;
        public static String personal;
        public static String html;
        public static String subject;
        public static Properties properties;
    
        static{
            init();
        }
    
        /**
         * 初始化
         */
        private static void init() {
            properties = new Properties();
            try{
                InputStream inputStream = MailConfig.class.getClassLoader().getResourceAsStream(PROPERTIES_DEFAULT);
    //          properties.load(inputStream);
    //          inputStream.close();
                //解决中文乱码,采取reader把inputStream转换成reader用字符流来读取中文
                BufferedReader bf = new BufferedReader(new InputStreamReader(inputStream));  
                properties.load(bf); 
                host = properties.getProperty("mailHost");
                port = Integer.parseInt(properties.getProperty("mailPort"));
                userName = properties.getProperty("mailUsername");
                passWord = properties.getProperty("mailPassword");
                emailForm = properties.getProperty("mailFrom");
                timeout = properties.getProperty("mailTimeout");
                personal = properties.getProperty("personal");
                html = properties.getProperty("html");
                subject = properties.getProperty("subject");
            } catch(IOException e){
                e.printStackTrace();
            }
        }
    }
    

    mailConfig.properties(配置一些邮件主题、发件人等信息)

    #服务器
    mailHost=smtp.163.com
    #端口号
    mailPort=25
    #邮箱账号
    mailUsername=***@163.com
    #邮箱授权码
    mailPassword=***
    #时间延迟
    mailTimeout=25000
    #发送人
    mailFrom=***@163.com
    #发件人
    personal=黑白色调
    #主题
    subject=***
    #内容模板
    html=您的邮箱验证码为:

    PS:1、必须登录163邮箱授权第三方使用(也就是得到邮箱授权码)。
    2、.properties文件中邮箱账号和发送人必须一致。
    邮箱授权码获取(登录邮箱—设置—客户端授权密码—开启):
    这里写图片描述

    展开全文
  • Java实现邮件发送

    万次阅读 多人点赞 2019-07-20 16:03:19
    Java实现邮件发送 一、邮件服务器与传输协议 要在网络上实现邮件功能,必须要有专门的邮件服务器。这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱...

    Java实现邮件发送

    一、邮件服务器与传输协议

    • 要在网络上实现邮件功能,必须要有专门的邮件服务器。这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。

    • SMTP服务器地址:一般是 smtp.xxx.com,比如163邮箱是smtp.163.com,qq邮箱是smtp.qq.com。

    • SMTP协议

      通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。

    • POP3协议

      通常把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)。

    二、Java发送邮件

    在这里插入图片描述
    使用到的jar包:

    • mail.jar
    • activation.jar

    QQ邮箱需获取相应的权限:

    QQ邮箱–>邮箱设置–>账户–>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 开启POP3/SMTP服务,然后获取16位授权码(注意不要将授权码泄露,一个账户可以拥有多个授权码)
    在这里插入图片描述
    Java实现纯文本邮件发送

    package org.westos.email;
    
    import com.sun.mail.util.MailSSLSocketFactory;
    
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import java.security.GeneralSecurityException;
    import java.util.Properties;
    
    public class SendEamil {
        public static void main(String[] args) throws MessagingException, GeneralSecurityException {
            //创建一个配置文件并保存
            Properties properties = new Properties();
    
            properties.setProperty("mail.host","smtp.qq.com");
    
            properties.setProperty("mail.transport.protocol","smtp");
    
            properties.setProperty("mail.smtp.auth","true");
    
    
            //QQ存在一个特性设置SSL加密
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            properties.put("mail.smtp.ssl.enable", "true");
            properties.put("mail.smtp.ssl.socketFactory", sf);
    
            //创建一个session对象
            Session session = Session.getDefaultInstance(properties, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("619046217@qq.com","16位授权码");
                }
            });
    
            //开启debug模式
            session.setDebug(true);
    
            //获取连接对象
            Transport transport = session.getTransport();
    
            //连接服务器
            transport.connect("smtp.qq.com","619046217@qq.com","16位授权码");
    
            //创建邮件对象
            MimeMessage mimeMessage = new MimeMessage(session);
    
            //邮件发送人
            mimeMessage.setFrom(new InternetAddress("619046217@qq.com"));
    
            //邮件接收人
            mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("875203654@qq.com"));
    
            //邮件标题
            mimeMessage.setSubject("Hello Mail");
    
            //邮件内容
            mimeMessage.setContent("我的想法是把代码放进一个循环里","text/html;charset=UTF-8");
    
            //发送邮件
            transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
    
            //关闭连接
            transport.close();
        }
    }
    

    Java实现文本图片附件复杂的邮件发送
    MIME(多用途互联网邮件扩展类型)

    MimeBodyPart类

    javax.mail.internet.MimeBodyPart类 表示的是一个MIME消息,它和MimeMessage类一样都是从Part接口继承过来。

    MimeMultipart类

    javax.mail.internet.MimeMultipart是抽象类 Multipart的实现子类,它用来组合多个MIME消息。一个MimeMultipart对象可以包含多个代表MIME消息的MimeBodyPart对象

    package org.westos.email;
    
    import com.sun.mail.util.MailSSLSocketFactory;
    
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.*;
    import javax.mail.internet.*;
    import java.security.GeneralSecurityException;
    import java.util.Properties;
    
    public class SendComplexEmail {
        public static void main(String[] args) throws GeneralSecurityException, MessagingException {
            Properties prop = new Properties();
            prop.setProperty("mail.host", "smtp.qq.com");  设置QQ邮件服务器
            prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议
            prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码
    
            // QQ邮箱设置SSL加密
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            prop.put("mail.smtp.ssl.enable", "true");
            prop.put("mail.smtp.ssl.socketFactory", sf);
    
            //1、创建定义整个应用程序所需的环境信息的 Session 对象
            Session session = Session.getDefaultInstance(prop, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    //传入发件人的姓名和授权码
                    return new PasswordAuthentication("619046217@qq.com","16位授权码");
                }
            });
    
            //2、通过session获取transport对象
            Transport transport = session.getTransport();
    
            //3、通过transport对象邮箱用户名和授权码连接邮箱服务器
            transport.connect("smtp.qq.com","619046217@qq.com","16位授权码");
    
            //4、创建邮件,传入session对象
            MimeMessage mimeMessage = complexEmail(session);
    
            //5、发送邮件
            transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
    
            //6、关闭连接
            transport.close();
    
    
        }
    
        public static MimeMessage complexEmail(Session session) throws MessagingException {
            //消息的固定信息
            MimeMessage mimeMessage = new MimeMessage(session);
    
            //发件人
            mimeMessage.setFrom(new InternetAddress("619046217@qq.com"));
            //收件人
            mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("619046217@qq.com"));
            //邮件标题
            mimeMessage.setSubject("带图片和附件的邮件");
    
            //邮件内容
            //准备图片数据
            MimeBodyPart image = new MimeBodyPart();
            DataHandler handler = new DataHandler(new FileDataSource("E:\\IdeaProjects\\WebEmail\\resources\\测试图片.png"));
            image.setDataHandler(handler);
            image.setContentID("test.png"); //设置图片id
    
            //准备文本
            MimeBodyPart text = new MimeBodyPart();
            text.setContent("这是一段文本<img src='cid:test.png'>","text/html;charset=utf-8");
    
            //附件
            MimeBodyPart appendix = new MimeBodyPart();
            appendix.setDataHandler(new DataHandler(new FileDataSource("E:\\IdeaProjects\\WebEmail\\resources\\测试文件.txt")));
            appendix.setFileName("test.txt");
    
            //拼装邮件正文
            MimeMultipart mimeMultipart = new MimeMultipart();
            mimeMultipart.addBodyPart(image);
            mimeMultipart.addBodyPart(text);
            mimeMultipart.setSubType("related");//文本和图片内嵌成功
    
            //将拼装好的正文内容设置为主体
            MimeBodyPart contentText = new MimeBodyPart();
            contentText.setContent(mimeMultipart);
    
            //拼接附件
            MimeMultipart allFile = new MimeMultipart();
            allFile.addBodyPart(appendix);//附件
            allFile.addBodyPart(contentText);//正文
            allFile.setSubType("mixed"); //正文和附件都存在邮件中,所有类型设置为mixed
    
    
            //放到Message消息中
            mimeMessage.setContent(allFile);
            mimeMessage.saveChanges();//保存修改
    
            return mimeMessage;
        }
    }
    
    

    JavaWeb发送邮件(网站注册成功发送提示邮件)

    1. User

      package org.westos.mail;
      
      public class User {
          private String name;
          private String password;
          private String mail;
      
          public User() {
          }
      
          public User(String name, String password, String mail) {
              this.name = name;
              this.password = password;
              this.mail = mail;
          }
      
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      
          public String getPassword() {
              return password;
          }
      
          public void setPassword(String password) {
              this.password = password;
          }
      
          public String getMail() {
              return mail;
          }
      
          public void setMail(String mail) {
              this.mail = mail;
          }
      
          @Override
          public String toString() {
              return "User{" +
                      "name='" + name + '\'' +
                      ", password='" + password + '\'' +
                      ", mail='" + mail + '\'' +
                      '}';
          }
      }
      
      
    2. Servlet

      package org.westos.mail;
      
      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.IOException;
      
      public class Servlet extends javax.servlet.http.HttpServlet {
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              doGet(request,response);
          }
      
          protected void doGet(HttpServletRequest request, HttpServletResponse response) {
              //处理前端请求
              String username = request.getParameter("username");
              String password = request.getParameter("password");
              String email = request.getParameter("email");
      
              //将信息封装进user对象
              User user = new User(username, password, email);
      
              SendMail sendMail = new SendMail(user);
              sendMail.start(); //开启线程
      
              request.setAttribute("msg","发送成功");
              try {
                  request.getRequestDispatcher("msg.jsp").forward(request,response);
              } catch (ServletException e) {
                  e.printStackTrace();
              } catch (IOException e) {
                  e.printStackTrace();
              }
      
      
          }
      }
      
      
    3. SengMail

      package org.westos.mail;
      
      import com.sun.mail.util.MailSSLSocketFactory;
      
      import javax.mail.*;
      import javax.mail.internet.AddressException;
      import javax.mail.internet.InternetAddress;
      import javax.mail.internet.MimeMessage;
      import java.security.GeneralSecurityException;
      import java.security.PublicKey;
      import java.util.Properties;
      
      public class SendMail extends Thread {
          //发件人信息
          private String From = "619046217@qq.com";
          //发件人邮箱
          private String recipient = "619046217@qq.com";
          //邮箱密码
          private String password = "16位授权码";
          //邮件发送的服务器
          private String host = "smtp.qq.com";
      
          //收件人信息
          private User user;
          public SendMail(User user){
              this.user = user;
          }
      
          @Override
          public void run() {
              try {
                  Properties properties = new Properties();
      
                  properties.setProperty("mail.host","smtp.qq.com");
      
                  properties.setProperty("mail.transport.protocol","smtp");
      
                  properties.setProperty("mail.smtp.auth","true");
      
                  //QQ存在一个特性设置SSL加密
                  MailSSLSocketFactory sf = null;
                  try {
                      sf = new MailSSLSocketFactory();
                  } catch (GeneralSecurityException e) {
                      e.printStackTrace();
                  }
                  sf.setTrustAllHosts(true);
                  properties.put("mail.smtp.ssl.enable", "true");
                  properties.put("mail.smtp.ssl.socketFactory", sf);
      
                  //创建一个session对象
                  Session session = Session.getDefaultInstance(properties, new Authenticator() {
                      @Override
                      protected PasswordAuthentication getPasswordAuthentication() {
                          return new PasswordAuthentication(recipient,password);
                      }
                  });
      
                  //开启debug模式
                  session.setDebug(true);
      
                  //获取连接对象
                  Transport transport = null;
                  try {
                      transport = session.getTransport();
                  } catch (NoSuchProviderException e) {
                      e.printStackTrace();
                  }
      
                  //连接服务器
                  transport.connect(host,From,password);
      
      
                  //创建一个邮件发送对象
                  MimeMessage mimeMessage = new MimeMessage(session);
                  //邮件发送人
                  mimeMessage.setFrom(new InternetAddress(recipient));
      
                  //邮件接收人
                  mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(user.getMail()));
      
                  //邮件标题
                  mimeMessage.setSubject("网站注册成功");
      
                  //邮件内容
                  mimeMessage.setContent("网站注册成功,密码为"+user.getPassword()+",请妥善保管密码","text/html;charset=UTF-8");
      
                  //发送邮件
                  transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
      
                  transport.close();
      
              }catch (Exception e){
                  e.printStackTrace();
              }
      
          }
      
      }
      
      
      
    4. register.jsp

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <html>
      <head>
          <title>注册页面</title>
      </head>
      <body>
      
      <form action="${pageContext.request.contextPath}/a.do" method="post">
          <p>用户名:<input type="text" name="username" required></p>
          <p>密码:<input type="password" name="password" required></p>
          <p>邮箱:<input type="email" name="email" required></p>
          <p><input type="submit" value="提交"></p>
      </form>
      </body>
      </html>
      
      
    5. msg.jsp

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <html>
      <head>
          <title>Title</title>
      </head>
      <body>
      ${msg}
      </body>
      </html>
      
      
    6. web.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
               version="4.0">
          <servlet>
              <servlet-name>Servlet</servlet-name>
              <servlet-class>org.westos.mail.Servlet</servlet-class>
          </servlet>
      
          <servlet-mapping>
              <servlet-name>Servlet</servlet-name>
              <url-pattern>/a.do</url-pattern>
          </servlet-mapping>
      </web-app>
      
    展开全文
  • Java 发送邮件的几种方式

    万次阅读 多人点赞 2018-10-24 13:38:07
    发送文件的项目地址(free):https://download.csdn.net/download/qq_36474549/10741073 导入jar包:activation-1.1.jar...发送一封只包含文本的简单邮件 SendEmail_text.java  2.发送包含内嵌图片的邮件 Send...
  • java邮件发送

    2018-05-24 16:25:41
    邮件服务器主机:smtp.163.com;端口号:465;我们使用的是阿里云发布的系统,这里注意端口号不能使用之前的80端口;而是使用465端口。用户名,密码填写自己注册的邮箱的账号密码:注意这里的邮箱必须把smtp服务开启...
  • 利用java实现发送邮件

    万次阅读 多人点赞 2017-11-14 15:01:31
    电子邮件的应用非常广泛...本文将简单介绍如何通过 Java 代码来创建电子邮件,并连接邮件服务器发送邮件。电子邮件协议 电子邮件在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMA...
  • java实现邮件发送

    千次阅读 2019-03-07 19:47:52
    java实现邮件发送逻辑并不复杂(不包含附件),只是根据官方调用官方提供的sdk,首先需要引入maven依赖:javax.mail &lt;dependency &gt; &lt;groupId &gt;com.sun.mail&lt;/groupId &gt...
  • 图文并茂邮件实现、普通邮件发送演示、带附件的邮件发送的源码以及编写时所参考的相关资料和大家分享一下!
  • 基于JavaMail的Java邮件发送:简单邮件发送

    万次阅读 多人点赞 2016-06-14 21:56:35
    电子邮件的应用非常广泛,例如在某网站注册了一个...但这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送。本文将简单介绍如何通过 Java 代码来创建电子邮件,并连接邮件服务器发...
  • Java发送邮件的几种方式

    万次阅读 多人点赞 2017-05-31 16:21:55
    最近的一个项目中用到了邮件发送,所以研究了一下。将其总结下来。 要发送邮件就要用到java中的JavaMail,关于JavaMailAPI的详解呢在 (http://blog.csdn.net/imain/article/details/1453677“)中有非常详尽的介绍,...
  • java发送邮件-模板

    千次阅读 2018-01-10 18:18:41
    以163网易邮箱为例,使用java发送邮件,发送以邮件时使用模板(.ftl文件转换为html)发送邮件内容,并附带上附件,可抄送给多个人。项目的结构目录如下 邮箱配置文件mail.properties参数如下#mail sender settings ...
  • Java发送邮件工具类

    千次阅读 2018-06-14 14:47:11
    java如何发送邮件? 这里有一个简单易用的java代码发送邮件的工具类
  • Java发送邮件换行问题

    万次阅读 2017-06-15 20:34:30
    利用用java编写的发送邮件要使用来实现换行,在邮件中内容自动实现换行而不能使用一般的\n,或者\r\n
  • java发送邮件模板

    2018-02-07 16:11:40
    package com.bty.hm.pojo.utils; import com.bty.hm.pojo.entity.DataResponse; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; im
  • java 发送邮件 带附件或者表格

    千次阅读 2018-12-10 14:58:05
    package com.sub.utils; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.*;...import javax.mail.internet.*;...import java...
  • java发送邮件谁能解决javaee6以下版本代码放到linux环境件人和主题中文显示?不使用MimeUtility
  • Java 发送邮件

    千次阅读 2018-08-06 09:00:16
    使用Java应用程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 JavaMail API 和Java Activation Framework (JAF) 。 您可以从 Java 网站下载最新版本的 JavaMail,打开网页右侧有个 Downloads 链接,点击...
  • java 发送邮件(并添加附件)

    千次阅读 2016-02-26 15:23:22
    实现java发送邮件的过程大体有以下几步: 准备一个properties文件,该文件中存放SMTP服务器地址等参数。利用properties创建一个Session对象利用Session创建Message对象,然后设置邮件主题和正文利用Transport对象...
  • java发送邮件相关jar包

    2018-04-09 11:11:28
    spring-context-support-4.1.7.RELEASE.jar mail-1.4.1.jar
  • Java发送邮件时标题和件人乱码

    万次阅读 2014-11-25 11:56:53
    最近碰到一个问题,Java发送邮件时,
  • java发送邮件带url、html

    千次阅读 2016-04-26 23:43:27
    java发送邮件,内容包含URL、HTML,并且对URL中文编码,URL的有效性校验。
  • Java发送邮件消息及超链接

    千次阅读 2017-04-08 13:15:20
    不久前研究了一下用Java程序发送电子邮件,个人总结主要包含三大步骤: 一、首先要确保你发送消息的邮箱需要开启POP3/SMTP服务和 IMAP/SMTP服务: 具体开启方式以163邮箱为例: 进入邮箱【首页】——>【设置】...
  • java发送邮件(一封邮件发给多人)

    千次阅读 2017-05-12 15:00:56
    需要以下jar包的支持 mail.jar 下载地址 http://static.runoob.com/download/mail.jar
  • JAVA发送邮件实现,发送邮件内容消息格式化,简单易操作
  • Java发送邮件乱码问题

    千次阅读 2019-01-13 21:10:30
    难受,没有根本解决问题,没搞懂怎么解决了 ...但是在接收的邮件中,中文都变成了这样。。。。。 点击这里完æˆæ¿€æ´» 好吧,去网上搜索,但是自己java mail没学好,用他们...
  • java发送邮件换行

    千次阅读 2014-08-04 18:57:51
    java编写的发送邮件要使用来实现换行,而不能使用\n,huozhe
  • 本人在开发的时候遇到anroid中邮箱开发这一需求,当时寻找了很久这三个jar包(mail.jar,comms-email-1.5.jar,activation.jar),现在提供给有需要的朋友方便开发使用。
  • java发送邮件的两种通用方法 一、 本文讲解的是基于smtp协议,发送邮件的方法(一种是底层实现,一种是利用第三方jar包)。而关于smtp协议,不了解的可以在网上搜一下,有很多资料并且很容易懂;不过不了解也没...
  • java邮件发送 550

    2020-03-18 14:36:28
    1、使用ip形式 Could not connect to SMTP host: 14.18.245.164, port: 465, response: 550. 2、使用域名形式 Could not connect to SMTP host: smtp.qq.com, port: 465, response: 550 ...ERROR c.atpdc.c...

空空如也

1 2 3 4 5 ... 20
收藏数 148,389
精华内容 59,355
关键字:

java邮件发送

java 订阅