Java电子邮件

基于java Email的电子邮件发送 Email电子邮件,用java实现email的发送,首先我们需要了解一下email发送的大概过程。简单来说,发送email,需要从用户的电脑邮件软件(MUA),发送到邮件服务器(MTA)上,在通过若干个邮件服务器的中转,最后到达收件人的邮件服务器(MDA),收件人就可以通过邮件软件(MUA)接收邮件了。看完email传送过程后,我们再来了解一下三种常见的邮件协议。... 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 摘要 在这篇文章中,显示了创建基于 Java 的电子邮件应用程序的第一步。如果你想设计你自己的电子邮件客户系统以代替Microsoft Outlook,或设计一个基于Web的电子邮件系统与Hotmail竞争, 这便是你开始的地方。并且对于 Java 邮件不同前景的可能性方面,我们提供了一个新颖的谈话电子邮件客户应用程序。 在JavaMail中你将发现 APIs允许你开发完整功能的电子邮件客户应用程序。“电子邮件客户应用程序”类似Microsoft Outlook的想法:你可以为你自己的Outlook编一个替代程序,但是一个电子邮件客户端根本不必常驻在一个顾客机器上,其实, 它可以是一个 servlet 或在远程服务器上运行的一个 EJB , 提供终端用户通过访问网络浏览器以收发电子邮件。Hotmail的想法 (你也可以编写你自己的Hotmail版本):你可以完全避开用户界面,设计一个能读取信息和发送回复的自动应答器,依据发件人的格式进行自行定制。这便是一个谈话电子邮件客户系统,下面将继续告诉你更多的内容。 现在,我们开始安装并设置 JavaMail软件。 安装 如果你使用 Java 2 平台企业版 ( J2EE ) 1.3 , 你真幸运:它包括 JavaMail,因此没有必要另外安装。然而,如果你正在运行 Java 2 平台标准版 ( J2SE ) 1.1.7 及更高版本, 要使你的应用程序能够收发电子邮件,则应下载并安装下列程序: · JavaMail · JavaBeans Activation Framework 安装方法是解压缩下载文件并把包含的jar文件添加到你的类路径中(classpath)。以下是一个项目的类路径(classpath)的例子:


.;C:/Apps/Java/javamail-1.2/mail.jar;C:/Apps/Java/javamail-1.2/mailapi.jar ;C:/Apps/Java/javamail-1.2/pop3.jar;C:/Apps/Java/javamail-1.2/smtp.jar;C:/Apps/Java/jaf-1.0.1/activation.jar

mailapi.jar 文件包含核心 API 类, pop3.jar 和 smtp.jar 文件为各自的邮件协议包含实现方法。(我们不会在这篇文章中使用 imap.jar 文件。)实现方法类似于 JDBC ( Java 数据库连接 ) 驱动程序, 但消息系统并非数据库。至于 mail.jar 文件, 它包含上面的所有jar文件, 因此你可以把类路径(classpath)只设定到 mail.jar 和 activation.jar 文件。 activation.jar 文件允许你通过二进制数据流处理 MIME ( 多用途因特网邮件扩展 )类型,不仅是在plain text部分查找DataHandler类。 作为文字,余下这篇文章不会提供全面的 API ;相反,你将通过实践学习到更多东西。如果涉及较深的 API 信息,请查看在各自的下载包中的 PDF 文件和Javadocs。 一旦你安装了软件,你需要取得一个电子邮件帐号以便运行列在后面的例子,包括你的 ISP 的SMTP(简单邮件传输协议 ) 服务器名和POP (邮局协议 )服务器名, 你的电子邮件帐号登录名,以及你的邮箱密码。图 1 显示了具体需要的一些邮件帐号细节(并不一定是真实邮件账号),你可以通过使用Microsoft Outlook加以理解。 通过SMTP发送电子邮件 第一个例子显示怎样通过SMTP发送一条基本的电子邮件消息。下面, 你可以看到SimpleSender类, 它从命令行取得你的消息细节并调用一个单独的方法——send(...)——传送消息:


package com.lotontech.mail; 

import javax.mail.*; 

