使用Java 发送邮件

    xiaoxiao2023-03-25  4

    使用Java 发送邮件

    这一段代码是假期之前,同学需要编写一个网站注册验证时,我写的发送验证码的类,把耦合的比较紧的验证码生成、发送固定标题和内容的部分删掉,单独提出来的邮件发送类。东西比较简单,当时赶时间也是四处搜刮代码拼凑出来的,感觉还能再抽象提炼一些。

    注意: 代码中使用到了一个不在JDK中的jar包,mail.jar需要下载使用Java发邮件开启了邮箱服务器的SSL验证,这需要在QQ邮箱设置中开启 3.当时我使用QQ邮箱作为邮箱服务器,发现QQ邮箱服务器有授权码一说,意思是类似于下面这种通过代码发邮件的时候,使用授权码代替密码,以防密码泄露,所以提醒使用QQ邮箱的人,请首先在QQ邮箱的设置中获得授权码。

    以下是整个的代码

    import java.security.GeneralSecurityException; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import com.sun.mail.util.MailSSLSocketFactory; public class Mail{ private final String user="邮箱名"; private final String pass="密码";//QQ邮箱使用授权码,需要去邮箱的设置里面找 //收件人、邮件标题、邮件内容 private String mailTo; private String mailTitle; private String mailMessage; 所有可设置字段的getter、setter public String getMailTo() { return mailTo; } public void setMailTo(String mailTo) { this.mailTo = mailTo; } public String getMailTitle() { return mailTitle; } public void setMailTitle(String mailTitle) { this.mailTitle = mailTitle; } public String getMailMessage() { return mailMessage; } public void setMailMessage(String mailMessage) { this.mailMessage = mailMessage; } //三个构造函数 public Mail(String mailTo,String mailTitle,String mailMessage){ this.mailTo=mailTo; this.mailTitle=mailTitle; this.mailMessage=mailMessage; } public Mail(String mailTo){ this.mailTo=mailTo; } public Mail(){} //验证是否邮件状态正确 public boolean checkMail(){ if(mailTo!=null&&mailTitle!=null&&mailMessage!=null) return true; return false; } public void SendMail() throws GeneralSecurityException, MessagingException{ //邮件状态不正确,取消发送 if(!checkMail()){ System.out.println("mail state wrong"); return ; } Properties prop = new Properties(); //开启ssl验证 MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); prop.put("mail.smtp.ssl.enable", "true"); prop.put("mail.smtp.ssl.socketFactory", sf); //输出debug信息 //prop.setProperty("mail.debug", "true"); //服务器 prop.setProperty("mail.host", "smtp.qq.com"); //prop.setProperty("mail.smtp.port", "25"); //传输方式 prop.setProperty("mail.transport.protocol", "smtp"); prop.setProperty("mail.smtp.auth", "true"); // 创建session Session session = Session.getInstance(prop); Transport ts = null; // 通过session得到transport对象 ts = session.getTransport(); // 连上邮件服务器 ts.connect(user,pass); MimeMessage message = new MimeMessage(session); // 邮件消息头 /* 邮件的发件人,可以不设置成自己的真实邮箱 对方通过正常手段(邮件客户端、网页)收到邮件,看不到真实的发件人,而只能看到这里设置的发件人 */ message.setFrom(new InternetAddress(user)); // 邮件的发件人 message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo)); // 邮件的收件人 message.setSubject(mailTitle); // 邮件的标题 // 邮件消息体 message.setText(mailMessage); // 发送邮件 ts.sendMessage(message, message.getAllRecipients()); ts.close(); } }
    转载请注明原文地址: https://ju.6miu.com/read-1203841.html
    最新回复(0)