基于SMTP协议,编写程序模拟邮件系统收发邮件的运行过程。要求具有如下功能:
1、 用户能够注册,登录;
2、 用户能够注册;
3、 用户登录后
查看并编辑用户注册信息;
可以发信给其它用户,可以连上公网,给公网任何邮箱发邮件(如QQ邮箱);
查看来信,对来信进行回复;
可以收取来信中的附件,并存储到计算机上;
IDE:Eclipse
数据库:mysql
技术:Servlet+Jsp+mybatis+javamail
协议:SMTP实现邮件发送,POP3实现邮件收取
模拟邮箱系统主要分为注册、登录、查看和更改个人注册信息、发送邮件、查看收件箱五大模块。用户注册并登录后,可查看个人注册信息、修改个人信息、绑定自己的公网邮箱后,可以向任意邮箱发送邮件、可以查看自己的收件箱
public static void send_email(String toEmail,String subjects,String contents,String myaddress,String myauthenticator2) throws IOException, AddressException, MessagingException{
// 收件人地址,邮件主题,邮件内容,发件人地址,发件人邮箱授权码
String to = toEmail;
String subject = subjects;
String content = contents;
String myaddress1 = myaddress;
String myauthenticator1 = myauthenticator2;
Properties properties = new Properties();
properties.put("mail.smtp.host", "smtp.qq.com");//邮件服务器主机名
properties.put("mail.smtp.port", "25");//端口号
properties.put("mail.smtp.auth", "true"); //发送服务器需要身份验证
Authenticator authenticatorTemp = new Email_Authenticator(myaddress1, myauthenticator1);
javax.mail.Session sendMailSession = javax.mail.Session.getDefaultInstance(properties, authenticatorTemp);
MimeMessage mailMessage = new MimeMessage(sendMailSession);
mailMessage.setFrom(new InternetAddress(myaddress1));
// Message.RecipientType.TO属性表示接收者的类型为TO
mailMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
mailMessage.setSubject(subject, "UTF-8");
mailMessage.setSentDate(new Date());
// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
Multipart mainPart = new MimeMultipart();
// 创建一个包含HTML内容的MimeBodyPart
BodyPart html = new MimeBodyPart();
html.setContent(content.trim(), "text/html; charset=utf-8");
mainPart.addBodyPart(html);
mailMessage.setContent(mainPart);
Transport.send(mailMessage);
}
String username = (String)request.getSession().getAttribute("username");
User user =getUserByUsername(username);
String address = user.getAddress();//邮箱地址
String authenticator = user.getAuthenticator();//邮箱授权码
String host = "pop.qq.com";//访问邮件服务器pop.qq.com
String protocol = "pop3";//使用pop3协议
Properties props = new Properties();
// 使用的协议(JavaMail规范要求)
props.setProperty("mail.store.protocal", protocol);
// 发件人的邮箱的 SMTP服务器地址
props.setProperty("mail.pop3.host", host);
// QQ邮箱,设置SSL加密(必须要加密)
MailSSLSocketFactory sf = null;
try {
sf = new MailSSLSocketFactory();
} catch (GeneralSecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sf.setTrustAllHosts(true);
props.put("mail.pop3.ssl.enable", "true");
props.put("mail.pop3.ssl.socketFactory", sf);
// 获取默认session对象
Session session = Session.getDefaultInstance(props);
session.setDebug(false);
// 获取Store对象
Store store = null;
try {
store = session.getStore(protocol);
} catch (NoSuchProviderException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 通过POP3服务器的登陆认证
try {
store.connect(host, address, authenticator);
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 获得收件箱
Folder folder = null;
try {
folder = store.getFolder("INBOX");
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//设置邮件状态
try {
folder.open(Folder.READ_WRITE);
} catch (MessagingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}// 打开收件箱
可以与QQ邮箱进行绑定并使用SMTP协议,SMTP协议是简单邮件传输协议,SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。
SMTP协议包括了连接建立、邮件传送和连接释放三个具体过程,建立的是TCP连接,SMTP协议调用TCP协议的25号端口进行监听。
使用POP3协议,POP3协议提供了一种对邮件消息进行排队的标准机制,这样接收者以后才能检索邮件。
POP3协议也运行在TCP/IP之上,并且在默认端口110上进行监听。
将邮件的主题、发件人、发送时间、邮件大小、邮件正文分别存在数组中,通过Session传值,然后读取。
打开公网邮箱页面(如qq邮箱),打开邮箱的POP3/SMTP服务,获取其授权码,将公网邮箱号与授权码填入项目个人信息栏中就可以连接上公网。
eclipse工程,导入项目,配置好数据库和相关设置就可以直接运行
计算机网络课程设计:基于SMTP协议的模拟邮件系统
计算机网络课程设计报告 基于SMTP协议的模拟邮件系统
计算机网络课设 模拟邮件系统模块设计图
不会配置可以私信我,每天会看私信。(工作q号:2215991436)