import javax.mail.internet.*; 

import java.util.*; 

/** 

* 一个简单邮件发送类. 

*/ 

public class SimpleSender 

{ 

/** 

* Main 方法以发送在命令行给出的消息. 

*/ 

public static void main(String args[]) 

{ 

try 

{ 

String smtpServer=args[0]; 

String to=args[1]; 

String from=args[2]; 

String subject=args[3]; 

String body=args[4]; 

send(smtpServer, to, from, subject, body); 

} 

catch (Exception ex) 

{ 

System.out.println("Usage: java com.lotontech.mail.SimpleSender"  " smtpServer toAddress fromAddress subjectText bodyText"); 

} 

System.exit(0); 

} 

接下来, 运用SimpleSender,与你的邮件设置一样,用你自己的SMTP服务器名代替smtp.myISP.net :  

> java com.lotontech.mail.SimpleSender smtp.myISP.net bill@lotontech.com ben@lotontech.com "Hello" "Just to say Hello." 



如果能正常运行,在收到的信息中你将看见与图 2 显示的一样。
Send()方法将完完善SimpleSender类。我将首先显示出代码, 然后再详细说明理论:


/** 

* "send" 方法发送消息. 

*/ 

public static void send(String smtpServer, String to, String from, String subject, String body) 

{ 

try 

{ 

Properties props = System.getProperties(); 

// -- 连接一个缺省会话,或新建一个 -- 

props.put("mail.smtp.host", smtpServer); 

Session session = Session.getDefaultInstance(props, null); 

// -- 创建一个新消息 -- 

Message msg = new MimeMessage(session); 

// -- 设置 FROM 和 TO 域 -- 

msg.setFrom(new InternetAddress(from)); 

msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to, false)); 

// --我们也可以包含 CC 收件人 -- 

// if (cc != null) 

// msg.setRecipients(Message.RecipientType.CC 

// ,InternetAddress.parse(cc, false)); 

// -- 设置 subject 和 body 文本 -- 

msg.setSubject(subject); 

msg.setText(body); 

// -- 设置其他一些标头信息-- 

msg.setHeader("X-Mailer", "LOTONtechEmail"); 

msg.setSentDate(new Date()); 

// -- 发送消息 -- 

Transport.send(msg); 

System.out.println("Message sent OK."); 

} 

catch (Exception ex) 

{ 

ex.printStackTrace(); 

} 

} 

} 



