Spring mvc之 發郵件(qq.163...)

1、 郵件開發涉及到的一些基本概念

1.一、郵件服務器和電子郵箱

  要在Internet上提供電子郵件功能,必須有專門的電子郵件服務器。例如如今Internet不少提供郵件服務的廠商:sina、sohu、16三、qq等等他們都有本身的郵件服務器。java

  這些郵件服務器相似於現實生活中的郵局,它主要負責接收用戶投遞過來的郵件,並把郵件投遞到郵件接收者的電子郵箱中。spring

  電子郵箱(E-Mail地址)的得到須要在郵件服務器上進行申請,確切地說,電子郵箱其實就是用戶在郵件服務器上申請的一個帳戶,用戶在郵件服務器上申請了一個賬號後,郵件服務器就會爲這個帳號分配必定的空間,用戶從而可使用這個賬號以及空間發送電子郵件和保存別人發送過來的電子郵件。服務器

1.二、郵件傳輸協議

1.2.一、SMTP協議

  (官方解釋)SMTP 的全稱是「Simple Mail Transfer Protocol」,即簡單郵件傳輸協議。它是一組用於從源地址到目的地址傳輸郵件的規範,經過它來控制郵件的中轉方式。SMTP 協議屬於 TCP/IP 協議簇,它幫助每臺計算機在發送或中轉信件時找到下一個目的地。SMTP 服務器就是遵循 SMTP 協議的發送郵件服務器。 
  SMTP 認證,簡單地說就是要求必須在提供了帳戶名和密碼以後才能夠登陸 SMTP 服務器,這就使得那些垃圾郵件的散播者無可乘之機。 
  增長 SMTP 認證的目的是爲了使用戶避免受到垃圾郵件的侵擾。app

  用戶鏈接上郵件服務器以後,要想給它發送一封電子郵件,須要遵循必定的通信規則,SMTP協議就是用來定義這種通信規則的。所以,咱們一般也把處理用戶smtp請求(郵件發送請求)的服務器稱之爲SMTP服務器(郵件發送服務器)。jsp

1.2.二、POP3協議

  (官方解釋) POP3是Post Office Protocol 3的簡稱,即郵局協議的第3個版本,它規定怎樣將我的計算機鏈接到Internet的郵件服務器和下載電子郵件的電子協議。它是因特網電子郵件的第一個離線協議標準,POP3容許用戶從服務器上把郵件存儲到本地主機(即本身的計算機)上,同時刪除保存在郵件服務器上的郵件,而POP3服務器則是遵循POP3協議的接收郵件服務器,用來接收電子郵件的。spa

  一樣,用戶若想從郵件服務器管理的電子郵箱當中接收一封電子郵件話,它連上郵件服務器後,也要遵循必定的通信格式,POP3協議就是用來定義這種通信格式的。所以,咱們一般也把處理用戶pop3請求(郵件接收請求)的服務器稱之爲POP3服務器(郵件接收服務器)。debug

 

 

2、開啓協議

  根據上面的知識點,咱們要發送郵件,首先得設置而且開啓SMTP/POP3協議,下面分別以163郵箱 和 qq郵箱 爲例 ,其實都是大同小異:code

 163郵箱:orm

  首先進入163郵箱首頁,選擇--設置xml

  

  選擇---開啓 ---- 獲取驗證碼 ---輸入驗證碼

  

點擊 --- 肯定 ,勾選協議開啓

  

 qq郵箱 

  先進入設置-》賬戶頁面找到入口,按照如下流程操做。
  (1)點擊「開啓」

  (2)驗證密保  

  (3)獲取受權碼

   記住這16位的受權碼

 以上就是163郵箱 和 qq 郵箱 協議開啓 的步驟。不一樣點是:163 受權碼是本身設置 ,qq 是服務端 指定受權碼 。

3、使用Smtp協議發送郵件

  以qq郵箱爲例 ,首先加入jar 包:

  

"org.springframework:spring-context-support:$springVersion",
"javax.mail:mail:1.4.7"

  在spring.xml 中配置:

//加載mail 資源信息
    <context:property-placeholder location="classpath:mail.properties"/>

    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="${qq_host}"/>    //這是smtp 服務器地址 stmp.qq.com
        <property name="username" value="${qq_username}"/>  //郵箱帳號 2054***@qq.com
        <property name="password" value="${qq_password}" />  //受權碼16位  pckazfsugnqtedib
        <property name="javaMailProperties">
            <props>
                <prop key="mail.transport.protocol">smtp</prop>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.smtp.starttls.enable">true</prop>
                <prop key="mail.debug">true</prop>
            </props>
        </property>
    </bean>
而後,在service 中寫入方法
@Service
public class UserService {

    @Resource
    private MailSender mailSender ;

    public void setMailSender(){
        SimpleMailMessage mailMessage = new SimpleMailMessage();
        mailMessage.setFrom("2054631701@qq.com");
        mailMessage.setTo("1484024976@qq.com"); 
        mailMessage.setSubject("好萊塢會員");
        mailMessage.setText("你好1484024976用戶,在騰訊11週年慶中幸運成爲騰訊白金會員");

        mailSender.send(mailMessage);
    }

}

在 Controller中調用 此方法:

@Resource
    private UserService userService;

@RequestMapping("/send")
    public String sendMial(){
        userService.setMailSender();
        return "success";
    }

在jsp 頁面中請求Controller:

<form action="/send" method="get">
    <input type="submit" value="Send" />
  </form>

 

以上就OK了。謝謝你們的關注,續更。。。。

相關文章
相關標籤/搜索