• java4.23学习总结


    使用java发送邮件

    准备工作:

    下载两个发送邮件的包并导入到java:activation-1.1.1.jar,javax.mail.jar;

    创建一个用于发送邮件的类
    1. import javax.mail.*;
    2. import javax.mail.internet.InternetAddress;
    3. import javax.mail.internet.MimeMessage;
    4. import java.util.Date;
    5. import java.util.Properties;
    6. import java.util.Random;
    7. public class mail {
    8. private static MimeMessage message;
    9. //在发送验证码邮件后保存一份验证码,用于判定验证码是否匹配
    10. public static String JudgeCode;
    11. //to 为你要发送到的邮箱的地址
    12. public static void sendEmail(String to) throws MessagingException {
    13. final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
    14. // QQ邮箱服务器
    15. String smtpHost = "smtp.qq.com";
    16. // 邮箱用户名,即QQ账号(自定义)
    17. final String username = "邮箱用户名";
    18. // 邮箱授权码(自定义)
    19. final String password = "邮箱授权码";
    20. // 自己的邮箱(自定义)
    21. final String from = "自己的邮箱";
    22. // 要发送的邮箱地址(自定义)
    23. String toAddress = to;
    24. Transport transport;
    25. Properties props = new Properties();
    26. props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
    27. props.setProperty("mail.smtp.socketFactory.fallback", "false");
    28. props.setProperty("mail.smtp.port", "465");
    29. props.setProperty("mail.smtp.socketFactory.port", "465");
    30. props.setProperty("mail.smtp.auth", "true");
    31. props.put("mail.smtp.host", smtpHost);
    32. props.put("mail.smtp.username", username);
    33. props.put("mail.smtp.password", password);
    34. Session session = Session.getDefaultInstance(props, new Authenticator() {
    35. protected PasswordAuthentication getPasswordAuthentication() {
    36. return new PasswordAuthentication(username, password);
    37. }
    38. });
    39. InternetAddress[] addresses = {new InternetAddress(toAddress)};
    40. message = new MimeMessage(session);
    41. message.setFrom(new InternetAddress(from));
    42. message.setRecipients(Message.RecipientType.TO, addresses);
    43. message.setSubject("验证码");// 发送标题(自定义)
    44. message.setSentDate(new Date());
    45. message.setText(generateVerificationCode(5));// 发送内容(自定义)
    46. transport = session.getTransport("smtp");
    47. transport.connect(smtpHost, username, password);
    48. transport.send(message);
    49. System.out.println("邮件发送成功");
    50. transport.close();
    51. }
    52. //用于生成验证码的方法
    53. //生成的方法为从26个大小写字母和数字中随机选中指定长度的字符然后保存验证码
    54. private static String generateVerificationCode(int length) {
    55. String charSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    56. StringBuilder verificationCode = new StringBuilder();
    57. Random random = new Random();
    58. for (int i = 0; i < length; i++) {
    59. verificationCode.append(charSet.charAt(random.nextInt(charSet.length())));
    60. }
    61. JudgeCode = verificationCode.toString();
    62. return verificationCode.toString();
    63. }
    64. }

    然后我们只要通过类名来调用这个类中的sendEmail(to)静态方法就行了。

  • 相关阅读:
    FlinkSql+Stream综合使用+广播流
    『C语言进阶』动态内存管理
    微服务架构学习与思考(09):分布式链路追踪系统-dapper论文学习
    AtCoder abc140
    package.json中workspaces详解与monorepo
    力扣(LeetCode)891. 子序列宽度之和C++)
    简述 happens - before 八大规则
    【Java】综合案例——发红包【界面版】
    Jetpack Compose(7)——触摸反馈
    ​力扣解法汇总775. 全局倒置与局部倒置
  • 原文地址:https://blog.csdn.net/2301_79390585/article/details/138142197