基于javaEmail邮件收发

基于javaEmail的邮件收发程序

项目环境

编辑程序:idea
展示界面:javaGUI
JDK:1.8
邮箱平台:163网易邮箱
邮箱账号:2个(需都开通POP3/SMTP服务)

1.项目说明与简介

javaEmail这个淘汰项目在网上已经很少有人去教了,但还有一些学校要求做这个东西,最近有人需要就顺手帮忙做了一个,该喷不喷,javaEmail.jar是真的不好用,连接邮箱发送服务器是一直报错的,不清楚什么原因,也没有必要去深究,就不加密连接直接发送了,达成预期效果就行。对于这个淘汰项目也就不用maven构建了,手动下个javaEmail.jar打入依赖就好。说到这就很想批评一下csdn那些文章写的不堪,又是要会员又是下载收费还有要加微信要打赏才发项目的,别来污染这个交流环境,”垃圾收购站”的说法就是这样来的。

本项目的依赖和工程代码链接在文章后面,供大家免费下载,无需任何套路。

jdk太大了下载链接就不传了,蓝奏放不下。

2.163邮箱的注册与服务开通

javaEmail来做邮箱收发,必须要邮箱开通两个服务:IMAP/SMTP服务POP3/SMTP服务 ,对于一般不使用第三方软件操作邮箱的用户来说,他们是不需要开通这项服务的。

注意,本项目需要注册和开通两个账号,方便演示哦!

163邮箱官网:https://mail.163.com/

1.注册登入后点击设置:在这里插入图片描述
2.找到POP3/SMTP/IMAP选项进入

在这里插入图片描述
3.开启下面两个服务:
在这里插入图片描述

4.新增授权密码(注意!此处这个密码会作为程序里写的邮箱密码,与邮箱登录密码不同,需牢记!):

在这里插入图片描述
3.编写项目代码

javaEmail.jar便捷下载点我

完整代码篇幅过长,这里就只展示相关核心代码了,展示代码稍作修改未测试可能有点小错误:

  • 在此处假设:
    • 发送邮箱叫:send@163.com 授权码:sendpassword
    • 接收邮箱叫:get@163.com 授权码:getpassword

以下代码里的假设邮箱可替换为你的实际邮箱账号和授权码哦!

getting类 用于接收send@163.com邮箱发过来的邮件:


import nszyf.EmailConfig;
import nszyf.impl.myEmail;

import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.MimeMessage;
import java.io.PrintStream;
import java.util.Base64;
import java.util.Date;
import java.util.Properties;

public class getting {
	public static void main(String[] args) {
		// 收件人的电子邮件ID
		String username = "send@163.com";
		// 收件人的电子邮件密码或授权码
		String password = "sendpassword";
		// POP3服务器信息
		String popHost = "pop.163.com";
		int port = 995; // SSL端口
		// 设置系统属性
		Properties props = new Properties();
		props.put("mail.store.protocol", "pop3s");
		props.put("mail.pop3s.host", popHost);
		props.put("mail.pop3s.port", port);
		props.put("mail.pop3s.ssl.enable", "true");
		try {
			// 创建会话对象
			Session session = Session.getInstance(props);
			// 获取POP3存储
			Store store = session.getStore("pop3s");
			store.connect(popHost, username, password);
			// 打开收件箱
			Folder inbox = store.getFolder("INBOX");
			if (inbox == null || !inbox.exists()) {
				System.out.println("收件箱不存在!");
				return ;
			}
			inbox.open(Folder.READ_ONLY);
			// 获取未读消息
			Message[] messages = inbox.getMessages();
				for (int i = 0; i < messages.length; ++i) {
					myemail[i]=new myEmail();
					MimeMessage message = (MimeMessage) messages[i];
					try {//输出接收到的所有邮件
                        System.out.println(message.getSentDate());//发送日期
                        System.out.println(message.getFrom()[0]);//发件人
                        System.out.println(message.getSubject());//邮件主题
                        System.out.println(message.getContent());//邮件内容
					}catch(Exception e){
						System.out.println("某条接收失败");
					}
				}
			// 关闭连接
			inbox.close(false);
			store.close();
			return ;
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("接收消息失败!");
			return ;
		}
	}
}


sender类 用于发送邮件给get@163.com邮箱用户接收(无加密验证连接):

import nszyf.EmailConfig;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class sender {
    public static void main(String[] args) {
        // SMTP服务器地址
        String host = "smtp.163.com";
        // 收件人电子邮件ID
        String to = "get@163.com";
        // 发件人的电子邮件ID
        String user = "send@163.com";
        // 发件人的电子邮件密码
        String password = "sendpassword";
        // SMTP服务器的属性配置
        Properties props = new Properties();
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "25");
        props.put("mail.smtp.starttls.enable", "true"); // 启用STARTTLS
        props.put("mail.smtp.ssl.protocols", "TLSv1.2");
            // 创建会话
        Session session = Session.getInstance(props,
                    new Authenticator() {
                        protected PasswordAuthentication getPasswordAuthentication() {
                            return new PasswordAuthentication(user, password);
                        }
                    });
            // 启用调试
           // session.setDebug(true);
        try {
            // 创建邮件内容
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(user));
            message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse(to)); // 收件人
            message.setSubject("邮件的标题");
            message.setText("邮件的内容");
            // 发送邮件
            Transport.send(message);
            return;
        } catch (MessagingException e) {
			 e.printStackTrace();
            return;
        }
    }
}

常见问题:常见的加密验证连接服务器报错

也不清楚具体原因,有知道的大牛可以评论说下造成这种情况的原因,加密验证连接方式成功过,换台电脑不行(本项目采用无加密连接,不会出现以下报错!):
在这里插入图片描述
4.成品项目展示

1.程序依赖包文件:

在这里插入图片描述
2.便捷式邮箱账密配置:

在这里插入图片描述

3.javaGUI最终界面展示:

在这里插入图片描述
本项目源代码打包下载地址:点我开始下载项目源工程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值