java发邮件功能(Java收发邮件过程中具体的功能是怎么实现的)

2025-03-15 19:30:03 0

java发邮件功能(Java收发邮件过程中具体的功能是怎么实现的)

本文目录

Java收发邮件过程中具体的功能是怎么实现的

1.SMTP协议

用户连上邮件服务器后,要想给它发送一封电子邮件,需要遵循一定的通迅规则,SMTP协议就是用于定义这种通讯规则的。

因而,通常我们也把处理用户smtp请求(邮件发送请求)的邮件服务器称之为SMTP服务器。(25)

2.POP3协议

同样,用户若想从邮件服务器管理的电子邮箱中接收一封电子邮件的话,他连上邮件服务器后,也需要遵循一定的通迅格式,POP3协议用于定义这种通讯格式。

因而,通常我们也把处理用户pop3请求(邮件接收请求)的邮件服务器称之为POP3服务器。(110)

下图用于演示两帐户相互发送邮件的过程

3.1JavaMail API按其功能划分通常可分为如下三大类:

创建和解析邮件内容的API :Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。 

3.2发送邮件的API:Transport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如SMTP协议。 

接收邮件的API:Store类是接收邮件的核心API类,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,例如POP3协议。 

3.3Session类 

Session类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些信息构建用于邮件收发的Transport和Store对象,以及为客户端创建Message对象时提供信息支持。 

4.邮件组织结构相关的API

MimeMessage类表示整封邮件。

MimeBodyPart类表示邮件的一个MIME消息。

MimeMultipart类表示一个由多个MIME消息组合成的组合MIME消息。

5.具体的例子程序