首先, 注意你正在取得一个邮件会话 ( java.mail.Session ), 没有什么你不能做的东西。在这种情况下你调用 Session.getDefaultInstance (...) 得到一个共享的会话,另外的桌面应用程序可以再使用它;你也可以建立一个全新的会话—通过 Session.getInstance (...) 方法—它将被你的应用程序独占使用。后者能证明电子邮件客户系统基于per-user基础上不互相孤立是十分重要的。例如一个基于Web的电子邮件系统通过servlets实现。 建立一个会话要求你设置一定的属性;至少,如果通过SMTP发送消息你需要 mail.smtp.host属性。在 API文档中有其他的属性描述。 一旦你有了一个会话,就创建了一条消息。在这个例子中, 你设置了消息的发送和接收邮件地址,标题,以及正文,这都来源于命令行。你也设定了一些头信息, 包括日期,并且如果你想你也可以指定 cc 收件人。 最后, 你通过 javax.mail.Transport 类发送消息。如果你想知道它怎么知道关于我们的邮件会话信息,可往回看看消息的构造。 不只是普通文本 在类 javax.mail.Message ( 从 javax.mail.Part 接口继承 )中方法setText(...)使消息包含提供的字符串并使 MIME类型转到text/plain。 你不仅限于plain text,也能通过 setDataHandler()方法发送其他类型内容。在大多数情况你可以将“其他类型内容”理解为文件附件,例如Word文档。对于一些更有趣东西,检查下面发送Java serialized object的代码: ByteArrayOutputStream byteStream=new ByteArrayOutputStream(); ObjectOutputStream objectStream=new ObjectOutputStream(byteStream); objectStream.writeObject(theObject); msg.setDataHandler(new.DataHandler(new.ByteArrayDataSource( byteStream.toByteArray(),"lotontech/javaobject" ))); 你不会在 javax.mail.*包结构中找到DataHandler类,因为它属于JavaBeans Activation Framework (JAF)包javax.activation成员,你象 JavaMail一样下载 JAF 分发。JAF 提供一种机制专门处理typed数据内容及internet MIME类型。 如果你确实用上面的代码发送 Java 对象,你将很难定位 ByteArrayDataSource 类,mail.jar和activation.jar都不包括它。可试着到JavaMail demo目录中找找! 至于你最初感兴趣的那些文件附件, 你可以在DataHandler的构造器中创建一个javax.activation.FileDataSource实例。当然, 你不想单独发送一个文件,就可以给它加上一个附件。为此你需要理解mutipart messages概念,因此我现在将在收到的电子邮件上下文中介绍这个概念。 通过POP3接收电子邮件 更早, 我介绍了通过javax.mail.Message实现javax.mail.Part接口。我现在将解释它的消息部分, 它在这个例子是重要的。开始前先看一眼图表3。
图 3 显示在上一例子创建的一条消息既是message又是message part,因为它实现Part接口。对于任何part, 你能取得它的内容 ( 任意Java对象), 并且, 在一条简单的文本消息实例中,对象可以是String。对于一个multipart message, 内容应是Multipart类型, 从这里我们能得到单个的body parts, 它自己实现Part接口。 在实践中,对于SimpleReceiver类通过代码一切都变得明显, 只用三步:首先, 类的定义及main(...) 方法在命令行建立连接细节;第二,receive(...)方法捕获收到的消息;最后,printMessage(...)方法打印每条消息的标头信息和内容。 以下是第一步:


package com.lotontech.mail; 

import javax.mail.*; 

import javax.mail.internet.*; 

import java.util.*; 

import java.io.*; 

/** 

* 一个简单邮件接收类. 

*/ 

public class SimpleReceiver 

