我的世界java邮箱和密码_java实现邮箱找密码

本文详细介绍了三种常见的邮件协议:SMTP(简单邮件传输协议)、POP3(邮局协议第三版)及IMAP(交互式邮件存取协议)。其中,SMTP主要用于邮件的发送与中转,而POP3和IMAP则侧重于邮件的接收,区别在于邮件是否保留在服务器上。此外,文中还涉及了SMTP认证及使用Java实现邮件发送的具体实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SMTP,POP3,IMAP

POP3

POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。

SMTP

SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。

SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。

增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。

IMAP

IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。

网易常见邮箱服务器信息:

d8556b234b864ec2bf6b85b48da18a89.png

腾讯邮箱服务器信息:stmp.qq.com

Action

public class MailAction extends ActionSupport {

private SysuserinfoService sysuserinfoService;// 用户基本信息表

private String email;

private String errorMessage;

private Sysuserinfo sysuserinfo;

/**

* 发邮件

*

* @return

*/

public String sendMail() {

System.out.println("LOG : MailAction-sendMail");

if (sysuserinfo == null) {

errorMessage = "获取用户信息失败,请返回登录界面重新尝试 !";

return "error";

}

String userId = sysuserinfo.getUserCode();

String userRole = sysuserinfo.getSysrole().getRoleCode();

Sysuserinfo userinfo = sysuserinfoService.findById(Sysuserinfo.class,

userId);

if (userinfo == null) {

errorMessage = "用户不存在,请返回登录界面重新尝试 !";

return "error";

}

// 设置邮件内容 String content = "尊敬的用户:" + userinfo.getUserName() +

String content = ".作业在线系统找回密码给你发的密码是:" + userinfo.getPassword()

+ "请注意自己的帐号安全,不要外泄密码!!";

boolean flag = false;

email = userinfo.getEmail();// 从数据库读出

if (email == null) {

errorMessage = "对不起,您还没有设置邮箱哦!";

return "error";

}

System.out.println("LOG : email = " + email);

flag = sendEmail(email, content);

if (!flag) {

errorMessage = "邮件发送过程中找不到家了!";

return "error";

}

return "success";

}

/**

* 账户:cn_edu_nwsuaf_mas@163.com 密码:cn.edu.nwsuaf 授权密码:cnedunwsuaf2017

*

* @param email

* @param content

* @return

*/

public boolean sendEmail(String email, String content) {

SimpleEmail mailUtil = new SimpleEmail();

/**

* 根据发送方设置服务器

*

*/

mailUtil.setHostName("smtp.163.com");

if (mailUtil.getHostName() == null) {

System.out.println("LOG : can not deal with the type of email!");

return false;

}

mailUtil.setAuthentication("xxxxxxxx@163.com",

"xxxxxxxx@163.com的授权码");

mailUtil.setCharset("utf-8");

try {

mailUtil.addTo(email);

mailUtil.setFrom("xxxxxxxx@163.com");

mailUtil.setSubject("subject");

mailUtil.setMsg(content);

mailUtil.send();

} catch (EmailException e) {

System.out.println("LOG : 邮件发送过程中找不到家了!");

e.printStackTrace();

return false;

}

return true;

}

Struts.xml

class="cn.edu.nwsuaf.comAction.MailAction">

/page/mail/success.jsp

/page/mail/error.jsp

/login.jsp

<think>好的,我现在需要处理用户关于Java中使用正则表达式验证电子邮件地址的查询。首先,我得回顾一下用户的问题,确保我准确理解需求。用户提到他们想查用于验证电子邮件地址的Java正则表达式,并且在系统指令中引用了三个相关的引用链接,其中引用[2]直接提到了一个正则表达式,而引用[1][3]涉及电话号码验证Matcher类的使用。 首先,我需要确认用户的主要需求是获取验证电子邮件的正则表达式,并可能在Java中正确应用它。根据引用[2],提供的正则表达式是:`^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$`。这个表达式看起来涵盖了大部分标准电子邮件格式,但需要检查是否符合RFC 5322的标准,或者是否是一个简化的版本,因为严格的电子邮件验证可能非常复杂。 接下来,我需要确保用户知道如何在Java中使用这个正则表达式。用户可能已经了解基本的PatternMatcher类的使用,但根据引用[3]提供的Matcher教程链接,可能需要简要说明如何使用这些类来编译匹配正则表达式。例如,创建Pattern对象,然后生成Matcher,再使用matches()方法进行验证。 此外,用户提供的引用[1]虽然标题提到电话号码验证,但内容可能涉及正则表达式的一般使用,所以在回答中可能需要区分电子邮件电话号码的不同验证方式,但用户的问题集中在电子邮件上,因此重点应放在电子邮件部分。 然后,我需要考虑用户可能的后续问题,比如正则表达式的各个部分解释,常见用例,或者如何处理国际化域名等更复杂的情况。因此,生成的相关问题需要覆盖这些方面,例如询问正则表达式各部分的作用、优化方法,或处理特殊情况的建议。 同时,要确保回答符合系统级指令,比如使用正确的中文,行内公式用$...$,独立公式用$$...$$,但在这个问题中可能不需要数学公式,但需要正确使用代码块。例如,Java代码需要用三个反引号包裹,并注明语言类型,以保持格式正确。 最后,检查引用的正确性,确保引用标识与提供的参考链接对应。引用[2]直接提供了电子邮件正则表达式,而引用[3]解释了Matcher的使用方法,因此在回答中引用这两个来源是合适的。需要确保在回答末尾添加引用标识,如[^2][^3]。 总结步骤: 1. 提供符合RFC 5322标准的简化正则表达式,引用[2]中的示例。 2. 展示如何在Java中使用PatternMatcher类进行验证,引用[3]的方法。 3. 示例代码演示整个验证流程。 4. 生成相关问题,覆盖正则解释、优化、处理特殊情况等。 5. 确保引用正确,格式符合要求,使用中文清晰回答。 可能遇到的问题:用户提供的正则表达式是否足够严格?是否需要考虑更多边缘情况?比如带引号的本地部分、国际化字符等。但考虑到用户的需求可能只需要一个基本有效的解决方案,因此提供引用中的正则表达式并说明其限制是合适的。</think>在Java中,使用正则表达式验证电子邮件地址需要遵循RFC 5322标准[^2]。以下是常用的简化实现: ```java import java.util.regex.Pattern; import java.util.regex.Matcher; public class EmailValidator { private static final String EMAIL_REGEX = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$"; public static boolean validate(String email) { Pattern pattern = Pattern.compile(EMAIL_REGEX); Matcher matcher = pattern.matcher(email); return matcher.matches(); } } ``` ### 实现说明 1. **正则表达式分解**: - `^` `$` 表示匹配整个字符串 - `[a-zA-Z0-9_+&*-]+` 匹配用户名部分的第一个字符 - `(?:\\.\\[...]+)*` 处理带点的用户名片段 - `@(?:[a-zA-Z0-9-]+\\.)+` 匹配域名部分 - `[a-zA-Z]{2,7}` 限定顶级域名长度 2. **Matcher使用**: - 通过`Pattern.compile()`编译正则表达式[^3] - 使用`matcher.matches()`进行完全匹配验证
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值