国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

基于JavaMail實現郵件發送

2024-07-14 08:40:08
字體:
來源:轉載
供稿:網友

通過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;      } } 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太仆寺旗| 安泽县| 徐闻县| 沅江市| 北票市| 西乌| 阜城县| 天全县| 海盐县| 乌苏市| 吐鲁番市| 武城县| 沙洋县| 将乐县| 广丰县| 桐城市| 福安市| 鞍山市| 古丈县| 阿克陶县| 长白| 洛南县| 印江| 辉南县| 天等县| 沁阳市| 海丰县| 潍坊市| 延寿县| 卢湾区| 田林县| 瑞安市| 平湖市| 柳河县| 沙雅县| 德安县| 阜城县| 济阳县| 东至县| 天峨县| 元氏县|