电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Java實(shí)現(xiàn)郵件發(fā)送功能

瀏覽:2日期:2023-02-13 08:24:52

Java實(shí)現(xiàn)郵件發(fā)送的具體代碼,供大家參考,具體內(nèi)容如下

一、郵件服務(wù)器與傳輸協(xié)議

要在網(wǎng)絡(luò)上實(shí)現(xiàn)郵件功能,必須要有專門的郵件服務(wù)器。這些郵件服務(wù)器類似于現(xiàn)實(shí)生活中的郵局,它主要負(fù)責(zé)接收用戶投遞過來的郵件,并把郵件投遞到郵件接收者的電子郵箱中。

SMTP服務(wù)器地址:一般是 smtp.xxx.com,比如163郵箱是smtp.163.com,qq郵箱是smtp.qq.com。

SMTP協(xié)議

通常把處理用戶smtp請求(郵件發(fā)送請求)的服務(wù)器稱之為SMTP服務(wù)器(郵件發(fā)送服務(wù)器)。

POP3協(xié)議

通常把處理用戶pop3請求(郵件接收請求)的服務(wù)器稱之為POP3服務(wù)器(郵件接收服務(wù)器)。

二、Java發(fā)送郵件

Java實(shí)現(xiàn)郵件發(fā)送功能

使用到的jar包:

mail.jar activation.jar

QQ郵箱需獲取相應(yīng)的權(quán)限:

QQ郵箱–>郵箱設(shè)置–>賬戶–>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(wù) 開啟POP3/SMTP服務(wù),然后獲取16位授權(quán)碼(注意不要將授權(quán)碼泄露,一個(gè)賬戶可以擁有多個(gè)授權(quán)碼)

Java實(shí)現(xiàn)郵件發(fā)送功能

Java實(shí)現(xiàn)純文本郵件發(fā)送

