• 使用Java发邮件


     1 import java.io.UnsupportedEncodingException;
     2 import java.security.GeneralSecurityException;
     3 import java.util.Properties;
     4 import javax.mail.BodyPart;
     5 import javax.mail.Message;
     6 import javax.mail.Multipart;
     7 import javax.mail.Session;
     8 import javax.mail.Transport;
     9 import javax.mail.internet.InternetAddress;
    10 import javax.mail.internet.MimeBodyPart;
    11 import javax.mail.internet.MimeMessage;
    12 import javax.mail.internet.MimeMultipart;
    13 import com.sun.mail.util.MailSSLSocketFactory;
    14 
    15 public class mymail {
    16     
    17     private String host = "smtp.qq.com"; // smtp服务器
    18     private String from = "textsim@foxmail.com"; // 发件人地址
    19     private String to = "qce.hui@qq.com"; // 收件人地址
    20     private String pwd = "***********"; // 密码(使用授权码)
    21     private String subject = "文本相似度检测系统--注册验证码"; // 邮件标题
    22     
    23     public void send() {
    24         Properties props = new Properties();
    25         
    26         // 设置发送邮件的邮件服务器的属性(这里使用腾讯的smtp服务器)
    27         props.put("mail.smtp.host", host);
    28         // 需要经过授权,也就是有用户名和密码的校验,这样才能通过验证(一定要有这一条)
    29         props.put("mail.smtp.auth", "true");
    30         
    31         // 开启SSL加密,否则会失败
    32         try {
    33             MailSSLSocketFactory sf;
    34             sf = new MailSSLSocketFactory();
    35             sf.setTrustAllHosts(true);
    36             props.put("mail.smtp.ssl.enable", "true");
    37             props.put("mail.smtp.ssl.socketFactory", sf);
    38         } catch (GeneralSecurityException e1) {
    39             System.out.println("QQ邮箱SSL加密开启失败!");
    40         }
    41         
    42         // 用刚刚设置好的props对象构建一个session
    43         Session session = Session.getDefaultInstance(props);
    44         
    45         // 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使
    46         // 用(你可以在控制台(console)上看到发送邮件的过程)
    47         session.setDebug(true);
    48         
    49         // 用session为参数定义消息对象
    50         MimeMessage message = new MimeMessage(session);
    51         try { 
    52             // 设置自定义发件人昵称
    53             String nick = "";
    54             try {
    55                 nick = javax.mail.internet.MimeUtility.encodeText("TextSim");
    56             } catch (UnsupportedEncodingException e) {
    57                 System.out.println("QQ邮箱设置自定义发件人昵称错误!");
    58             }
    59             // 加载发件人地址
    60             message.setFrom(new InternetAddress(nick + " <"+from+">"));
    61             // 加载收件人地址
    62             message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
    63             // 加载标题
    64             message.setSubject(subject);
    65             
    66             // 向multipart对象中添加邮件的内容
    67             Multipart multipart = new MimeMultipart();
    68             
    69             // 设置邮件的文本内容
    70             BodyPart contentPart = new MimeBodyPart();
    71             contentPart.setText("测试一下,看看能不能发送成功,您的验证码是:667542");
    72             multipart.addBodyPart(contentPart);
    73             
    74             // 将multipart对象放到message中
    75             message.setContent(multipart);
    76             // 保存邮件
    77             message.saveChanges();
    78             // 发送邮件
    79             Transport transport = session.getTransport("smtp");
    80             // 连接服务器的邮箱
    81             transport.connect(host, from, pwd);
    82             // 把邮件发送出去
    83             transport.sendMessage(message, message.getAllRecipients());
    84             transport.close();
    85             System.out.println("发送成功");
    86         } catch (Exception e) {
    87             System.out.println("发送失败");
    88             e.printStackTrace();
    89         }
    90     }
    91     
    92     public static void main(String[] args) {
    93         mymail cn = new mymail();
    94         cn.send();
    95     }
    96 }

    这里是使用QQ邮箱发送的,代码已测试过了,可以发送。需要的包都在https://pan.baidu.com/s/1eT0yVN8。

  • 相关阅读:
    可能不知道的C#特性
    设计模式の依赖注入
    How to find WWN and WWPN of HBA card in Linux
    fio IO测试工具
    centos/redhat 多路径存储使用 客户端
    centos/redhat 系统误删除逻辑卷之后如何恢复
    How to use lspci, lsscsi, lsusb, and lsblk to get Linux system devices information
    How to Check and Repair EXT4 Filesystem in Linux
    如何在 Linux 上扫描/检测新的 LUN 和 SCSI 磁盘
    小程序开发知识点总结归纳
  • 原文地址:https://www.cnblogs.com/qijunhui/p/8445589.html
Copyright © 2020-2023  润新知