• 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)静态方法就行了。

  • 相关阅读:
    Android实时获取音量(单位:分贝)
    2019新鲜出炉的BAT通关面试题 Java岗
    招募 AIGC 训练营助教 @上海
    【ARM】MDK自动备份源文件
    算法之回溯
    VMware workstation 中centos7虚拟机在nat模式下怎么配置网卡,指定我想要的IP并且可以联网
    IPv6 中 MAC 33:33 的由来
    Avalonia 实现简单的IM即时通讯、视频通话(源码,支持国产系统,统信、银河麒麟)
    【TCP/IP】组播
    Clickhouse引擎—数据库引擎
  • 原文地址:https://blog.csdn.net/2301_79390585/article/details/138142197