package org.westos.email;import com.sun.mail.util.MailSSLSocketFactory;import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.security.GeneralSecurityException;import java.util.Properties;public class SendEamil { public static void main(String[] args) throws MessagingException, GeneralSecurityException {//創(chuàng)建一個(gè)配置文件并保存Properties properties = new Properties();properties.setProperty('mail.host','smtp.qq.com');properties.setProperty('mail.transport.protocol','smtp');properties.setProperty('mail.smtp.auth','true');//QQ存在一個(gè)特性設(shè)置SSL加密MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);properties.put('mail.smtp.ssl.enable', 'true');properties.put('mail.smtp.ssl.socketFactory', sf);//創(chuàng)建一個(gè)session對象Session session = Session.getDefaultInstance(properties, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication('619046217@qq.com','16位授權(quán)碼'); }});//開啟debug模式session.setDebug(true);//獲取連接對象Transport transport = session.getTransport();//連接服務(wù)器transport.connect('smtp.qq.com','619046217@qq.com','16位授權(quán)碼');//創(chuàng)建郵件對象MimeMessage mimeMessage = new MimeMessage(session);//郵件發(fā)送人mimeMessage.setFrom(new InternetAddress('619046217@qq.com'));//郵件接收人mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress('875203654@qq.com'));//郵件標(biāo)題mimeMessage.setSubject('Hello Mail');//郵件內(nèi)容mimeMessage.setContent('我的想法是把代碼放進(jìn)一個(gè)循環(huán)里','text/html;charset=UTF-8');//發(fā)送郵件transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());//關(guān)閉連接transport.close(); }}

Java實(shí)現(xiàn)文本圖片附件復(fù)雜的郵件發(fā)送

MIME(多用途互聯(lián)網(wǎng)郵件擴(kuò)展類型)

MimeBodyPart類

javax.mail.internet.MimeBodyPart類 表示的是一個(gè)MIME消息,它和MimeMessage類一樣都是從Part接口繼承過來。

MimeMultipart類

javax.mail.internet.MimeMultipart是抽象類 Multipart的實(shí)現(xiàn)子類,它用來組合多個(gè)MIME消息。一個(gè)MimeMultipart對象可以包含多個(gè)代表MIME消息的MimeBodyPart對象

package org.westos.email;import com.sun.mail.util.MailSSLSocketFactory;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.*;import javax.mail.internet.*;import java.security.GeneralSecurityException;import java.util.Properties;public class SendComplexEmail { public static void main(String[] args) throws GeneralSecurityException, MessagingException {Properties prop = new Properties();prop.setProperty('mail.host', 'smtp.qq.com'); 設(shè)置QQ郵件服務(wù)器prop.setProperty('mail.transport.protocol', 'smtp'); // 郵件發(fā)送協(xié)議prop.setProperty('mail.smtp.auth', 'true'); // 需要驗(yàn)證用戶名密碼// QQ郵箱設(shè)置SSL加密MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);prop.put('mail.smtp.ssl.enable', 'true');prop.put('mail.smtp.ssl.socketFactory', sf);//1、創(chuàng)建定義整個(gè)應(yīng)用程序所需的環(huán)境信息的 Session 對象Session session = Session.getDefaultInstance(prop, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() {//傳入發(fā)件人的姓名和授權(quán)碼return new PasswordAuthentication('619046217@qq.com','16位授權(quán)碼'); }});//2、通過session獲取transport對象Transport transport = session.getTransport();//3、通過transport對象郵箱用戶名和授權(quán)碼連接郵箱服務(wù)器transport.connect('smtp.qq.com','619046217@qq.com','16位授權(quán)碼');//4、創(chuàng)建郵件,傳入session對象MimeMessage mimeMessage = complexEmail(session);//5、發(fā)送郵件transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());//6、關(guān)閉連接transport.close(); } public static MimeMessage complexEmail(Session session) throws MessagingException {//消息的固定信息MimeMessage mimeMessage = new MimeMessage(session);//發(fā)件人mimeMessage.setFrom(new InternetAddress('619046217@qq.com'));//收件人mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress('619046217@qq.com'));//郵件標(biāo)題mimeMessage.setSubject('帶圖片和附件的郵件');//郵件內(nèi)容//準(zhǔn)備圖片數(shù)據(jù)MimeBodyPart image = new MimeBodyPart();DataHandler handler = new DataHandler(new FileDataSource('E:IdeaProjectsWebEmailresources測試圖片.png'));image.setDataHandler(handler);image.setContentID('test.png'); //設(shè)置圖片id//準(zhǔn)備文本MimeBodyPart text = new MimeBodyPart();text.setContent('這是一段文本<img src=’cid:test.png’>','text/html;charset=utf-8');//附件MimeBodyPart appendix = new MimeBodyPart();appendix.setDataHandler(new DataHandler(new FileDataSource('E:IdeaProjectsWebEmailresources測試文件.txt')));appendix.setFileName('test.txt');//拼裝郵件正文MimeMultipart mimeMultipart = new MimeMultipart();mimeMultipart.addBodyPart(image);mimeMultipart.addBodyPart(text);mimeMultipart.setSubType('related');//文本和圖片內(nèi)嵌成功//將拼裝好的正文內(nèi)容設(shè)置為主體MimeBodyPart contentText = new MimeBodyPart();contentText.setContent(mimeMultipart);//拼接附件MimeMultipart allFile = new MimeMultipart();allFile.addBodyPart(appendix);//附件allFile.addBodyPart(contentText);//正文allFile.setSubType('mixed'); //正文和附件都存在郵件中,所有類型設(shè)置為mixed//放到Message消息中mimeMessage.setContent(allFile);mimeMessage.saveChanges();//保存修改return mimeMessage; }}

JavaWeb發(fā)送郵件(網(wǎng)站注冊成功發(fā)送提示郵件)

1.User

package org.westos.mail;public class User { private String name; private String password; private String mail; public User() { } public User(String name, String password, String mail) {this.name = name;this.password = password;this.mail = mail; } public String getName() {return name; } public void setName(String name) {this.name = name; } public String getPassword() {return password; } public void setPassword(String password) {this.password = password; } public String getMail() {return mail; } public void setMail(String mail) {this.mail = mail; } @Override public String toString() {return 'User{' +'name=’' + name + ’’’ +', password=’' + password + ’’’ +', mail=’' + mail + ’’’ +’}’; }}

2.Servlet

package org.westos.mail;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class Servlet extends javax.servlet.http.HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) {//處理前端請求String username = request.getParameter('username');String password = request.getParameter('password');String email = request.getParameter('email');//將信息封裝進(jìn)user對象User user = new User(username, password, email);SendMail sendMail = new SendMail(user);sendMail.start(); //開啟線程request.setAttribute('msg','發(fā)送成功');try { request.getRequestDispatcher('msg.jsp').forward(request,response);} catch (ServletException e) { e.printStackTrace();} catch (IOException e) { e.printStackTrace();} }}

3.SengMail

package org.westos.mail;import com.sun.mail.util.MailSSLSocketFactory;import javax.mail.*;import javax.mail.internet.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.security.GeneralSecurityException;import java.security.PublicKey;import java.util.Properties;public class SendMail extends Thread { //發(fā)件人信息 private String From = '619046217@qq.com'; //發(fā)件人郵箱 private String recipient = '619046217@qq.com'; //郵箱密碼 private String password = '16位授權(quán)碼'; //郵件發(fā)送的服務(wù)器 private String host = 'smtp.qq.com'; //收件人信息 private User user; public SendMail(User user){this.user = user; } @Override public void run() {try { Properties properties = new Properties(); properties.setProperty('mail.host','smtp.qq.com'); properties.setProperty('mail.transport.protocol','smtp'); properties.setProperty('mail.smtp.auth','true'); //QQ存在一個(gè)特性設(shè)置SSL加密 MailSSLSocketFactory sf = null; try {sf = new MailSSLSocketFactory(); } catch (GeneralSecurityException e) {e.printStackTrace(); } sf.setTrustAllHosts(true); properties.put('mail.smtp.ssl.enable', 'true'); properties.put('mail.smtp.ssl.socketFactory', sf); //創(chuàng)建一個(gè)session對象 Session session = Session.getDefaultInstance(properties, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(recipient,password);} }); //開啟debug模式 session.setDebug(true); //獲取連接對象 Transport transport = null; try {transport = session.getTransport(); } catch (NoSuchProviderException e) {e.printStackTrace(); } //連接服務(wù)器 transport.connect(host,From,password); //創(chuàng)建一個(gè)郵件發(fā)送對象 MimeMessage mimeMessage = new MimeMessage(session); //郵件發(fā)送人 mimeMessage.setFrom(new InternetAddress(recipient)); //郵件接收人 mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(user.getMail())); //郵件標(biāo)題 mimeMessage.setSubject('網(wǎng)站注冊成功'); //郵件內(nèi)容 mimeMessage.setContent('網(wǎng)站注冊成功,密碼為'+user.getPassword()+',請妥善保管密碼','text/html;charset=UTF-8'); //發(fā)送郵件 transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients()); transport.close();}catch (Exception e){ e.printStackTrace();} }}

4.register.jsp

<%@ page contentType='text/html;charset=UTF-8' language='java' %><html><head> <title>注冊頁面</title></head><body><form action='${pageContext.request.contextPath}/a.do' method='post'> <p>用戶名:<input type='text' name='username' required></p> <p>密碼:<input type='password' name='password' required></p> <p>郵箱:<input type='email' name='email' required></p> <p><input type='submit' value='提交'></p></form></body></html>

5.msg.jsp

<%@ page contentType='text/html;charset=UTF-8' language='java' %><html><head> <title>Title</title></head><body>${msg}</body></html>

6.web.xml

<?xml version='1.0' encoding='UTF-8'?><web-app xmlns='http://xmlns.jcp.org/xml/ns/javaee' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd' version='4.0'> <servlet><servlet-name>Servlet</servlet-name><servlet-class>org.westos.mail.Servlet</servlet-class> </servlet> <servlet-mapping><servlet-name>Servlet</servlet-name><url-pattern>/a.do</url-pattern> </servlet-mapping></web-app>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 100_150_200_250_300_350_400公斤压力空气压缩机-舰艇航天配套厂家 | 全屋整木定制-橱柜,家具定制-四川峨眉山龙马木业有限公司 | 南京兰江泵业有限公司-水解酸化池潜水搅拌机-絮凝反应池搅拌机-好氧区潜水推进器 | 国际船舶网 - 船厂、船舶、造船、船舶设备、航运及海洋工程等相关行业综合信息平台 | 电磁铁_小型推拉电磁铁_电磁阀厂家-深圳市宗泰电机有限公司 | 防水套管|柔性防水套管|伸缩器|伸缩接头|传力接头-河南伟创管道 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 中空玻璃生产线,玻璃加工设备,全自动封胶线,铝条折弯机,双组份打胶机,丁基胶/卧式/立式全自动涂布机,玻璃设备-山东昌盛数控设备有限公司 | 青岛美佳乐清洁工程有限公司|青岛油烟管道清洗|酒店|企事业单位|学校工厂厨房|青岛油烟管道清洗 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 沈阳楼承板_彩钢板_压型钢板厂家-辽宁中盛绿建钢品股份有限公司 轴承振动测量仪电箱-轴承测振动仪器-测试仪厂家-杭州居易电气 | 心得体会网_心得体会格式范文模板 | 氟氨基酮、氯硝柳胺、2-氟苯甲酸、异香兰素-新晨化工 | 合肥抖音SEO网站优化-网站建设-网络推广营销公司-百度爱采购-安徽企匠科技 | 成都办公室装修-办公室设计-写字楼装修设计-厂房装修-四川和信建筑装饰工程有限公司 | CPSE安博会| 重庆波纹管|重庆钢带管|重庆塑钢管|重庆联进管道有限公司 | 联系我们-腾龙公司上分客服微信19116098882| 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 小区健身器材_户外健身器材_室外健身器材_公园健身路径-沧州浩然体育器材有限公司 | 神超官网_焊接圆锯片_高速钢锯片_硬质合金锯片_浙江神超锯业制造有限公司 | 楼承板-钢筋楼承板-闭口楼承板-无锡优贝斯楼承板厂 | 搜木网 - 木业全产业链交易平台,免费搜货、低价买货! | 智能型高压核相仪-自动开口闪点测试仪-QJ41A电雷管测试仪|上海妙定 | 二手Sciex液质联用仪-岛津气质联用仪-二手安捷伦气质联用仪-上海隐智科学仪器有限公司 | 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 | 细胞染色-流式双标-试剂盒免费代做-上海研谨生物科技有限公司 | 防腐储罐_塑料储罐_PE储罐厂家_淄博富邦滚塑防腐设备科技有限公司 | 正压密封性测试仪-静态发色仪-导丝头柔软性测试仪-济南恒品机电技术有限公司 | 压缩空气冷冻式干燥机_吸附式干燥机_吸干机_沪盛冷干机 | 色油机-色母机-失重|称重式混料机-称重机-米重机-拌料机-[东莞同锐机械]精密计量科技制造商 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 肉嫩度仪-凝胶测试仪-国产质构仪-气味分析仪-上海保圣实业发展有限公司|总部 | 地源热泵一体机,地源热泵厂家-淄博汇能环保设备有限公司 | 全自动五线打端沾锡机,全自动裁线剥皮双头沾锡机,全自动尼龙扎带机-东莞市海文能机械设备有限公司 | 运动木地板厂家,篮球场木地板品牌,体育场馆木地板安装 - 欧氏运动地板 | 上海公众号开发-公众号代运营公司-做公众号的公司企业服务商-咏熠软件 | 悬浮拼装地板_篮球场木地板翻新_运动木地板价格-上海越禾运动地板厂家 | 我车网|我关心的汽车资讯_汽车图片_汽车生活! | 即用型透析袋,透析袋夹子,药敏纸片,L型涂布棒-上海桥星贸易有限公司 | 云南外加剂,云南速凝剂,云南外加剂代加工-普洱澜湄新材料科技有限公司 | 品牌设计_VI设计_电影海报设计_包装设计_LOGO设计-Bacross新越品牌顾问 |