{ 

 

/** 

* Main 方法以便从用命令行参数指定的邮件服务器处接收消息 

*/ 

public static void main(String args[]) 

{ 

try 

{ 

String popServer=args[0]; 

String popUser=args[1]; 

String popPassword=args[2]; 

receive(popServer, popUser, popPassword); 

} 

catch (Exception ex) 

{ 

System.out.println("Usage: java com.lotontech.mail.SimpleReceiver"  " popServer popUser popPassword"); 

} 

System.exit(0); 

} 

后面我将带你进行正确的测试,现在下面是运行它的命令行(记住要用你的邮件设置代替命令行中的参数): 

> java com.lotontech.mail.SimpleReceiver pop.myIsp.net myUserName myPassword 

receive(...)方法——从main(...)中调用——接着打开你的POP3收件箱接收消息,每次调用printMessage(...)。下面是代码:  

/** 

* "receive" 方法接收消息并对它们进行处理 

*/ 

public static void receive(String popServer, String popUser , String popPassword) 

{ 

 

Store store=null; 

Folder folder=null; 

 

try 

{ 

// -- 得到缺省会话-- 

Properties props = System.getProperties(); 

Session session = Session.getDefaultInstance(props, null); 

// -- 得到一个POP3消息存储设备并与它连接-- 

store = session.getStore("pop3"); 

store.connect(popServer, popUser, popPassword); 

// -- 得到缺省文件夹-- 

folder = store.getDefaultFolder(); 

if (folder == null) throw new Exception("No default folder"); 

// -- ...以及收件箱 -- 

folder = folder.getFolder("INBOX"); 

if (folder == null) throw new Exception("No POP3 INBOX"); 

// -- 以只读方式打开文件夹-- 

folder.open(Folder.READ_ONLY); 

// -- 得到消息包并进行处理-- 

Message[] msgs = folder.getMessages(); 

for (int msgNum = 0; msgNum < msgs.length; msgNum  ) 

{ 

printMessage(msgs[msgNum]); 

} 

} 

catch (Exception ex) 

{ 

ex.printStackTrace(); 

} 

finally 

{ 

// -- 注意关闭 -- 

try 

{ 

if (folder!=null) folder.close(false); 

if (store!=null) store.close(); 

} 

catch (Exception ex2) {ex2.printStackTrace();} 

} 

} 



注意你将从会话中获得一个 POP3 消息存储包,然后使用命令行最初提供的邮件设置与它连结。 一旦连结,你获得缺省文件夹的句柄——对文件夹树的根目录有效——在那里,收件箱保存接收的消息。 你作为只读方式打开收件箱;这样你就可以依次读取信息。 你可能想知道你是否能以写方式打开收件箱,你是否可以为接收的消息或从服务器移出的消息进行标记。在我们的例子,你将只能查看消息。 最后,在上面的代码中你应注意当完成时要关闭文件夹和消息存储,在离开printMessage(...)方法后完成这个类。 打印消息 在这部分,将讨论javax.mail.Part接口。 在列在后面的代码中你将看到怎样将消息赋给它的Part接口并把它分派给messagePart变量。对于single-part消息你现在有一些东西打印。 如果对messagePart.getContent()的调用产生一个Multipart实例,你知道你将处理一人multipart消息;在那种情况中,你将取得第一个multipart——通过getBodyPart(0)——并且打印它。 你可以获得消息本身或仅仅是第一个body part,仅当内容是plain text或 HTML时打印它,你可以通过读取InputStream办到这点:


/** 

* "printMessage()" 方法打印一条消息. 

*/ 

public static void printMessage(Message message) 

{ 

try 

{ 

// 得到标头信息 

String from=((InternetAddress)message.getFrom()[0]).getPersonal(); 

if (from==null) from=((InternetAddress)message.getFrom()[0]).getAddress(); 

System.out.println("FROM: " from); 

String subject=message.getSubject(); 

System.out.println("SUBJECT: " subject); 

// -- 得到消息部分(也就是说消息本身)-- 

Part messagePart=message; 

Object content=messagePart.getContent(); 

// --如果是multipart消息,就是其第一个body part-- 

if (content instanceof Multipart) 

{ 

messagePart=((Multipart)content).getBodyPart(0); 

System.out.println("[ Multipart Message ]"); 

} 

// -- 得到类型-- 

String contentType=messagePart.getContentType(); 

// -- 如果内容是plain文本,我们可以打印它-- 

System.out.println("CONTENT:" contentType); 

if (contentType.startsWith("text/plain") || contentType.startsWith("text/html")) 

{ 

InputStream is = messagePart.getInputStream(); 

BufferedReader reader=new BufferedReader(new InputStreamReader(is)); 

String thisLine=reader.readLine(); 

while (thisLine!=null) 

{ 

System.out.println(thisLine); 

thisLine=reader.readLine(); 

} 

} 

System.out.println("-----------------------------"); 

} 

catch (Exception ex) 

{ 

ex.printStackTrace(); 

} 

} 

} 



为了简单起见,我们假设消息本身或第一个body part是可打印的。对于任何实际的应用程序,你将考虑依次读取每一部分并作相应的确良操作——根据其类型打印或将其保存到磁盘。 当你从消息存储中取得每一条消息时,你实际上正获得一个小数据包。数据内容使用一种缓冲的方式获得,在你需要时——你可以只下载消息标头。 SimpleReceiver测试驱动 让我们测试一下SimpleReceiver。为了接收一些东西,我们发送了如图4的消息(注意消息由文本和附件组成)。
以上接收的被看成是multipart消息,文章打印为: 发送人:Tony Loton 标题:Number 1 [Multipart Message] 内容:text/plain; charset= “ iso-8859-1 ” 附件 1 发件人 Tony Loton. ----------------------------- 谈谈messages 为了增加一点兴趣,并且示范一个JavaMail APIs 的新颖使用, 我现在简短转到我们的谈话电子邮件项目。为了试一试这一应用,你将需要 lotontalk.jar 文件 (提供),并且你将需要在你的classpath中包括它, 如下所示: set CLASSPATH=%CLASSPATH%; lotontalk.jar 你也需要在SimpleReceiver类中改变两处代码。首先, 在receive(...)方法中替换如下代码:


