Java邮件发送

Java邮件发送,下面的是简单的邮件发送代码,邮件服务器配置在mailServer.properties文件里面。通过简单的文本邮件发送方式发送邮件,暂未使用html格式的邮件发送方式。
javax.mail.jar下载地址:http://www.oracle.com/technetwork/java/javamail/index.html

注:常用发送邮件服务器名称及端口
163 smtp.163.com 25
126 smtp.126.com 25
qq smtp.qq.com 25 //注:若提示“发送邮件错误 454 Authentication failed, please open smtp flag first! ”,在QQ邮箱的设置里面,找到账户-》POP3/IMAP/SMTP选择开启POP3/SMTP服务
139 smtp.139.com或smtp.10086.cn 25 //注:454 Authentication failed

mailServer.properties属性文件代码如下:

mailServerHost=smtp.163.com
mailServerPort=25
authValidate=true
userName=test@163.com
userPassword= testtest
fromAddress=test@163.com
fromUserName=\u663E\u793A\u6211\u54C8\u54C8
上面几个参数是邮件服务器的配置文件,mailServerHost 为 发送邮件的服务器的IP,mailServerPort 为 发送邮件的服务器端口,userName 为  登陆邮件发送服务器的用户名,userPassword 为  登陆邮件发送服务器的密码,fromAddress 为 邮件发送者的地址,fromUserName 为  邮件发送者的名称即显示在他人邮件的发件人,authValidate 为  是否需要身份验证。

MailInfo.java代码如下,主要定义邮件基本信息:

package com.hsinghsu.test;

import java.util.Properties;

/**
 * 邮件信息类
 * @author HsingHsu
 *
 */
public class MailInfo {
	private String mailServerHost; // 发送邮件的服务器的IP
	private String mailServerPort = "25"; // 发送邮件的服务器端口
	private String userName; // 登陆邮件发送服务器的用户名
	private String userPassword; // 登陆邮件发送服务器的密码
	private String fromAddress; // 邮件发送者的地址
	private String toAddress; // 邮件接收者的地址
	private String fromUserName; // 邮件发送者的名称,显示在他人邮件的发件人
	private String mailSubject; // 邮件主题
	private String mailContent; // 邮件的文本内容
	private boolean authValidate = false; // 是否需要身份验证
	private Properties properties; // 邮件会话属性

	public String getMailServerHost() {
		return mailServerHost;
	}

	public void setMailServerHost(String mailServerHost) {
		this.mailServerHost = mailServerHost;
	}

	public String getMailServerPort() {
		return mailServerPort;
	}

	public void setMailServerPort(String mailServerPort) {
		this.mailServerPort = mailServerPort;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getUserPassword() {
		return userPassword;
	}

	public void setUserPassword(String userPassword) {
		this.userPassword = userPassword;
	}

	public String getFromAddress() {
		return fromAddress;
	}

	public void setFromAddress(String fromAddress) {
		this.fromAddress = fromAddress;
	}

	public String getToAddress() {
		return toAddress;
	}

	public void setToAddress(String toAddress) {
		this.toAddress = toAddress;
	}

	public String getMailSubject() {
		return mailSubject;
	}

	public void setMailSubject(String mailSubject) {
		this.mailSubject = mailSubject;
	}

	public String getMailContent() {
		return mailContent;
	}

	public void setMailContent(String mailContent) {
		this.mailContent = mailContent;
	}
	
	public String getFromUserName() {
		return fromUserName;
	}

	public void setFromUserName(String fromUserName) {
		this.fromUserName = fromUserName;
	}

	public boolean isAuthValidate() {
		return authValidate;
	}

	public void setAuthValidate(boolean authValidate) {
		this.authValidate = authValidate;
	}

	public Properties getProperties() {
		Properties p = new Properties();
		p.put("mail.smtp.host", this.mailServerHost);
		p.put("mail.smtp.port", this.mailServerPort);
		p.put("mail.smtp.auth", authValidate ? "true" : "false");
		return p;
	}

	public void setProperties(Properties properties) {
		this.properties = properties;
	}

}

MailAuthenticator.java代码如下,主要是服务器用户的认证:

package com.hsinghsu.test;

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

/**
 * 用来进行服务器对用户的认证
 * @author HsingHsu
 *
 */
public class MailAuthenticator extends Authenticator {
	String userName;
	String userPassword;

	public MailAuthenticator() {
		super();
	}

	public MailAuthenticator(String user, String pwd) {
		super();
		userName = user;
		userPassword = pwd;
	}

	public PasswordAuthentication getPasswordAuthentication() {
		return new PasswordAuthentication(userName, userPassword);
	}

}
MailSender.java代码如下,主要用于邮件发送:
package com.hsinghsu.test;

import java.io.UnsupportedEncodingException;
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.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

/**
 * 发送邮件
 * @author HsingHsu
 *
 */
public class MailSender {
	