package cn.edu.dlmu.send;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Message;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import javax.mail.internet.MimeUtility;public class SendMail { public static void main(String args) throws Exception { Properties prop = new Properties(); //连接的邮件服务器的主机名 prop.setProperty(“mail.smtp.host“, “smtp.sina.com.cn“); //发送邮件的协议 prop.setProperty(“mail.transport.protocol“, “smtp“); //是否向邮件服务器提交认证 prop.setProperty(“mail.smtp.auth“, “true“); //创建session Session session = Session.getInstance(prop); session.setDebug(true); //得到transport Transport ts = session.getTransport(); //连接邮件服务器 ts.connect(“smtp.sina.com.cn“, “xxxx@sina.com“, “xxxxx“); //发送邮件 MimeMessage message = createMessage(session); ts.sendMessage(message, message.getAllRecipients()); ts.close(); } public static MimeMessage createMessage(Session session) throws Exception { MimeMessage message = new MimeMessage(session); //设置邮件的基本信息 message.setFrom(new InternetAddress(“xxxx@sina.com“)); message.setRecipient(Message.RecipientType.TO, new InternetAddress(“1219070362@qq.com“)); message.setSubject(“test“); //正文 MimeBodyPart text = new MimeBodyPart(); //设置charaset可以解决中文正文的乱码问题,内嵌可下载的图片 text.setContent(“你好xxx,《img src=’c:/dog.jpg’ /》测试成功!《br/》《img src=’cid:aaa.jpg’ /》“, “text/html;charset=gbk“); //图片1 MimeBodyPart image = new MimeBodyPart(); image.setDataHandler(new DataHandler(new FileDataSource(“src/88.jpg“))); image.setContentID(“aaa.jpg“); //附件 MimeBodyPart attach = new MimeBodyPart(); DataHandler dh = new DataHandler(new FileDataSource(“src/javamail架包.jar“)); attach.setDataHandler(dh); //解决文件中文乱码问题 attach.setFileName(MimeUtility.encodeText(dh.getName())); //描述正文和图片的关系 MimeMultipart mp = new MimeMultipart(); mp.addBodyPart(text); mp.addBodyPart(image); mp.setSubType(“related“); //描述正文和附件 MimeMultipart mp2 = new MimeMultipart(); mp2.addBodyPart(attach); //将正文封装为一个body MimeBodyPart content = new MimeBodyPart(); content.setContent(mp); mp2.addBodyPart(content); mp2.setSubType(“mixed“); message.setContent(mp2); message.saveChanges(); return message; } }

怎么用JAVA实现邮件发送

一个小例子,也可使用其他api

import java.util.Properties;import javax.mail.Address;import javax.mail.Authenticator;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.Multipart;import javax.mail.PasswordAuthentication;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import javax.mail.internet.MimeUtility;public class Test { // test public static void main(String args) throws Exception { sendEmail(“smtp.163.com“, “测试“, “测试“, “!!!收件人地址!!!“, “!!!发件人邮箱用户名!!!“, “!!!邮箱密码!!!“, “发件人昵称“); } /**  *   * @param smtp  * @throws Exception   */ public static void sendEmail(String emailServer, String subject, String mailBody, String receiver, final String username, final String password, String nickname) throws Exception { Properties props = new Properties(); props.put(“mail.smtp.auth“, “true“); props.setProperty(“mail.transport.protocol“, “smtp“); props.setProperty(“mail.smtp.host“, emailServer); props.setProperty(“mail.smtp.socketFactory.class“, “javax.net.ssl.SSLSocketFactory“); props.setProperty(“mail.smtp.socketFactory.fallback“, “false“); props.setProperty(“mail.smtp.port“, “465“); props.setProperty(“mail.smtp.socketFactory.port“, “465“); Session session = Session.getDefaultInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); session.setDebug(true); MimeMessage mimeMsg = new MimeMessage(session); Multipart mp = new MimeMultipart(); mimeMsg.setSubject(MimeUtility.encodeText(subject, “utf-8“, null)); nickname = MimeUtility.encodeText(nickname, “utf-8“, null); mimeMsg.setFrom(new InternetAddress(username, nickname, “UTF-8“)); BodyPart bp = new MimeBodyPart(); bp.setContent(mailBody, “text/html;charset=utf-8“); mp.addBodyPart(bp); mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(receiver)); mimeMsg.setContent(mp); mimeMsg.saveChanges(); Transport transport = session.getTransport(); transport.connect(username, password); Address allRecipients = mimeMsg.getAllRecipients(); transport.sendMessage(mimeMsg, allRecipients); transport.close(); }}

如何使用Java发送qq邮件

方法:1.前提准备工作: 首先,邮件的发送方要开启POP3 和SMTP服务--即发送qq邮件的账号要开启POP3 和SMTP服务2.开启方法:登陆qq邮箱 3.点击 设置4.点击—-账户 5.找到:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 —点击开启 6.送短信 —–点击确定 7.稍等一会,很得到一个授权码! –注意:这个一定要记住,一会用到 8.点击保存修改 —OK 完成 9.java 测试代码:package cn.cupcat.test;import java.util.Properties;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMessage.RecipientType;public class SendmailUtil { public static void main(String args) throws AddressException, MessagingException { Properties properties = new Properties();properties.put(“mail.transport.protocol“, “smtp“);// 连接协议 properties.put(“mail.smtp.host“, “smtp.qq.com“);// 主机名 properties.put(“mail.smtp.port“, 465);// 端口号 properties.put(“mail.smtp.auth“, “true“); properties.put(“mail.smtp.ssl.enable“, “true“);//设置是否使用ssl安全连接 ---一般都使用 properties.put(“mail.debug“, “true“);//设置是否显示debug信息 true 会在控制台显示相关信息 //得到回话对象 Session session = Session.getInstance(properties); // 获取邮件对象 Message message = new MimeMessage(session); //设置发件人邮箱地址 message.setFrom(new InternetAddress(“123456789@qq.com“)); //设置收件人地址 message.setRecipients( RecipientType.TO, new InternetAddress { new InternetAddress(“987654321@qq.com“) }); //设置邮件标题 message.setSubject(“这是第一封Java邮件“); //设置邮件内容 message.setText(“内容为: 这是第一封java发送来的邮件。“); //得到邮差对象 Transport transport = session.getTransport(); //连接自己的邮箱账户 transport.connect(“123456789@qq.com“, “vvctybgbvvophjcj“);//密码为刚才得到的授权码 //发送邮件 transport.sendMessage(message, message.getAllRecipients()); }}10.运行就会发出邮件了。。。。下面是我收到邮件的截图,当然我把源码中的邮件地址都是修改了,不是真实的,你们测试的时候,可以修改能你们自己的邮箱。最后,祝你也能成功,如果有什么问题,可以一起讨论!注意事项得到的授权码一定要保存好,程序中要使用

java实现发送邮件功能

要实现邮件发送功能需要导入包:mail.jar/* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */package org.demo.action;import java.util.Properties;import javax.mail.Message;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.demo.form.DemoForm;public class DemoAction extends Action {private static final String CONTENT_TYPE = “test/html;charset=GB2312“;public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {DemoForm demoForm = (DemoForm) form;System.out.println(“标题是“ + demoForm.getBiaoti());System.out.println(“内容是“ + demoForm.getNeirong());try {response.setContentType(CONTENT_TYPE);String smtphost = “smtp.nj.headware.cn“; // 发送邮件服务器String user = “q0000015369“; // 邮件服务器登录用户名String password = “Queshuwen26“; // 邮件服务器登录密码String from = “q0000015369@nj.headware.cn“; // String to = “c0000016205@nj.headware.cn“; // 收件人邮件地址String subject = demoForm.getBiaoti(); // 邮件标题String body = demoForm.getNeirong(); // 邮件内容Properties props = new Properties();props.put(“mail.smtp.host“, smtphost);props.put(“mail.smtp.auth“, “true“);Session ssn = Session.getInstance(props, null);MimeMessage message = new MimeMessage(ssn);InternetAddress fromAddress = new InternetAddress(from);message.setFrom(fromAddress);InternetAddress toAddress = new InternetAddress(to);message.addRecipient(Message.RecipientType.TO, toAddress);message.setSubject(subject);message.setText(body);Transport transport = ssn.getTransport(“smtp“);transport.connect(smtphost, user, password);transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));// transport.send(message);transport.close();return mapping.findForward(“succ“);} catch (Exception e) {e.printStackTrace();return mapping.findForward(“fail“);}}}

Java发送邮件

JAVA邮件发送的大致过程是这样的的:1、构建一个继承自javax.mail.Authenticator的具体类,并重写里面的getPasswordAuthentication()方法。此类是用作登录校验的,以确保你对该邮箱有发送邮件的权利。2、构建一个properties文件,该文件中存放SMTP服务器地址等参数。3、通过构建的properties文件和javax.mail.Authenticator具体类来创建一个javax.mail.Session。Session的创建,就相当于登录邮箱一样。剩下的自然就是新建邮件。4、构建邮件内容,一般是javax.mail.internet.MimeMessage对象,并指定发送人,收信人,主题,内容等等。5、使用javax.mail.Transport工具类发送邮件。

java发邮件功能(Java收发邮件过程中具体的功能是怎么实现的)

本文编辑:admin

更多文章:


give me five(为什么击掌是“give me five”)

give me five(为什么击掌是“give me five”)

本文目录为什么击掌是“give me five”为什么《爸爸去哪儿》的爸爸都喜欢give me five为什么击掌是“give me five”这个简单啊对于外国人来说,击掌里的five就是五根手指,手掌就有五根手指其次就是在外国,没有大拇

2025年2月22日 12:10

脚本语言名词解释(脚本语言等同于解释语言吗)

脚本语言名词解释(脚本语言等同于解释语言吗)

本文目录脚本语言等同于解释语言吗什么是“脚本语言什么是脚本语言脚本语言到底是什么意思给我解释下《脚本》语言含义什么是“脚本“脚本语言等同于解释语言吗是否是脚本语言你可以看是否有REPL,也就是read-eval-print-loop。要实现

2025年2月16日 07:30

java socket udp(使用java语言实现tcp和udp文件传输,不使用socket类)

java socket udp(使用java语言实现tcp和udp文件传输,不使用socket类)

本文目录使用java语言实现tcp和udp文件传输,不使用socket类Java socket UDP 编程 为什么一台电脑间可以通信,client,server,router在不同电脑上不好使router只是使用Java网络编程编写SIP

2025年3月5日 16:10

localstorage生命周期(localStorage和sessionStorage的区别是什么)

localstorage生命周期(localStorage和sessionStorage的区别是什么)

本文目录localStorage和sessionStorage的区别是什么localStorage和sessionStorage的区别localStorage与sessionStorage到底存储的是什么,具体localStorage和se

2025年3月19日 07:30

万能游戏修改器(游戏万能修改器使用)

万能游戏修改器(游戏万能修改器使用)

本文目录游戏万能修改器使用所有的游戏修改器什么手机修改器,可以修改所有单机游戏,哪个修改器更好游戏万能修改器使用这个东西没用过,只用过金山游侠..不过这两个软件用法应该差不多.例如你想修改攻击力,那你先输入你人物的攻击力,搜索.然后换个武器

2025年3月24日 00:40

房产小程序后台有什么功能?有房产项目的小程序吗有没有必要定制一个

房产小程序后台有什么功能?有房产项目的小程序吗有没有必要定制一个

本文目录房产小程序后台有什么功能有房产项目的小程序吗有没有必要定制一个房产证流程缮证是什么意思房产类的小程序开发可以做吗个人想做个房产网站请推荐几款软件!房产证网上查询系统在哪里想做一个,家政,房产,中介的网站.用哪个CMS好请帮忙推荐套房

2025年2月18日 02:10

缓存是什么意思(请问什么叫做缓存)

缓存是什么意思(请问什么叫做缓存)

本文目录请问什么叫做缓存用手机优酷下视频缓存啥意思请问什么叫做缓存缓存是架构设计非常重要的一个环节,是架构师必须要掌握的技能,希望我的分享能够给大家带来帮助。01.什么是缓存存储在计算机上一个原始数据复制集,以便于访问。 --维基百科缓

2025年3月14日 21:40

网站设计与制作毕业论文范文(个人的网站的设计与实现毕业论文 急急急范文)

网站设计与制作毕业论文范文(个人的网站的设计与实现毕业论文 急急急范文)

本文目录个人的网站的设计与实现毕业论文 急急急范文有关网站制作的毕业设计和论文范文网站设计与开发论文企业网站设计毕业论文网站设计毕业论文!!个人的网站的设计与实现毕业论文 急急急范文1、论文题目:要求准确、简练、醒目、新颖。  2、目录:目

2025年2月15日 12:20

个人博客模板主题(有什么适合做新闻类博客网站的 WordPress 主题)

个人博客模板主题(有什么适合做新闻类博客网站的 WordPress 主题)

本文目录有什么适合做新闻类博客网站的 WordPress 主题怎么制定自己喜欢的博客模板有什么适合做新闻类博客网站的 WordPress 主题在WP中文论坛上有很多。比如知更鸟的hotnews,比如仿豆瓣九点的主题,仿腾讯CDC的主题,还有

2025年2月19日 13:10

transparency是什么意思(色彩里面的hue,saturation,value,shininess,transparency是什么意思)

transparency是什么意思(色彩里面的hue,saturation,value,shininess,transparency是什么意思)

本文目录色彩里面的hue,saturation,value,shininess,transparency是什么意思transparency什么意思transparency 是什么意思transparency是什么意思preserve tra

2025年3月27日 10:20

特殊符号空白(谁知道一个空白的五角星的符号怎么打)

特殊符号空白(谁知道一个空白的五角星的符号怎么打)

本文目录谁知道一个空白的五角星的符号怎么打王者空白符号怎么打出来请问,王者荣耀的看不见的特殊符号是什么,我想弄王者荣耀名字特殊符号空白谁能复制几个空白字符给我 谢谢了百度输入法怎么打特殊符号空白字符打法谁知道一个空白的五角星的符号怎么打空白

2025年2月26日 09:30

alphabet(Alphabet为何在股东大会上遭受投资者的批评)

alphabet(Alphabet为何在股东大会上遭受投资者的批评)

本文目录Alphabet为何在股东大会上遭受投资者的批评为实现Project Loon互联网气球的商用,Alphabet做了哪些准备谷歌为什么要改名alphabetAlphabet为何在股东大会上遭受投资者的批评在周三举行的年度股东大会上,

2025年3月12日 18:40

拍摄夜景时,该如何设置相机?vscode需要怎么设置,才可以在编辑器内部调试java

拍摄夜景时,该如何设置相机?vscode需要怎么设置,才可以在编辑器内部调试java

本文目录拍摄夜景时,该如何设置相机vscode需要怎么设置,才可以在编辑器内部调试java新手机,怎么修改设置运行更流畅打开开发者模式word 文本框填充 透明度如何设置小米手机开发者选项怎么设置最流畅华为手机如何设置起来更流畅华为p40p

2025年3月4日 21:50

脚本之家是什么?脚本之家引流脚本哪一个好

脚本之家是什么?脚本之家引流脚本哪一个好

本文目录脚本之家是什么脚本之家引流脚本哪一个好怎样在论坛中做个倒计时器win10点击无线网图标无反应怎么解决那里有大量资料的asp.net开发论坛脚本之家是什么脚本之家(jb51.net)是国内专业的网站建设资源、脚本编程学习类网站,提供a

2025年3月16日 11:50

test怎么读(尝的英语怎么读)

test怎么读(尝的英语怎么读)

本文目录尝的英语怎么读test怎么读Test怎么读Failed 和test这两个单词该怎么读要有声音哦test是什么意思尝的英语怎么读尝的英语:taste,读作:英  tasten. 味道;品味;审美vt. 尝;体验vi. 尝起来;有…的味

2025年3月10日 17:40

javascript数组合并(javascript合并相同元素的数组)

javascript数组合并(javascript合并相同元素的数组)

本文目录javascript合并相同元素的数组怎么将两个一维数组合并成一个二维数组在JavaScript中JS合并数组的几种方法及优劣比较各位js大神,请教以下如下俩个对象数组如何合并为一个js数组如何合并生成一个新的数组js 规定位置的数

2025年2月16日 05:40

vba编程从入门到精通电子书(VBA编程从入门到精通的作品鉴赏)

vba编程从入门到精通电子书(VBA编程从入门到精通的作品鉴赏)

本文目录VBA编程从入门到精通的作品鉴赏求《excel vba高效办公从入门到精通》的随书光盘,是“中国青年出版社”出版的!谢谢推荐vba编程书籍VBA编程从入门到精通的作品鉴赏本书提供了最快、最简便的方法学习使用VBA,以便自定义和增强O

2025年3月22日 02:30

communication error(为什么爱普生打印机C110清零时会出现communication error error code 20000010)

communication error(为什么爱普生打印机C110清零时会出现communication error error code 20000010)

本文目录为什么爱普生打印机C110清零时会出现communication error error code 20000010communication error是什么意思打印机清零的时候出现communication error发送传真

2025年2月26日 04:40

数据类型在plc里的作用(在大型施耐德plc编程中 功能块数据类型 是什么意思有什么用)

数据类型在plc里的作用(在大型施耐德plc编程中 功能块数据类型 是什么意思有什么用)

本文目录在大型施耐德plc编程中 功能块数据类型 是什么意思有什么用在PLC编程中,WORD和INT、DW和DI有什么区别,求详解数据类型感觉有点模糊西门子 PLC 中的数据类型的解释 比如BOOL 代表什么意思请问西门子里的数据类型是具体

2025年2月11日 05:30

choices是什么意思(plag.choices.help.各是什么意思)

choices是什么意思(plag.choices.help.各是什么意思)

本文目录plag.choices.help.各是什么意思options 与selections 与choices区别choices chances区别英语gripping choices怎么翻译choice是什么意思plag.choices

2025年3月13日 16:50

近期文章

million billion(million,billion和thousand之间应该怎么转化 要举例的那种 谢谢)
2025-04-05 17:30:01
本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:18
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:6
标签列表

热门搜索