【JAVA】【入门向】| 使用Java发送邮箱【javax.mail】
一、前言
在写一些项目时(比如涉及到账号需要找回),我们不可避免需要用上邮件,而实际上java可以通过代码直接实现自动发邮件。
二、准备
如果使用Maven,请在pom中加入以下依赖:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.4.4</version>
</dependency>
</dependencies>
如果和本文一样使用常规javaee开发,请下载以下两个jar:
然后将两个jar添加到模块的库(libs)。
至此,让我们正式开始写代码罢。
三、代码
(心急的直接往下拖有完整代码)
为了方便写,我把所有代码写到了一个Main类中。 先定义俩常量,是发件邮箱及授权码(再说一遍:不是邮密!)
static final String USER = "mymail@example.com"; static final String PASSWD = "YOURCODE*****";
我们不妨先确定收件邮箱和信件内容,收件人可以和发件人一样,也可以是你的别的邮箱:
static final String toMail = "anothermail@example2.com"; static String TEXT = "hello world";//正文 static String SUBJECT = "test";//标题
首先创建一个Properties对象,里面填写各种信息:
接下来获取一个Session
Session session = Session.getDefaultInstance(properties, authenticator); session.setDebug(true);//测试时可以加上这句,会显示发件时的详细信息,便于找错
然后获取一个邮件实例:
MimeMessage msg = new MimeMessage(session);
浅浅设一下信息的参数:
msg.setFrom(new InternetAddress(USER));//发件人邮箱 msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(toMail));//收件人邮箱 msg.setSubject(SUBJECT);//标题 msg.setContent(TEXT, "text/html;charset=utf-8");//使用utf-8编码 msg.saveChanges();//保存修改
然后就可以发送辣:
Transport.send(msg);
请注意,导入的是以下的东西:
import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.util.Properties;
找不到的话就是没有添加依赖哦。
附上我稍作整理后的完整代码:
激动的心,颤抖的手,点下运行按钮罢! 成功力! 这只是纯文字邮件,含图片、附件的邮件需要稍改一下(其实就是MimeMessage那里改一点就行了),我就不写了。毕竟是入门向,看完本文再去看那些难度高一点的文章应该就能看懂了。
@HaohaoCppDebuger|寻兰 2022/10/6