	//发送邮件[邮件内容为文本格式]
	public boolean sendMail(MailInfo mailInfo) {
		// 判断是否需要身份认证
		MailAuthenticator authenticator = null;
		Properties pro = mailInfo.getProperties();
		if (mailInfo.isAuthValidate()) {
			// 如果需要身份认证,则创建一个密码验证器
			authenticator = new MailAuthenticator(mailInfo.getUserName(),
					mailInfo.getUserPassword());
		}
		// 根据邮件会话属性和密码验证器构造一个发送邮件的session
		Session sendMailSession = Session
				.getDefaultInstance(pro, authenticator);
		try {
			Message mailMessage = new MimeMessage(sendMailSession); // 根据session创建一个邮件消息
			Address from = new InternetAddress(mailInfo.getFromAddress(),mailInfo.getFromUserName()); // 创建邮件发送者地址
			Address to = new InternetAddress(mailInfo.getToAddress()); // 创建邮件的接收者地址,并设置到邮件消息中
			mailMessage.setFrom(from); // 设置邮件消息的发送者
			mailMessage.setRecipient(Message.RecipientType.TO, to);
			mailMessage.setSubject(mailInfo.getMailSubject()); // 设置邮件消息的主题
			mailMessage.setSentDate(new Date()); // 设置邮件消息发送的时间
			mailMessage.setText(mailInfo.getMailContent());// 设置邮件消息的主要内容

			Transport.send(mailMessage); // 发送邮件
			System.out.println("send ok!");
			return true;
		} catch (MessagingException ex) {
			ex.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return false;
	}
    //邮件内容为html格式
    public static boolean sendHtmlMail(MailInfo mailInfo) {
		// 判断是否需要身份认证
		MailAuthenticator authenticator = null;
		Properties pro = mailInfo.getProperties();
		// 如果需要身份认证,则创建一个密码验证器
		if (mailInfo.isAuthValidate()) {
			authenticator = new MailAuthenticator(mailInfo.getUserName(),
					mailInfo.getUserPassword());
		}
		// 根据邮件会话属性和密码验证器构造一个发送邮件的session
		Session sendMailSession = Session
				.getDefaultInstance(pro, authenticator);
		try {

			Message mailMessage = new MimeMessage(sendMailSession);// 根据session创建一个邮件消息
			Address from = new InternetAddress(mailInfo.getFromAddress());// 创建邮件发送者地址
			mailMessage.setFrom(from);// 设置邮件消息的发送者
			Address to = new InternetAddress(mailInfo.getToAddress());// 创建邮件的接收者地址,并设置到邮件消息中
			mailMessage.setRecipient(Message.RecipientType.TO, to);// Message.RecipientType.TO属性表示接收者的类型为TO
			mailMessage.setSubject(mailInfo.getMailSubject());// 设置邮件消息的主题
			mailMessage.setSentDate(new Date());// 设置邮件消息发送的时间
			Multipart mainPart = new MimeMultipart();// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
			BodyPart html = new MimeBodyPart();// 创建一个包含HTML内容的MimeBodyPart
			html.setContent(mailInfo.getMailContent(),
					"text/html; charset=utf-8");// 设置HTML内容
			mainPart.addBodyPart(html);
			mailMessage.setContent(mainPart);// 将MiniMultipart对象设置为邮件内容
			Transport.send(mailMessage);// 发送邮件
			return true;
		} catch (MessagingException ex) {
			ex.printStackTrace();
		}
		return false;
	}
}
MailTest.java主要用于邮件发送测试:
package com.hsinghsu.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class MailTest {

	public static void main(String[] args) {
		
		//以下参数从properties文件读取
		String mailServerHost = null; // 发送邮件的服务器的IP
		String mailServerPort = null; // 发送邮件的服务器端口
		String userName = null; // 登陆邮件发送服务器的用户名
		String userPassword = null; // 登陆邮件发送服务器的密码
		String fromAddress = null; // 邮件发送者的地址
		String fromUserName = null; // 邮件发送者的名称,显示在他人邮件的发件人
		boolean authValidate = false; // 是否需要身份验证
		
		InputStream in = Object.class.getResourceAsStream("/mailServer.properties"); 
		Properties prop = new Properties();
		try {
			prop.load(in);
			mailServerHost = prop.getProperty("mailServerHost").trim();
			mailServerPort = prop.getProperty("mailServerPort").trim();
			userName = prop.getProperty("userName").trim();
			userPassword = prop.getProperty("userPassword").trim();
			fromAddress = prop.getProperty("fromAddress").trim();
			fromUserName = prop.getProperty("fromUserName").trim();
			authValidate = prop.getProperty("authValidate").trim().equalsIgnoreCase("true");
		} catch (IOException e) {
			System.out.println("读取邮箱服务配置文件出错");
			e.printStackTrace();
		} 
		
		MailInfo mailInfo = new MailInfo();
		mailInfo.setMailServerHost(mailServerHost);//"smtp.163.com"
		mailInfo.setMailServerPort(mailServerPort);//"25"
		mailInfo.setAuthValidate(authValidate);//true
		mailInfo.setUserName(userName);//"test@163.com"
		mailInfo.setUserPassword(userPassword);// "test"
		mailInfo.setFromAddress(fromAddress);//"test@163.com"
		mailInfo.setFromUserName(fromUserName);//"显示我哈哈"
		
		mailInfo.setToAddress("666666@qq.com");//666666@qq.com
		mailInfo.setMailSubject("邮件标题是这个");
		mailInfo.setMailContent("邮件内容是这个");
		// 这个类主要来发送邮件
		MailSender sms = new MailSender();
		sms.sendMail(mailInfo);// 发送文体格式
	}

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值