关键词
Java、邮件、SMTP、伪造、发信人、邮箱、由……代发
效果预览
背景说明
作业背景
最近在做设计,设计里涉及到邮件通知功能,但是直接使用自己个人邮箱发送的话显得那啥一点,并且在Python SMTP发送邮件里发现是可以伪造邮件的,故打算把自己的邮箱“打扮”一下,将自己的设计模拟的更真实一点。可不要拿来做不好的事情哦
环境
- Win10、Linux
- Java8(不需要额外的jar)
参考说明
看了不少做JavaEmail的文章,基本上都是采用javax.mail.jar包做的,但是无法实现伪造发信人(这里的发信人指的是邮箱,这个包昵称是可以指定的。可能之前的setSender可以,但是我没用过,我下载的1.6.2版本的,MimeMessage对象没有setSender方法),主要参考了两篇文章(后面给出),都写的很好,我写这篇文章的目的是让朋友们多一个维度参考。下面是我参考的文章:
1.JAVA实现SMTP邮件发送
2.java发送邮件的两种实现方式(包括如何伪造发件人及其原理)
对了还有一篇:Java8 Base64 | 菜鸟教程
实现代码
喜欢图片的朋友看这个,喜欢代码的在后面
源代码:
import java.io.*;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class SMTPSendMail {
public static void main(String[] args) {
String loginUsername = "sample@163.com"; //<- 登录邮箱,这里仅为示例
String loginPassword = "JCTAJSNCUPEMKPZO"; //<- 16位授权密码
String realAddressee = "receiver@xxx.com"; //<- 收件人邮箱
String smtpServer = "smtp.163.com"; //<- smtp服务器地址
int port = 25;
String b64Username = Base64.getEncoder().encodeToString(loginUsername.