JavaMail创建和发送邮件

前言

之前学Java Web的时候,看到很多教程都有介绍JavaMail,看上去很心动。这个功能还是很好用的,比如在登录注册的时候,发一份包含链接的邮箱到用户邮箱,用户打开邮箱点击链接完成验证。但是教程介绍的都是用QQ、163这类已有的邮件服务器,用这些邮件服务器有个缺点,每天发送邮件的次数有上限,超过了就不给用。今天周六,正好有空,自己搭建了一个邮件服务器,邮件随便发,无上限,妥妥的~哈哈哈

Ubuntu搭建Apache James邮件服务器

这里先介绍一下Apache James邮件服务器。Apache James,Apache Mail Enterprise Server的缩写,是一个用Java编写的开源SMTP和POP3邮件服务器,可以用来收、发电子邮件。我们今天的主角就是它。

1.下载James

官网下载James,这里我下的是二进制稳定版的,第一次下的是2.3.2.1版,发现总是报错,后来下了2.3.2版就没问题了
这里写图片描述

这里写图片描述

2.上传压缩包

将上面下载下来的压缩包通过FTP客户端上传到服务器,我上传到服务器的/opt目录下,上传之前记得给予权限

chmod -R 777 opt

这里写图片描述

3.安装JDK

James是用Java写的,要运行当然少不了JDK,具体安装步骤我这里不细说,不懂的朋友可以看看我之前的博客Tomcat在Ubuntu中的安装和部署。我的JDK已经装好了,验证一下
这里写图片描述

4.解压压缩包
tar -zxvf james-binary-2.3.2.1.tar.gz 
5.启动James服务器

进入到james的bin目录,运行run.sh脚本

sh run.sh

James服务器启动成功
这里写图片描述

6.修改配置文件

Ctrl+C停止当前运行的后台,进入/opt/james-2.3.2.1/apps/james/SAR-INF目录

cd /opt/james-2.3.2.1/apps/james/SAR-INF

修改配置文件

vim config.xml
  • 修改域名配置
    这里写图片描述

autodetct:false 表示使用指定的server name
autodetectIP:false 表示不会为你的servername加上ip
servername 就改成你所需要的域名就行

  • 注释掉这段代码
    这里写图片描述

  • 然后再注释掉这段
    这里写图片描述

这里配置局域网广播地址,目的是允许此网段的机子可以访问到这个邮件服务器,所以注释掉

  • 配置dnsserver
    查找ubuntu服务器配置的DNS
cat /etc/resolv.conf

这里写图片描述

把这两个IP记录下来

然后再配置SAR-INF下面的config.xml
这里写图片描述

  • 修改james登录密码
    这里写图片描述
7.修改hosts文件

上面配置了jehoiada.cn,所以需要修改一下hosts

vim /etc/hosts

这里写图片描述

8.重启James服务器

到这里我们就配置好了James,可以让它后台运行了

nohup ./run.sh &
9.添加用户

打开windows的控制台,输入

telnet [IP地址] 4555

提示输入用户名和密码,这个用户名和密码就是你刚刚在config.xml里面设置的

然后添加用户

adduser [用户名] [密码]
JavaMail创建和发送邮件

添加Maven依赖

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-email</artifactId>
    <version>1.4</version>
</dependency>

JavaMail发送邮件,相当于邮件客户端

Properties props = new Properties();

// 开启debug调试
props.setProperty("mail.debug", "true");
// 发送服务器需要身份验证
props.setProperty("mail.smtp.auth", "true");
// 设置邮件服务器主机名
props.setProperty("mail.host", "邮件服务器主机名");
// 发送邮件协议名称
props.setProperty("mail.transport.protocol", "smtp");

Session session = Session.getInstance(props);

//邮件内容部分
Message msg = new MimeMessage(session);
msg.setSubject("hello");
msg.setText("hello world");
msg.setFrom(new InternetAddress("double@jehoiada.cn"));

//邮件发送者
msg.setFrom(new InternetAddress("发送人的邮箱地址"));

//发送邮件
Transport transport = session.getTransport();
transport.connect("smtp.qq.com", "发送人的邮箱地址", "你的邮箱密码");

transport.sendMessage(msg, new Address[] { new InternetAddress("接收人的邮箱地址") });
transport.close();
参考

Linux搭建apache james邮件服务器

Java 基于JavaMail实现向QQ邮箱发送邮件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值