发送邮件功能,以及邮箱报错501,535!!!

前言
大多开发项目中都会有着发送邮件的需求,例如定时发送邮件,验证邮件等等。
此文介绍发送邮件功能


前期准备

  1. mail.jar包
  2. 创建一个class文件
    class文件内容(模板):
public class Mail {

	public static void sendMail(String email,String subject, String emailMsg)
			throws AddressException, MessagingException {
		// 1.创建一个程序与邮件服务器会话对象 Session

		Properties props = new Properties();
		props.setProperty("mail.transport.protocol", "SMTP");
		props.setProperty("mail.host", "smtp.163.com");
		//smtp.163.com此为网易的smtp服务器网址,不同邮箱不同(注意)
		props.setProperty("mail.smtp.auth", "true");
		// 指定验证为true
		
		// 创建验证器
		Authenticator auth = new Authenticator() {
			public PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication("Ruian****", "199604****");
				//Ruian****为发送邮件的邮箱名
				//199604****为客户端授权码(注意)
			}
		};

		Session session = Session.getInstance(props, auth);

		// 2.创建一个Message,它相当于是邮件内容
		Message message = new MimeMessage(session);

		message.setFrom(new InternetAddress("Ruian****@163.com")); // 设置发送者

		message.setRecipient(RecipientType.TO, new InternetAddress(email)); // 设置发送方式与接收者

		message.setSubject(subject);
		// message.setText("这是一封激活邮件,请点击");

		message.setContent(emailMsg, "text/html;charset=utf-8");

		// 3.创建 Transport用于将邮件发送

		Transport.send(message);
	}
}

创建一个servlet文件用于发送邮件:

package cn.mldn.mail;

import java.io.IOException;

import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SendMail extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		try {
			mail.sendMail("2645595**[email protected]","催还书单", "催还内容");
			//设置接收邮件联系人的邮箱
		} catch (AddressException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

以上则可完成发送邮件功能。

Class类中注意点:
第一、smtp发送邮件的网址不要写错,例:网易:smtp.163.com。

否则可能报错:501 Bad address syntax

第二、new PasswordAuthentication(“Ruian****”, “199604****”);
//199604****为客户端授权码(注意)

否则可能报错:报535 Error: authentication failed
参考博客:https://www.cnblogs.com/wangyayun/p/6066637.html

测试成功后:

发送邮件功能,以及邮箱报错501,535!!!_第1张图片

你可能感兴趣的:(java自学,java)