• 如何用java实现发邮件功能


    前置条件

    邮件服务器

    邮件服务器是一种用来负责电子邮件收发管理的设备,类似于web服务器(如Tomcat)、数据库服务器(如MySql),把一台邮件服务器端软件放在网络上,即可供广大网络用户使用。

    电子邮件协议

    首先,什么是电子邮件协议呢?常用的电子邮件协议包括 SMTP,POP3,IMAP。其中邮件的创建和发送只需要用到 SMTP协议,SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

        SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
        POP3(收取邮件协议,默认端口110,不能在线操作)
        IMAP(收取邮件协议,默认端口143,运行在TCP/IP协议之上,与POP3的主要区别:可以在线操作)
     

    JavaMail

    JavaMail它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。写 JavaMail 程序就是编写邮件客户端程序(类似于 outlook、foxmail 等邮件客户端)。这也是本文重点要用到的东西,下面就来具体实现了。

    实现

    1.准备好一个发件邮箱和收件邮箱来测试(我是选择的163邮箱作为发件邮箱(需要设置SMTP),qq邮箱作为收件邮箱)

    2.引入pom文件

    1. javax.mail
    2. mail
    3. 1.4.7

    3.java代码

    1. import javax.mail.*;
    2. import javax.mail.internet.InternetAddress;
    3. import javax.mail.internet.MimeMessage;
    4. import java.util.Properties;
    5. public class Test {
    6. private static final String USEREMAAL = "填你自己邮箱"; //q1230**@163.com 发件人称号,同邮箱地址
    7. private static final String PASSWORD = "填写刚才获得的授权码"; // 可以使户端授权码
    8. public static boolean sendMail(String to, String text, String title){
    9. try {
    10. final Properties props = new Properties();
    11. props.put("mail.smtp.auth", "true");
    12. props.put("mail.smtp.host", "smtp.qq.com");
    13. props.put("mail.user", USEREMAAL);
    14. props.put("mail.password", PASSWORD);
    15. // 构建授权信息,用于进行SMTP进行身份验证
    16. Authenticator authenticator = new Authenticator() {
    17. @Override
    18. protected PasswordAuthentication getPasswordAuthentication() {
    19. // 用户名、密码
    20. String userName = props.getProperty("mail.user");
    21. String password = props.getProperty("mail.password");
    22. return new PasswordAuthentication(userName, password);
    23. }
    24. };
    25. // 使用环境属性和授权信息,创建邮件会话
    26. Session mailSession = Session.getInstance(props, authenticator);
    27. // 创建邮件消息
    28. MimeMessage message = new MimeMessage(mailSession);
    29. // 设置发件人
    30. String username = props.getProperty("mail.user");
    31. InternetAddress form = new InternetAddress(username);
    32. message.setFrom(form);
    33. // 设置收件人
    34. InternetAddress toAddress = new InternetAddress(to);
    35. message.setRecipient(Message.RecipientType.TO, toAddress);
    36. // 设置邮件标题
    37. message.setSubject(title);
    38. // 设置邮件的内容体
    39. message.setContent(text, "text/html;charset=UTF-8");
    40. // 发送邮件
    41. Transport.send(message);
    42. return true;
    43. }catch (Exception e){
    44. e.printStackTrace();
    45. }
    46. return false;
    47. }
    48. public static void main(String[] args) throws Exception {
    49. MailUtils.sendMail("2381565**@qq.com","test","测试邮件");
    50. System.out.println("===发送成功====");
    51. }
    52. }

  • 相关阅读:
    JavaScript--继承模式、数组操作、操作dom
    推荐一份适合所有人做的副业,尤其是程序员!
    MySQL审计插件介绍
    Docker 安装最新版本 Jenkins
    使用nvm切换node方法,以及在nvm中的注意事项
    C#中的访问修饰符知识点
    用低代码平台开发应用
    如何通过在线培训考试系统进行远程教育
    【2023.10.27练习】C语言-字符串转换
    内存的读写过程、现实模型及指针
  • 原文地址:https://blog.csdn.net/UTF8_8/article/details/126221950