// -- 得到消息包并处理它们-- 

Message[] msgs = folder.getMessages(); 

for (int msgNum = 0; msgNum < msgs.length; msgNum  ) 

{ 

printMessage(msgs[msgNum]); 

} 

用:  

// --得到消息包并处理它们-- 

Message[] msgs = folder.getMessages(); 

for (int msgNum = 0; msgNum < msgs.length; msgNum  ) 

{ 

printMessage(msgs[msgNum]); 

speakMessage(msgs[msgNum]); 

} 

现在增加下列新方法, speakMessage(...), 它类似于原来的printMessage () 方法:  

/** 

* "speakMessage", printMessage()的谈话版本. 

*/ 

public static void speakMessage(Message message) 

{ 

String speech=""; 

try 

{ 

com.lotontech.talk.LOTONtalk speaker=new com.lotontech.talk.LOTONtalk(); 

String from=((InternetAddress)message.getFrom()[0]).getPersonal(); 

if (from==null) from=((InternetAddress)message.getFrom()[0]).getAddress(); 

speech=speech "from " from ", "; 

String subject=message.getSubject(); 

speech=speech "subject " subject ", "; 

// -- 得到消息部分(也就是说消息本身)-- 

Part messagePart=message; 

Object content=messagePart.getContent(); 

// -- ...如果是multipart消息,即是其第一个body part-- 

if (content instanceof Multipart)messagePart=((Multipart)content).getBodyPart(0); 

String contentType=messagePart.getContentType(); 

if (contentType.startsWith("text/plain") || contentType.startsWith("text/html")) 

{ 

InputStream is = messagePart.getInputStream(); 

BufferedReader reader =new BufferedReader(new InputStreamReader(is)); 

String thisLine=reader.readLine(); 

while (thisLine!=null) 

{ 

speech=speech thisLine ". "; 

thisLine=reader.readLine(); 

} 

// -- 谈话 -- 

speaker.speak(speech,true); 

} 

} 

catch (Exception ex) 

{ 

ex.printStackTrace(); 

} 

} 



因为你在发言之前在一个字符串中积累了整个的消息文本,这个解决方案只仅仅合适于小消息。另外地, 当你读它,你可以能用文本的每一行发言。 当然,直观地显示出结果是不可能的, 因此你必须自己试用它。尽管它还不及我想象的一半好,但你可以得到一个大概的感觉。 下面这个小试验,可能在这个例子范围之外,你将发现谈话综合的一些有趣特征:怎么处理数字,并且怎么假定大写的词是缩略词。 更深层次的考虑 我们这里含盖了一些方面,为建立发送接收电子邮件消息的应用程序奠定了坚实的基础。作为一个起点,从你的 Java 应用程序得到和发送消息并不是困难的,是吗? 如果你想深入,应该学习更多的东西。下面是我们含盖的并且你下一步可能要看的纲要。 送消息 我们显示了怎样通过SMTP协议发送single-part消息, 尽管我暗示过怎样发送非文本内容——也就是说一个Java serialized对象——作为single message part。 接下来, 我们显示了multipart消息上下文的Part接口。你可能现在很想将所学知识马上用于发送消息,那就发送一个由普通文本和一个文件附件组成的multipart消息怎么样? 收到消息 我们讲了接收multipart消息,但只能查看。我们收到的消息保存在服务器上,象我们喜欢的一样可以多次重读,直到我们删除他们。我们将怎样做到这一点呢?改变服务器上消息的状态,思考下面一行代码: message.setFlag ( Flags.Flag.ANSWERED , true ); 正如插图所示,我们介绍了将Java serialized对象写进一个电子邮件消息的想法。下面是接收方法的代码:


InputStream is = (InputStream) message.getContent(); 

ObjectInputStream objectStream=new ObjectInputStream(is); 

Object theObject=objectStream.readObject(); 



