基于JavaMail实现邮件发送

通过javamail 实现发送邮件,供大家参考,具体内容如下

公司主营业务:成都网站建设、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出集贤免费做网站回馈大家。

注意:服务器有些端口是没有开放的 需要去开放端口。 有些邮箱是需要开启对应授权服务的。

1.maven依赖:

<!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api --> 
<dependency >  
  <groupId >javax.mail </groupId >  
  <artifactId >mail </artifactId >  
  <version >1.4.5 </version >  
</dependency >  
<dependency >  
  <groupId >com.sun.mail </groupId >  
  <artifactId >javax.mail </artifactId >  
  </dependency >  

2.新建个实体类 用来保存信息

import java.util.Properties; 
public class MailSenderInfo { 
   // 发送邮件的服务器的IP(或主机地址) 
   private String mailServerHost; 
   // 发送邮件的服务器的端口 
   private String mailServerPort; 
   // 发件人邮箱地址 
   private String fromAddress; 
   // 收件人邮箱地址 
   private String toAddress; 
   // 登陆邮件发送服务器的用户名 
   private String userName; 
   // 登陆邮件发送服务器的密码 
   private String password; 
   // 是否需要身份验证 
   private boolean validate = true; 
   // 邮件主题 
   private String subject; 
   // 邮件的文本内容 
   private String content; 
   // 邮件附件的文件名 
   private String[] attachFileNames; 
    
   public Properties getProperties() { 
   Properties p = new Properties(); 
   p.put("mail.smtp.host", this.mailServerHost); 
   p.put("mail.smtp.port", this.mailServerPort); 
   //设置是否安全验证,默认为false,一般情况都设置为true 
   p.put("mail.smtp.auth", "true");  
   p.put("mail.smtp.starttls.enable","true");  
   p.put("mail.smtp.EnableSSL.enable","true"); 
   return p; 
   } 
   public String getMailServerHost() { 
   return mailServerHost; 
   } 
   public void setMailServerHost(String mailServerHost) { 
   this.mailServerHost = mailServerHost; 
   } 
   public String getMailServerPort() { 
   return mailServerPort; 
   } 
   public void setMailServerPort(String mailServerPort) { 
   this.mailServerPort = mailServerPort; 
   } 
   public boolean isValidate() { 
   return validate; 
   } 
   public void setValidate(boolean validate) { 
   this.validate = validate; 
   } 
   public String[] getAttachFileNames() { 
   return attachFileNames; 
   } 
   public void setAttachFileNames(String[] fileNames) { 
   this.attachFileNames = fileNames; 
   } 
   public String getFromAddress() { 
   return fromAddress; 
   } 
   public void setFromAddress(String fromAddress) { 
   this.fromAddress = fromAddress; 
   } 
   public String getPassword() { 
   return password; 
   } 
   public void setPassword(String password) { 
   this.password = password; 
   } 
   public String getToAddress() { 
   return toAddress; 
   } 
   public void setToAddress(String toAddress) { 
   this.toAddress = toAddress; 
   } 
   public String getUserName() { 
   return userName; 
   } 
   public void setUserName(String userName) { 
   this.userName = userName; 
   } 
   public String getSubject() { 
   return subject; 
   } 
   public void setSubject(String subject) { 
   this.subject = subject; 
   } 
   public String getContent() { 
   return content; 
   } 
   public void setContent(String textContent) { 
   this.content = textContent; 
   } 
} 

3.创建一个验证器

import javax.mail.Authenticator; 
import javax.mail.PasswordAuthentication; 
 
/** 
 * 邮件用户名和密码认证器 
 */ 
public class MyAuthenticator extends Authenticator{ 
   String userName = null; 
   String password = null; 
   public MyAuthenticator() { 
   } 
   public MyAuthenticator(String username, String password) { 
   this.userName = username; 
   this.password = password; 
   } 
   protected PasswordAuthentication getPasswordAuthentication() { 
   return new PasswordAuthentication(userName, password); 
   } 
} 

4.在调用的地方给实体类赋值

private void email(HttpSession session, String email) { 
    // 设置邮件服务器信息 
    MailSenderInfo mailInfo = new MailSenderInfo(); 
    mailInfo.setMailServerHost("smtp-mail.outlook.com");// 发送邮件的服务器的IP(或主机地址) 
    mailInfo.setMailServerPort("587");//有些端口在服务器上是没开放的 这里需要注意下 
    mailInfo.setValidate(true); 
    // 邮箱用户名(根据自己情况设置) 这里可以多弄几个邮箱过来 避免邮箱账号需要验证 或者被当成垃圾邮件封号 A失败就用B 
    mailInfo.setUserName("此处填写跟上面发送邮件服务器对应的邮箱"); 
    // 邮箱密码(根据自己情况设置) 
    mailInfo.setPassword("这是你的密码"); 
    // 发件人邮箱(根据自己情况设置,如果你没对邮箱进行特别设置,应该和邮箱用户名一致) 
    mailInfo.setFromAddress("这里跟上面一样"); 
    // 收件人邮箱(根据自己情况设置) 
    mailInfo.setToAddress(email); 
    // 邮件标题 
    mailInfo.setSubject("我是标题"); 
    // 邮件内容 
    mailInfo.setContent("我是内容,正经的内容不是垃圾邮箱"); 
    // 发送邮件 
    SimpleMailSender sms = new SimpleMailSender(); 
    // 发送文体格式 
    sms.sendTextMail(mailInfo); 
  } 

5.这里才是真正的发送邮件

public class SimpleMailSender { 
  public boolean sendTextMail(MailSenderInfo mailInfo) { 
     // 判断是否需要身份认证 
     MyAuthenticator authenticator = null; 
     Properties pro = mailInfo.getProperties(); 
     if (mailInfo.isValidate()) { 
      // 如果需要身份认证,则创建一个密码验证器 
      authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); 
     } 
     // 根据邮件会话属性和密码验证器构造一个发送邮件的session 
     Session sendMailSession = Session.getDefaultInstance(pro, authenticator); 
     try { 
      // 根据session创建一个邮件消息 
      Message mailMessage = new MimeMessage(sendMailSession); 
      // 创建邮件发送者地址 
      Address from = new InternetAddress(mailInfo.getFromAddress()); 
      // 设置邮件消息的发送者 
      mailMessage.setFrom(from); 
      // 创建邮件的接收者地址,并设置到邮件消息中 
      Address to = new InternetAddress(mailInfo.getToAddress()); 
      mailMessage.setRecipient(Message.RecipientType.TO, to); 
      // 设置邮件消息的主题 
      mailMessage.setSubject(mailInfo.getSubject()); 
      // 设置邮件消息发送的时间 
      mailMessage.setSentDate(new Date()); 
      // 设置邮件消息的主要内容 
      String mailContent = mailInfo.getContent(); 
      mailMessage.setText(mailContent); 
      mailMessage.saveChanges(); 
      // 发送邮件 
      Transport.send(mailMessage); 
      return true; 
     } catch (MessagingException ex) { 
      ex.printStackTrace(); 
     } 
     return false; 
     } 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。

分享名称:基于JavaMail实现邮件发送
文章地址:https://www.cdcxhl.com/article18/jisogp.html

成都网站建设公司_创新互联,为您提供小程序开发电子商务网站排名全网营销推广网站维护移动网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都seo排名网站优化