java发送邮件功能

昨天在工作用,用户说需要用126邮箱发送验证码,但是没有用过啊, 所以经过昨天下午的研究后明白了整个流程。

第一  :邮箱设置

1.需要注册126邮箱账号(企业和个人均可)

2.登录126邮箱,进入首页面,头部有设置按钮,点击设置按钮,出现POP3/SMTP/IMAP,点击进去,开启SMPT服务。(开启smpt服务需绑定手机号之后设置一个授权密码),这样邮箱就可以发送邮件了。


第二 :java环境设置

1.添加mail.jar包


第三:java发送邮件代码

邮件发送共有两种形式,

1.以文本方式发送邮件,具体步骤如下:

 /**
     * 以文本格式发送邮件
     * @param mailInfo
     */
    public boolean sendTextMail(MailSenderInfo mailInfo) throws Exception {
        // 判断是否需要身份认证
        MyAuthenticator authenticator = null;
        Properties pro = mailInfo.getProperties();
        if (mailInfo.isValidate()) {
            // 如果需要身份认证,则创建一个密码验证器
            authenticator = new MyAuthenticator(mailInfo.getUserName(),
                    mailInfo.getPassword());
        }
        // 根据邮件会话属性和密码验证器构造一个发送邮件的session
        Session sendMailSession = Session
                .getDefaultInstance(pro, authenticator);
        logBefore(logger, "构造一个发送邮件的session");
        // 根据session创建一个邮件消息
        Message mailMessage = new MimeMessage(sendMailSession);
        // 创建邮件发送者地址
        Address from = new InternetAddress(mailInfo.getFromAddress());
        // 设置邮件消息的发送者
        mailMessage.setFrom(from);
        // 创建邮件的接收者地址,并设置到邮件消息中
        Address to = new InternetAddress(mailInfo.getToAddress());
        mailMessage.setRecipient(Message.RecipientType.TO, to);
        // 设置邮件消息的主题
        mailMessage.setSubject(mailInfo.getSubject());
        // 设置邮件消息发送的时间
        mailMessage.setSentDate(new Date());
        // 设置邮件消息的主要内容
        String mailContent = mailInfo.getContent();
        mailMessage.setText(mailContent);
        // 发送邮件
        Transport.send(mailMessage);
        logBefore(logger, "发送成功!");
        return true;
    }

把账号等信息在此封装:

 public void sendtoemail(String toEMAIL, String TITLE, String CONTENT) throws Exception {
        // 这个类主要是设置邮件
        MailSenderInfo mailInfo = new MailSenderInfo();
        // SMTP邮件服务器
        mailInfo.setMailServerHost("smtp.126.com");
        // SMTP邮件服务器默认端口
        mailInfo.setMailServerPort("25");
        // 是否要求身份认证
        mailInfo.setValidate(true);
        // 显示发件人
        mailInfo.setUserName("xxx@126.com");
        // 邮箱密码
        mailInfo.setPassword("123456789");// 您的邮箱密码
        // 发送地址
        mailInfo.setFromAddress("xxx@126.com");
        // 接受地址
        mailInfo.setToAddress(toEMAIL);
        // 邮箱标题
        mailInfo.setSubject(TITLE);
        // 邮箱内容
        mailInfo.setContent(CONTENT);
        // 这个类主要来发送邮件
        SimpleMailSender sms = new SimpleMailSender();
        try {
            sms.sendTextMail(mailInfo);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

最后调用sendtoemail方法即可比如:

<span style="font-size:18px;">SimpleMailSender sendemail=new SimpleMailSender();
String title="注册验证码";
String content = "您的注册验证码为:"+code+"【xxx】";
sendemail.sendtoemail(email, title, content);</span>


2.以HTML格式发送邮件,使用方法同上。

/**
	 * 以HTML格式发送邮件
	 * 
	 * @param mailInfo
	 *            待发送的邮件信息
	 */
	public boolean sendHtmlMail(MailSenderInfo mailInfo) throws Exception {
		// 判断是否需要身份认证
		MyAuthenticator authenticator = null;
		Properties pro = mailInfo.getProperties();
		// 如果需要身份认证,则创建一个密码验证器
		if (mailInfo.isValidate()) {
			authenticator = new MyAuthenticator(mailInfo.getUserName(),
					mailInfo.getPassword());
		}
		// 根据邮件会话属性和密码验证器构造一个发送邮件的session
		Session sendMailSession = Session
				.getDefaultInstance(pro, authenticator);
		// 根据session创建一个邮件消息
		Message mailMessage = new MimeMessage(sendMailSession);
		// 创建邮件发送者地址
		Address from = new InternetAddress(mailInfo.getFromAddress());
		// 设置邮件消息的发送者
		mailMessage.setFrom(from);
		// 创建邮件的接收者地址,并设置到邮件消息中
		Address to = new InternetAddress(mailInfo.getToAddress());
		// Message.RecipientType.TO属性表示接收者的类型为TO
		mailMessage.setRecipient(Message.RecipientType.TO, to);
		// 设置邮件消息的主题
		mailMessage.setSubject(mailInfo.getSubject());
		// 设置邮件消息发送的时间
		mailMessage.setSentDate(new Date());
		// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
		Multipart mainPart = new MimeMultipart();
		// 创建一个包含HTML内容的MimeBodyPart
		BodyPart html = new MimeBodyPart();
		// 设置HTML内容
		html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
		mainPart.addBodyPart(html);
		// 将MiniMultipart对象设置为邮件内容
		mailMessage.setContent(mainPart);
		// 发送邮件
		Transport.send(mailMessage);
		return true;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值