谈话电子邮件 谈话电子邮件可以读取到来的消息这一桌面应用程序可能使你感兴趣,但是我有另外的想法。若干 ISPs——至少在英国——提供一种SpeechMail服务允许你在世界任何地方拔一个电话号码并用你的收件箱消息谈话。你能在 http://www.btinternet.com看见我所说的服务。 我不认为这种服务是由 Java 构造的,但是它是可能的——并且讲话听起来十分清晰。 结束语 我希望我为你的能收发电子邮件的Java 应用程序提供了一个好的起点,对于你下一步怎样走提供了一些想法。我想将由基于 Java 的电子邮件客户系统和Webmail站点在未来月份的不断出现来判定这篇文章的实用性!
网络编程----基于Java Email的电子邮件发送 利用SMIP协议发送邮件前言电子邮件(electronicmail,简称E-mail,标志@)又称电子信箱、,它是—种用电子提供信息交换的。电子邮件指用电子手段传送、单据、资料等信息的通信方法。电子邮件综合了电话通信和信件的特点,它传送信息的速度和电话一样快,又能象信件一样使收信者在接收端收到文字记录。电子邮件系统又称基于的邮件系统。我们熟悉的邮件软件比如Outlook、网易闪电邮、Foxmail都是用来收发邮件的。当然,使用Java程序也可以收发电子邮件。邮件发送传统的邮件的发送过程。... 阅读详情

相关推荐

基于Java Web的简单的电子邮件系统

基于Java Web的简单的电子邮件系统

m0_60891993的博客 1958

Java电子邮件验证–电子邮件正则表达式Java

Today we will look into java email validation program. Sometimes we have to validate email address and we can use email regex for that. In the last post, I explained about java regular expression in d...

从零开始的教程世界 3937

java实现发送电子邮件

Java实现发送电子邮件    准备:            1. 邮件服务器(易邮邮件服务器,傻瓜式安装)测试用                        发送邮件协议                                smtp                        接收邮件协议:                               imp pop3 pop   ...

village_head的博客 1758

sendgrid java_java – SendGrid电子邮件API,发送电子邮件附件

我使用sendgrid发送电子邮件,使用以下代码工作正常但它没有附件.package sendgrid;import com.sendgrid.Content;import com.sendgrid.Email;import com.sendgrid.Mail;import com.sendgrid.Method;import com.sendgrid.Request;import com.sen...

weixin_31884143的博客 1194

论文阅读------Exposure Fusion: A Simple and Practical Alternative to High Dynamic Range Photography

Mertens T, Kautz J, Van Reeth F. Exposure fusion: A simple and practical alternative to high dynamic range photography[C]//Computer graphics forum. Oxford, UK: Blackwell Publishing Ltd, 2009, 28(1): 161-171. 摘要 本文提出了一种将包围曝光的序列融合到高质量图像中的技术,而无需先转换为高动态范围(HD.

qq_25283239的博客 3397

FAST-LIO2实战:从零搭建香港大学火星实验室SLAM框架(附官方数据集测试指南)

本文提供了一份详细的FAST-LIO2实战指南,帮助读者从零开始搭建香港大学火星实验室开源的这一高效激光惯性里程计框架。内容涵盖系统环境配置、依赖安装、源码编译、官方数据集测试以及参数调优,旨在让开发者快速上手并应用于机器人SLAM项目。

ppp33的博客 689

Java实现简单电子邮件的发送

基于Java Mail的简单电子邮件发送

qq_59616295的博客 2230

OrangePi Kunpeng Pro 安装 ROS2 + Gazebo

OrangePi Kunpeng Pro 的优点很明显,内置openEuler,配备PD电源,做到开箱即用;板子设计也不错,风扇噪音不大,散热良好,昇腾芯片又确保小板子的性能,接口丰富是这类板子共同的优点,也很好的继承了下来,甚至还可以外接固态,可靠性大大提升。使用起来,哪怕不用openEuler的话,也可以很方便的刷Ubuntu来实现一些需要依赖的开发工作,这次没有跑AI模型,所以对算力的优势还没有很明显的感受,下次可以试一下yolo跑跑看。

Arcan 1825

电子邮件客户端java实现_java电子邮件客户端软件

