欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java Mail学习

程序员文章站 2022-06-08 09:06:43
...
邮件实体类 MailInfo
package org.xfl.jmail;

import java.util.Properties;

public class MailInfo {
	private String host;// 邮件服务器域名或IP
	private String from;// 发件人
	private String port;
	private String to;// 收件人
	private String cc;// 抄送人
	private String username;// 发件人用户名
	private String password;// 发件人密码
	private String title;// 邮件的主题
	private String content;// 邮件的内容
	private boolean validate = false;

	public String getHost() {
		return host;
	}

	public void setHost(String host) {
		this.host = host;
	}

	public String getFrom() {
		return from;
	}

	public void setFrom(String from) {
		this.from = from;
	}

	public String getTo() {
		return to;
	}

	public void setTo(String to) {
		this.to = to;
	}

	public String getCc() {
		return cc;
	}

	public void setCc(String cc) {
		this.cc = cc;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public String getPort() {
		return port;
	}

	public void setPort(String port) {
		this.port = port;
	}

	public boolean isValidate() {
		return validate;
	}

	public void setValidate(boolean validate) {
		this.validate = validate;
	}

	public Properties getProperty() {
		Properties prop = new Properties();
		prop.put("mail.smtp.host", this.host);
		prop.put("mail.smtp.port", this.port);
		prop.put("mail.smtp.auth", validate ? "true" : "false");    
		return prop;
	}

}


自定义验证类MyAuthenticator
package org.xfl.jmail;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class MyAuthenticator extends Authenticator {
	 private String strUser;
	 private String strPwd;
	 public MyAuthenticator(String user, String password) {
		this.strUser = user;
	 	this.strPwd = password;
	 }
	 protected PasswordAuthentication getPasswordAuthentication() {
	    return new PasswordAuthentication(strUser, strPwd);
	 }
}


发送器类

package org.xfl.jmail;

import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailSender {
	protected boolean sendMail(MailInfo mailInfo) {
		Properties prop = mailInfo.getProperty();
		MyAuthenticator auth = null;
		if (mailInfo.isValidate()) {
			auth = new MyAuthenticator(mailInfo.getUsername(),
					mailInfo.getPassword());
		}
		Session sendMailSession = Session.getDefaultInstance(prop, auth);
		try {
			// 根据session创建一个邮件消息
			Message mailMessage = new MimeMessage(sendMailSession);
			// 创建邮件发送者地址
			Address from = new InternetAddress(mailInfo.getFrom());
			// 设置邮件消息的发送者
			mailMessage.setFrom(from);
			// 创建邮件的接收者地址,并设置到邮件消息中
			Address to = new InternetAddress(mailInfo.getTo());
			mailMessage.setRecipient(Message.RecipientType.TO, to);
			// 设置邮件消息的主题
			mailMessage.setSubject(mailInfo.getTitle());
			// 设置邮件消息发送的时间
			mailMessage.setSentDate(new Date());
			// 设置邮件消息的主要内容
			String mailContent = mailInfo.getContent();
			mailMessage.setText(mailContent);
			// 发送邮件
			Transport.send(mailMessage);
			return true;
		} catch (MessagingException ex) {
			ex.printStackTrace();
		}
		return false;
	}

}



测试:
package org.xfl.jmail;

public class JavaMailMain {

	private static String user = "****@sina.com";
	private static String pwd = "****";

	public static void main(String[] args) {
			MailInfo mail = new MailInfo();
			mail.setFrom("****@sina.com");
			mail.setTo("****@qq.com");
			mail.setTitle("Java Mail test");
			mail.setContent("hello world");
			mail.setUsername(user);
			mail.setPassword(pwd);
			mail.setHost("smtp.sina.com");
			mail.setPort("25");
			mail.setValidate(true);
			MailSender jmail = new MailSender();
			if (jmail.sendMail(mail)) {
				System.out.println("ok");
			}
			else {
				System.out.println("failure");
			}
	}

	
}

相关标签: java mail