Java实现邮件发送

邮件发送,如今已经是很普遍了,随便去哪个网站注册一个账号,可能都会用到邮箱接收验证码,那么今天这篇文章将介绍一下:

java如何实现邮件发送。

这里讲的邮件发送是指通过代理进行邮件发送,即通过代理邮件服务器进行邮件地发送,所以,想要发送邮件,我们必须得有个自己的邮箱号。

我用的是新浪的邮箱,登录自己的新浪邮箱后,开启客户端代理服务,具体操作如下:

设置 ==> 客户端pop/imap/smtp ==> IMAP4/SMTP服务 ==> 开启

将SMTP服务器地址:smtp.sina.cn 拷贝下来,待会儿要用到。

在这里插入图片描述

邮箱的设置完成,接下来直接上代码,想要让代码编译通过,我们还需要导一个包:javax.mail,我用的是1.6.0版本的,大家可以在网上找到,下面是核心类代码:

package com.yc;
 
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
 
public class Mail {
	// 发送者邮箱
	private String myEmailAccount = "";
	// 发件人昵称
	private String sender = "";
	// 发送者邮箱的密码
	private String myEmailpassword = "";
	// 使用的邮箱官方网站
	private String myEmailSMTPhost = "";
	// 收件人
	private String receiveMailAccount = "";
	// 邮件主题
	private String theme = "";
	// 邮件内容
	private String contents = "";
 
/**
 * 无参构造方法
 */
public Mail() {
	super();
}

/**
 * 构造方法
 * 
 * @param myEmailAccount
 * @param sender
 * @param myEmailpassword
 * @param myEmailSMTPhost
 * @param receiveMailAccount
 * @param theme
 * @param contents
 */
public Mail(String myEmailAccount, String sender, String myEmailpassword, String myEmailSMTPhost,
		String receiveMailAccount, String theme, String contents) {
	this.myEmailAccount = myEmailAccount;
	this.sender = sender;
	this.myEmailpassword = myEmailpassword;
	this.myEmailSMTPhost = myEmailSMTPhost;
	this.receiveMailAccount = receiveMailAccount;
	this.theme = theme;
	this.contents = contents;
}

// 下面是 get set 方法

public String getMyEmailAccount() {
	return myEmailAccount;
}

public void setMyEmailAccount(String myEmailAccount) {
	this.myEmailAccount = myEmailAccount;
}

public String getSender() {
	return sender;
}

public void setSender(String sender) {
	this.sender = sender;
}

public String getMyEmailpassword() {
	return myEmailpassword;
}

public void setMyEmailpassword(String myEmailpassword) {
	this.myEmailpassword = myEmailpassword;
}

public String getMyEmailSMTPhost() {
	return myEmailSMTPhost;
}

public void setMyEmailSMTPhost(String myEmailSMTPhost) {
	this.myEmailSMTPhost = myEmailSMTPhost;
}

public String getReceiveMailAccount() {
	return receiveMailAccount;
}

public void setReceiveMailAccount(String receiveMailAccount) {
	this.receiveMailAccount = receiveMailAccount;
}

public String getTheme() {
	return theme;
}

public void setTheme(String theme) {
	this.theme = theme;
}

public String getContents() {
	return contents;
}

public void setContents(String contents) {
	this.contents = contents;
}

public void service() throws MessagingException, UnsupportedEncodingException {
	// 1.创建参数设置,用于连接邮件服务器
	Properties props = new Properties();
	props.setProperty("mail.transport.protocol", "smtp");// 使用协议
	props.setProperty("mail.smtp.host", myEmailSMTPhost);
	props.setProperty("mail.smtp.auth", "true");
	// 2.根据配置创建会话对象
	Session session = Session.getInstance(props);
	session.setDebug(true);
	// 3.创建一封信
	MimeMessage message = createMessage(session);
	// 4.根据Session 获取邮件传送对象
	Transport transport = session.getTransport();
	// 5.获取连接
	transport.connect(myEmailAccount, myEmailpassword);
	// 6.发送邮件
	transport.sendMessage(message, message.getAllRecipients());
	// 7.关闭连接
	transport.close();
}

private MimeMessage createMessage(Session session) throws UnsupportedEncodingException, MessagingException {
	// 1、创建一封邮件
	MimeMessage message = new MimeMessage(session);
	// 2、From:发件人
	message.setFrom(new InternetAddress(myEmailAccount, sender, "UTF-8"));
	// 3、To:收件人
	message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMailAccount, "XXX", "UTF-8"));
	// 4、Subject:邮件主题
	message.setSubject(theme, "UTF-8");
	// 5、Content:邮件正文
	message.setContent(contents, "text/html;charset=UTF-8");
	// 6、设置发件时间
	message.setSentDate(new Date());
	// 7、保存设置
	message.saveChanges();
	return message;
}

}

上面这个核心类里面的注释我都写得比较的清晰了,相信大家可以看得很明白,下面我们写一个测试类

在这里插入图片描述

运行测试类,没有报错的话,我们的接收者邮箱就会收到我们发的邮件,我将邮件发送到了我的QQ邮箱,如下图:

在这里插入图片描述

这样,我们便用java实现了邮件地发送

注意:如果运行没报错,接收者邮箱却没有接收到邮件的情况,可以去接收者邮箱的垃圾箱看看,有可能被当做垃圾邮件处理了。

OK,java实现邮件发送的经验分享到此告一段落,谢谢大家的参阅。


转自原创:https://blog.csdn.net/jam_fanatic/article/details/82840966

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值