每天记录学习,每天会有好心情。*^_^*今日思考,完成一个基于java的电子邮件客户端软件项目,需要实现哪些功能?通过电子邮件,人们可以方便的进行文字、图片、视频、声音、数据文件等的传递采用当前非常流行的B/S体系结构,以JAVA作为开发技术,主要依赖SSM技术框架,mysql数据库建立本系统。本设计的目的主要在于实现用户对众多邮箱的统一管理,提高邮件收发速度,实现邮箱多账户管理,邮件分析析和管理...

weixin_42497828的博客 1172

基于相位检测与锁相环的DIY超声波风速仪设计与实现

相位检测是信号处理中的一项基础技术,它通过测量两个周期信号之间的相位差来获取信息。其核心原理在于,当信号在介质中传播时,外部因素(如风速)会改变其传播速度,从而导致接收端信号的相位发生偏移。锁相环(PLL)是实现高精度相位检测的关键电路,它能动态调整本地振荡器的频率,以跟踪并锁定输入信号的相位,从而将微小的相位变化转换为易于测量的电压信号。这项技术的工程价值在于其对电路精度要求相对较低,鲁棒性好,非常适合低成本、高灵敏度的测量应用。在气象监测、工业传感和消费电子等领域,相位检测技术被广泛用于风速风向测量、位

weixin_29540599的博客 387

Zotero on Mac: 高效文献管理与引用指南

本文为Mac用户提供了一份全面的Zotero高效文献管理与引用指南。从安装配置、文献收集管理、PDF深度阅读与笔记,到在Word中无缝插入引用和生成参考文献,详细讲解了核心工作流。同时推荐了ZotFile、Better BibTeX等必备插件,并介绍了利用同步与WebDAV实现跨设备无缝衔接的方法,助力研究者构建个人数字知识库,极大提升学术研究效率。

weixin_29281941的博客 1179

java 发送电子邮件_使用java发送电子邮件

经常在账号绑定邮箱或找回密码时,邮箱会收到一条验证邮件,好奇用代码该怎么发送邮件,看到了许多相关的博客,实现步骤都写的很详细,今天照着其他博客的步骤也确实实现了代码发送邮件,在这里重新记录下步骤,加深记忆。一、科普1. 电子邮件协议电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP。其中邮件的创建和发送只需要用到 SMTP协议,所以本文也只会涉...

weixin_30291121的博客 530

LLM评测框架Ragas:测试RAG的性能出现TimeoutError()的解决办法(Ragas+langchain+ollama)

无奈之下,自己找到了一个解决办法,在ragas支持的llm类库中加了一个如下的类,支持ollama、langchian_ollama使用ragas测试报错的问题。可以将如上的库放到你的ragas的系统库的llms目录下,然后修改__init__.py如下。最近用ragas测试rag的性能,发现老出现TimeoutError()的错误。这是一个临时的解决办法,具体等待官方给出最终的解决方案。后来发现官方也没有尽快支持的计划。然后就可以用如下代码进行一些验证。

Criss@陈磊 666

java验证电子邮件_Java字符串中电子邮件的简单易懂的验证

我正在尝试找到一种简单的方法来检查用户输入的内容是否符合电子邮件地址的几个条件。我已经阅读了有关此主题的许多主题,并且大多数人似乎也希望验证电子邮件地址。我不是要建立一些超级骗子的电子邮件地址验证器/检查器。我试图建立一种方法来检查这些事情:用户输入的字符串包含" @"符号。" @"符号前至少有两个字符。有一个"。"在at符号之后,仅三个字符。域名可以根据需要设置,但字符串必须以" ._ _ _"...

weixin_42377790的博客 1187

手把手教你学simulink实例--基于Simulink的储能系统性能评估与仿真

储能系统是现代能源体系中的关键组成部分,广泛应用于可再生能源并网、电网调峰调频、电力质量改善以及电动汽车充电等领域。为了提高储能系统的运行效率和可靠性,对其性能进行准确评估至关重要。基于MATLAB/Simulink平台,可以构建储能系统的动态模型,并通过仿真分析其在不同工况下的性能表现。本项目旨在研究储能系统的建模方法、控制策略及其性能评估指标,并通过Simulink仿真验证系统的动态特性和稳态性能。

