В этой статье представлены приложения Javamail, основанные на структуре SSM (Spring 4.0 + Springmvc + Mybatis). Если электронное письмо основано на почтовом ящике Tencent QQ, на самом деле это также почтовый ящик Foxmail.
Во -первых, нам нужно понять протокол SMTP и шифрование SSL
SMTP: называемый протокал передачи простых почты, цель состоит в том, чтобы предоставить пользователям эффективную и надежную передачу почты. SMTP - это протокол для ответа на запрос, то есть клиент отправляет запрос на удаленный сервер. Сервер отвечает и слушает порт 25, поэтому его рабочие режимы - два: отправка SMTP и получение SMTP.
Шифрование SSL: используется для обеспечения безопасности браузеров и серверов веб -сайтов. Принцип объясняется в переводе:
Когда ваш браузер запрашивает безопасную веб -страницу с сервера (обычно https: //)
Сервер отправляет свой сертификат и открытый ключ обратно
Браузер проверяет, выдается ли сертификат доверенным учреждением, подтверждает, что сертификат действителен и что этот сертификат предназначен для этого веб -сайта.
Случайный симметричный ключ зашифруется с помощью открытого ключа, который включает в себя зашифрованный URL -адрес для отправки на сервер вместе
Сервер расшифровывает ключ, который вы отправили с помощью собственного закрытого ключа. Затем используйте этот симметричный ключ шифрования, чтобы расшифровать запрашиваемый вами URL.
Сервер использует симметричный ключ, который вы отправили для шифрования веб -страницы, которую вы запрашивали. Вы можете расшифровать веб -страницу, которую вы отправили с тем же ключом
Затем представите, как реализовать javamail отправлять электронные письма. Во -первых, вам нужно скачать банок javamail: http://xiazai.vevb.com/201612/yuanma/mail_jb51.jar
Чтобы включить SMTP -сервис в почтовом ящике QQ, который действует как сервер:
Напишите бизнес -класс для отправки электронных писем:
пакет com.appms.email; import java.util.date; import java.util.properties; импорт javax.mail.address; импорт javax.mail.message; импорт javax.mail.session; импорт javax.mail.transport; импорт javax.mail.internet.internetdetress. com.sun.mail.util.mailsslsocketfactory; открытый класс JavaeMailsender {public static void sendemail (string toemailaddress, строка emailtitle, строка emailcontent) Throws Exception {Properties reps = new Properties (); // включить отладку отладки props.setProperty ("mail.debug", "true"); // Сервер отправки требует аутентификации props.setProperty ("mail.smtp.auth", "true"); // Установить имя хоста почтового сервера props.setproperty ("mail.host", "smtp.qq.com"); // Имя протокола отправки почты props.setproperty ("mail.transport.protocol", "smtp"); / ** Аутентификация SSL, обратите внимание, что почтовый ящик Tencent основан на шифровании SSL, и все, что вам нужно для использования **/ mailsslsocketfactory sf = new MailsslsocketFactory (); sf.settrustalhosts (true); props.put ("mail.smtp.ssl.enable", "true"); props.put ("mail.smtp.ssl.socketfactory", sf); // Создать сеанс сеанса = session.getInstance (ops); // отправлять сообщения, разработанные на основе сообщения режима наблюдателя MSG = New MimeMessage (Session); msg.setsubject (emailtitle); // Используйте StringBuilder, потому что StringBuilder загружается быстрее, чем String, и он также очень безопасен для потока. StringBuilder Builder = new StringBuilder (); builder.append ("/n"+emailcontent); builder.append ("/n time" + new Date ()); msg.settext (builder.tostring ()); msg.setfrom (new InternetAddress («Ваш почтовый ящик QQ»)); Транспортный транспорт = Session.getTransport (); transport.connect ("smtp.qq.com", "ваш почтовый ящик QQ", «Независимый пароль, чтобы вы могли включить службу SMTP»); // Отправить сообщения Transport.sendmessage (msg, новый адрес [] {new InternetAddress (toeMailAddress)}); Transport.close (); }}Затем напишите класс контроллера для SpringMVC Framework:
/** * Прыгнуть, чтобы отправить страницу электронной почты * @return * @Throws Exception */@Requestmapping ("/gosendemail") public modelandView gosendemail (httpservlectrequest) Throws Exception {modelandView mv = this.getModelandView (); String email = request.getParameter ("email"); if (email! = null &&! "". equals (email)) {email = email.trim (); mv.setViewName ("member/send_email"); mv.addobject («электронная почта», электронная почта); } вернуть MV; }/** * Отправить электронную почту * @return * @Throws Exception */@RequestMapping (value = "/sendEmail", preseacs = "application/json; charset = utf-8") @Responsebody public Object sendemail (httpservlectrequest). String msg = "ok"; // Отправить строку состояния toemail = request.getParameter ("email"); // Другое название строки почтового ящика = request.getParameter ("title"); // строка заголовка content = request.getParameter ("content"); // Содержимое javaemailsender.sendemail (toemail, title, content); map.put ("result", msg); карта возврата; }Здесь мы используем плагин jQuery Tip для подсказок проверки, поэтому нам нужно представить соответствующий файл jQuery.
<script type = "text/javascript" src = "source/js/jquery-1.7.2.js"> </script> <!-box-> <script type = "text/javascript" src = "source/js/jquery.tips.js"> </script>
Валидация формы jQuery и асинхронные запросы Ajax:
<!-Отправить электронное письмо-> <script type = "text/javascript"> // Отправить функцию sendem () {if ($ ("#type"). Val () == "1") {$ ("#content"). Val (getContenttxt ()); } else {$ ("#content"). val (getContent ()); } if ($ ("#email"). val () == "") {$ ("#email"). tips ({and: 3, msg: 'Пожалуйста, введите электронное письмо', bg: '#ae81ff', time: 2}); $ ("#Email"). Focus (); вернуть ложь; } if ($ ("#title"). val () == "") {$ ("#title"). Tips ({side: 3, msg: 'Пожалуйста, введите название', bg: '#ae81ff', time: 2}); $ ("#Title"). Focus (); вернуть ложь; } if ($ ("#content"). val () == "") {$ ("#nr"). tips ({with: 1, msg: 'Пожалуйста, введите контент', bg: '#ae81ff', time: 3}); вернуть ложь; } var email = $ ("#email"). val (); var type = $ ("#type"). val (); var title = $ ("#title"). val (); var content = $ ("#content"). val (); $ ("#Zhongxin"). Hide (); $ ("#Zhongxin2"). Show (); $ .ajax ({type: "post", url: 'retroaction/sendemail.do? tm ='+new date (). gettime (), data: {электронная почта: электронная почта, заголовок: название, контент: контент}, dataType: 'json', // beforesend: valyatedata, cache: false, success: function (data) {if "ak" ==. $ ("#msg"). });} </script>Вызовы на страницы JSP:
<!-Редактировать электронную почту-> <div> <table> <tr> <td style = "margin-top: 0px;"> <div style = "float:"> <> <textarea name = "email" id = "email" <div style = "float: right;"> <a class = 'btn btn-mini btn-info' onclick = "dialog_open ();"> Редактировать адрес электронной почты </i> </a> </div> </td> </tr> <tr> <td> <input = "text" name = "title" title "title" value = "wint into" wint vature = » </tr> <td id = "nr"> <script id = "editor" type = "text/plain"> </script> </td> </tr> <tr> <td style = "text-align: center;"> <a onclick = "sendem ();"> send </a> <a onclick = "top.dialog.close ();"> "/" </a> <a onclick = "ddialog.close (); </table> </div> <div id = "zhongxin2" style = "display: none"> <br/> <img src = "Assets/images/jzx.gif" id = 'msg'/> <br/> <h4 id = 'msg'> pend ... </h4> </div> <br/> <h4 id = 'msg'> </h4> </div>
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.