java 發送郵件Servlet(郵件包在最下面)

來源:互聯網
上載者:User

jsp發送郵件,到Servlet中處理。郵件包在最底部,本文轉載自 http://blog.csdn.net/xietansheng/article/details/51673073

在基礎之上稍作修改。

package com.cn.restyle.servlet;import java.io.IOException;import java.util.Date;import java.util.Properties;import javax.mail.NoSuchProviderException;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet("/sendmail")public class SendMailServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    // 寄件者的郵箱和密碼        // PS: 某些郵箱伺服器為了增加郵箱本身密碼的安全性,給 SMTP 用戶端設定了獨立密碼(有的郵箱稱為“授權碼”),         //     對於開啟了獨立密碼的郵箱, 這裡的郵箱密碼必需使用這個獨立密碼(授權碼)。        public static String myEmailAccount = "你的163郵箱";        public static String myEmailPassword = "你的郵箱密碼(授權碼)";        // 寄件者的郵箱SMTP的伺服器位址,不同郵箱的伺服器的地址一般不同,下面是163的        public static String myEmailSMTPHost = "smtp.163.com";    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        String receiverEmail = request.getParameter("receiverEmail");//收件者        String mailTitle  = request.getParameter("mailTitle");       //郵件標題        String mailContent = request.getParameter("mailContent");    // 郵件內文        // 1、建立參數的配置,用於串連郵件伺服器的參數配置                Properties props = new Properties();                props.setProperty("mail.transport.protocol", "smtp");  // 使用的協議,javaMail規範要求                props.setProperty("mail.smtp.host", myEmailSMTPHost);  // 寄件者郵箱的SMTP伺服器的地址                props.setProperty("mail.smtp.auth", "true");           // 需要認證的請求                // PS: 某些郵箱伺服器要求 SMTP 串連需要使用 SSL 安全認證 (為了提高安全性, 郵箱支援SSL串連, 也可以自己開啟),                //     如果無法串連郵件伺服器, 仔細查看控制台列印的 log, 如果有有類似 “串連失敗, 要求 SSL 安全連線” 等錯誤,                //      開啟下面 /* ... */ 之間的注釋代碼, 開啟 SSL 安全連線。                /*                // SMTP 伺服器的連接埠 (非 SSL 串連的連接埠一般預設為 25, 可以不添加, 如果開啟了 SSL 串連,                //                  需要改為對應郵箱的 SMTP 伺服器的連接埠, 具體可查看對應郵箱服務的協助,                //                  QQ郵箱的SMTP(SLL)連接埠為465或587, 其他郵箱自行去查看)                final String smtpPort = "465";                props.setProperty("mail.smtp.port", smtpPort);                props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");                props.setProperty("mail.smtp.socketFactory.fallback", "false");                props.setProperty("mail.smtp.socketFactory.port", smtpPort);                */                // 2、根據配置建立會話,用於郵件和伺服器互動                 Session session=Session.getInstance(props);                 session.setDebug(true);       // 設定為debug,可以查看詳細的log                 try {                    // 3、建立一封郵件對象                     MimeMessage message=createMimeMessage(session,myEmailAccount,receiverEmail,mailContent,mailTitle);                    // 4、 根據session 擷取郵件傳輸對象                     Transport transport =session.getTransport();                    // 5. 使用 郵箱帳號 和 密碼 串連郵件伺服器, 這裡認證的郵箱必須與 message 中的寄件者郵箱一致, 否則報錯                     //                      //    PS_01: 成敗的判斷關鍵在此一句, 如果串連伺服器失敗, 都會在控制台輸出相應失敗原因的 log,                     //           仔細查看失敗原因, 有些郵箱伺服器會返回錯誤碼或查看錯誤類型的連結, 根據給出的錯誤                     //           類型到對應郵件伺服器的協助網站上查看具體失敗原因。                     //                     //    PS_02: 串連失敗的原因通常為以下幾點, 仔細檢查代碼:                     //           (1) 郵箱沒有開啟 SMTP 服務;                     //           (2) 郵箱密碼錯誤, 例如某些郵箱開啟了獨立密碼;                     //           (3) 郵箱伺服器要求必須要使用 SSL 安全連線;                     //           (4) 請求過於頻繁或其他原因, 被郵件伺服器拒絕服務;                     //           (5) 如果以上幾點都確定無誤, 到郵件伺服器網站尋找協助。                     //                     //    PS_03: 仔細看log, 認真看log, 看懂log, 錯誤原因都在log已說明。                     transport.connect(myEmailAccount, myEmailPassword);                     // 6、 發送郵件,發到所有的收件地址 ,message.getAllRecipients() 擷取到的是在建立郵件對象時添加的所有收件者, 抄送人, 密送人                     transport.sendMessage(message, message.getAllRecipients());                     // 7 關閉串連                     transport.close();                } catch (NoSuchProviderException e) {                    e.printStackTrace();                } catch (Exception e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }                   response.sendRedirect("login.jsp");    }      public static MimeMessage createMimeMessage(Session session,String sendMail,String receiveMail,              String mailContent,String mailTitle) throws Exception{        // 1  建立一封郵件        MimeMessage message = new MimeMessage(session);        // 2  寄件者        message.setFrom(new InternetAddress(sendMail,"xuheng","utf-8"));        // 3  收件者,可以增加多個收件者,抄送,密送        message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail,"Lisa","utf-8"));        // 增加收件者        message.addRecipient(MimeMessage.RecipientType.TO, new InternetAddress("xuheng_z@126.com", "USER_DD", "UTF-8"));        // Cc: 抄送(可選)        message.setRecipient(MimeMessage.RecipientType.CC, new InternetAddress("1095201979@qq.com", "USER_EE", "UTF-8"));        // Bcc: 密送(可選)        message.setRecipient(MimeMessage.RecipientType.BCC, new InternetAddress("1432952955@qq.com", "USER_FF", "UTF-8"));        // 4 Subject,郵件主題        message.setSubject(mailTitle,"utf-8");        // 5  郵件內文        message.setContent(mailContent, "text/html;charset=UTF-8");        // 6  設定郵件發送的時間        message.setSentDate(new Date());        // 7 儲存設定        message.saveChanges();        return message;    }}

注意: 後台開發,前端基本盲點,樣式醜陋(笑也憋著,不能出聲)

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><style type="text/css">li {list-style-type:none;}</style><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>send email</title></head><body>    <div align="center">        <form action="sendmail" method="post">            <ul>                <li>郵件標題:<input name="mailTitle" type="text"><br>                <br></li>                <li>收件者 : <input name="receiverEmail" type="text"><br>                <br></li>                <li>郵件內容:<textarea rows="10" cols="40" name="mailContent"></textarea><br>                <br></li>                <li><input type="submit" value="send"></li>            </ul>        </form>    </div></body></html>

郵件包: 連結: https://pan.baidu.com/s/1kUFiviv 密碼: v7bg

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.