开发者社区> 奔走的王木木Sir> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【Java】【Javaweb】不用点技术活能找到npy?❤️来看这篇邮件发送❤️(1024属于程序员的节日)(下)

简介: 4.5 注册servlet 4.6 utils工具类 4.7 有可能报错这个问题: 4.8 测试结果 5. 在springboot中实现
+关注继续查看

4.5 注册servlet


<servlet>
    <servlet-name>RegisterServlet</servlet-name>
    <servlet-class>com.hxl.servlet.RegisterServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>RegisterServlet</servlet-name>
    <url-pattern>/RegisterServlet.do</url-pattern>
</servlet-mapping>


4.6 utils工具类


package com.hxl.utils;

import com.sun.mail.util.MailSSLSocketFactory;
import com.hxl.pojo.User;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

//网站3秒原则:用户体验
//多线程实现用户体验!! (异步处理)
public class Sendmail extends Thread{
    //用于给用户发送邮件的邮箱
    private String from = "xxxx@qq.com";
    //邮箱的用户名
    private String username = "xxxx@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("xxxx@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);
        }
    }
}


4.7 有可能报错这个问题:


这个是由于jar包没导进去。首先我们去看一下Project Structure中查看Artifacts选中自己的module查看jar包。还有可能是Tomcat中没有这两个包,我们需要把这两个包复制到tomcat文件夹中


微信图片_20211229194704.png

微信图片_20211229194712.png


4.8 测试结果


微信图片_20211229194750.png

微信图片_20211229194756.png


5. 在springboot中实现


@Autowired
JavaMailSenderImpl mailSender;

@Test
Public void contextLoads(){
    SimpleMailMessage message = new SimpleMailMessage();
    message.setSubjext("主题");
    message.setText("文本");
    message.setFrom("从哪里来的邮箱");
    message.setTo("去那里的邮箱");
    mailSender.send(message);
}
@Test
Public void contextLoads2() throws Exception{
    MimeMessage mimeMessage = mailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true)
    helper.setSubjext("主题");
    helper.setText("<h1>文本</h1>",true);
    //附件
    helper.addAttachment("1.jpg",new File(""));
    helper.setFrom("从哪里来的邮箱");
    helper.setTo("去那里的邮箱");
    mailSender.send(helper);
}


在application.properties中进行配置


spring.mail.username=xxxxx@qq.com
spring.mail.password=授权码
spring.mail.host=smtp.qq.com
spring.mail.properties.mail.smtp.ssl.enable=true

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
程序员数学基础【六、枚举 区块链,虚拟币种、币包约束,内环版本】(Java版本)(一)
程序员数学基础【六、枚举 区块链,虚拟币种、币包约束,内环版本】(Java版本)(一)
61 0
程序员数学基础【六、枚举 区块链,虚拟币种、币包约束,内环版本】(Java版本)(三)
程序员数学基础【六、枚举 区块链,虚拟币种、币包约束,内环版本】(Java版本)(三)
50 0
Javascript实现Java的HashMap(链表散列)
前言 如果你研究过Java中HashMap的源码,你就会知道HashMap底层的存储结构。Java中的HashMap是以链表散列的形式存储的,也就是数组+链表:HashMap中有一个Entry数组,默认的数组长度是16。
1860 0
《深度学习:Java语言实现》一一1.1人工智能的变迁
本节书摘来自华章出版社《深度学习:Java语言实现》一 书中的第1章,第1.1节,作者:[日]巣笼悠辅(Yusuke Sugomori) 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1481 0
《深度学习:Java语言实现》一一1.2人与机器的区分因素
本节书摘来自华章出版社《深度学习:Java语言实现》一 书中的第1章,第1.2节,作者:[日]巣笼悠辅(Yusuke Sugomori) 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1196 0
《深度学习:Java语言实现》一一1.3人工智能与深度学习
本节书摘来自华章出版社《深度学习:Java语言实现》一 书中的第1章,第1.3节,作者:[日]巣笼悠辅(Yusuke Sugomori) 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3949 0
《深度学习:Java语言实现》一一1.4小结
本节书摘来自华章出版社《深度学习:Java语言实现》一 书中的第1章,第1.4节,作者:[日]巣笼悠辅(Yusuke Sugomori) 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
881 0
+关注
奔走的王木木Sir
喜欢就关注我的这是人情,不喜欢我就是事故,所以问题不大~
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java高级特性入门(二)
立即下载
Java开发者面试百宝书
立即下载
Java工程师必读手册
立即下载