MHD0815的博客 195

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java与电子邮件

java与电子邮件

llying 366

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

java验证电子邮件_验证Java中的电子邮件地址

可以使用java.util.regex.Pattern.matches()方法验证电子邮件地址。此方法将E-mail的正则表达式与给定的输入Email匹配,如果匹配则返回true,否则返回false。演示此过程的程序如下:示例publicclassDemo{staticbooleanisValid(Stringemail){Stringregex="^[\\w-_\\.+]*[...

weixin_39859061的博客 1019

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

通过 Java 中 5 种流行的方法提取电子邮件

在本文中,我们将探讨如何利用 Java 库的强大功能,通过 POP3、IMAP、EWS、Graph API 以及以 pst 文件为示例从各种格式的离线邮箱存储中检索电子邮件。

励志做最业余的专业博主,控件产品可以私我~ 3191

java 发送电子邮件_Servlet 发送电子邮件

Servlet 发送电子邮件使用 Servlet 发送一封电子邮件是很简单的,但首先您必须在您的计算机上安装 JavaMail API 和 Java Activation Framework)JAF)。您可以从 Java 网站下载最新版本的 JavaMail,打开网页右侧有个 Downloads 链接,点击它下载。您可以从 Java 网站下载最新版本的 JAF(版本 1.1.1)。你也可以使用本站...

weixin_30145205的博客 302

java验证电子邮件_在Java中验证电子邮件

这里是我有的。要检查地址是一个有效的格式,这里是一个正则表达式,验证它是接近rfc2822(它不抓住一些奇怪的角落情况)。我发现它在去年的净。private static final Pattern rfc2822 = Pattern.compile("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*...

weixin_36104309的博客 403

java中发送电子邮件的使用

java中发送电子邮件的使用 文章目录java中发送电子邮件的使用一、简介二、common-email包介绍2.1 官方文档地址2.2 maven依赖包2.3 关键类三、配置发送电子邮件权限3.1 开通smtp3.2 端口设置四、示例 一、简介 本文将介绍在java中,怎么发送电子邮件。这里使用apache的commons-email包进行电子邮件的发送,其可以发送简单的文本邮件、带html格式的...

panda-star的博客 654

Java发送电子邮件

在很多程序做多需要有发送电子邮件的功能,以前使用java mail实现这个功能很麻烦。现在apache的下的一个子项目common-email,把这个问题大大的简化了。现在在java程序中实现发信功能,只需要短短几行代码。 可以http://jakarta.apache.org/commons/email/在这个地址下载开发包和查看详细的介绍。 java代码 public s...

wukongpai的博客 131

【Java】测试电子邮件规则

测试电子邮件规则: 要求: 1.包括@符 2.@符前有一个以上的单词字符 3.@符后有一个.符号 4.@和.符号之间要包含一个至多个单词字符 5..符号后要包含一个至多个单词字符 6.后面还有可能重复出现若干.单词字符 代码如下: package 正则表达式; import jav...

JockLiu的博客 799

使用java发送电子邮件

经常在账号绑定邮箱或找回密码时,邮箱会收到一条验证邮件,好奇用代码该怎么发送邮件,看到了许多相关的博客,实现步骤都写的很详细,今天照着其他博客的步骤也确实实现了代码发送邮件,在这里重新记录下步骤,加深记忆。 一、科普 1. 电子邮件协议 电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP。其中邮件的创建和发送只需要用到 SMTP...

weixin_30352645的博客 101

Java中使用SMTP协议发送电子邮件

Java中使用SMTP协议发送电子邮件的具体的步骤: 1、首先需要获取发送邮件的Session对象 Session session = Session.getDefaultInstance(properties,authorcator); 2、根据session对象,获取待发送的邮件消息 MimeMessage mimeMessage = new MimeMessage(session);

captian_900331的博客 2023
上一篇: 面向对象编程:Java collection更有效管理elements
下一篇: 面向对象编程:Java中的抽象数据类型
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值