java发送Email代码实现
java发送Email代码实现
指尖残雪 发表于1年前
java发送Email代码实现
  • 发表于 1年前
  • 阅读 24
  • 收藏 2
  • 点赞 2
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

非常感谢http://www.codefans.net/articles/209.shtml博文作者。

代码非常简单,就不做过多解释。

首先需要导入mail.jar,本例子使用的jar包下载地址:http://download.csdn.net/detail/harderxin/4451541

直接上代码!

package org.dyb.email;

import java.util.Properties;

import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
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;

public class Mail {

	private MimeMessage mimeMsg;
	private Session session;
	private Properties props;
	private String username;
	private String password;
	private Multipart mp;

	public Mail() {
	}

	public Mail(String smtp) {
		setSmtpHost(smtp);
		createMimeMessage();
	}

	private void setSmtpHost(String smtp) {
		System.out.println("设置系统属性:mail.smtp.host  " + smtp);
		if (null == props) {
			props = System.getProperties();
		}
		props.put("mail.smtp.host", smtp);
	}

	private boolean createMimeMessage() {
		try {
			System.out.println("准备获取邮件会话对象!");
			session = Session.getDefaultInstance(props, null);
		} catch (Exception e) {
			System.out.println("获取邮件会话错误!" + e);
			return false;
		}
		System.out.println("准备创建MIME邮件对象!");
		try {
			mimeMsg = new MimeMessage(session);
			mp = new MimeMultipart();
			return true;
		} catch (Exception e) {
			System.out.println("创建MIME邮件对象失败!" + e);
			return false;
		}
	}

	/**
	 * 定义SMTP是否需要验证
	 */
	public void setNeedAuth(boolean need) {
		System.out.println("设置smtp身份认证:mail.smtp.auth = " + need);
		if (null == props) {
			props = System.getProperties();
		}
		if (need)
			props.put("mail.smtp.auth", "true");
		else
			props.put("mail.smtp.auth", "false");
	}

	public void setNameAndPassword(String username, String password) {
		this.username = username;
		this.password = password;
	}

	/**
	 * 定义邮件主题
	 * 
	 * @return
	 */
	public boolean setSubject(String mailSubject) {
		System.out.println("定义邮件主题!");
		try {
			mimeMsg.setSubject(mailSubject);
			return true;
		} catch (Exception e) {
			System.err.println("定义邮件主题发生错误!" + e);
			return false;
		}
	}

	public boolean setBody(String mailBody) {
		try {
			BodyPart bp = new MimeBodyPart();
			bp.setContent("" + mailBody, "text/html;charset=GBK");
			mp.addBodyPart(bp);
			return true;
		} catch (Exception e) {
			return false;
		}
	}

	/**
	 * 设置发信人
	 * 
	 * @return
	 */
	public boolean setFrom(String from) {
		System.out.println("设置发信人!");
		try {
			mimeMsg.setFrom(new InternetAddress(from));
			return true;
		} catch (Exception e) {
			return false;
		}
	}

	/**
	 * 定义收信人
	 * 
	 * @param to
	 * @return
	 */
	public boolean setTo(String to) {
		if (to == null) {
			System.out.println("没有定义收信人!");
			return false;
		}
		System.out.println("定义收信人!");
		try {
			mimeMsg.setRecipients(Message.RecipientType.TO,
					InternetAddress.parse(to));
			return true;
		} catch (Exception e) {
			return false;
		}
	}

	/**
	 * 定义抄送人
	 * 
	 * @param copyto
	 * @return
	 */
	public boolean setCopyTo(String copyto) {
		if (copyto == null)
			return false;
		try {
			mimeMsg.setRecipients(Message.RecipientType.CC,
					(Address[]) InternetAddress.parse(copyto));
			return true;
		} catch (Exception e) {
			return false;
		}
	}

	public boolean sendOut() {
		try {
			mimeMsg.setContent(mp);
			mimeMsg.saveChanges();
			System.out.println("邮件发送中....");
			Session mailSession = Session.getInstance(props, null);
			Transport transport = mailSession.getTransport("smtp");
			transport.connect((String) props.get("mail.smtp.host"), username,
					password);
			transport.sendMessage(mimeMsg,
					mimeMsg.getRecipients(Message.RecipientType.TO));
			System.out.println("发送成功!");
			transport.close();
			return true;
		} catch (Exception e) {
			System.err.println("邮件失败!" + e);
			return false;
		}
	}

	/**
	 * 调用sendOut方法完成发送
	 * 
	 * @param smtp
	 * @param from
	 * @param to
	 * @param copyto
	 * @param subject
	 * @param content
	 * @param username
	 * @param password
	 * @return
	 */
	public static boolean sendAndCc(String smtp, String from, String to,
			String copyto, String subject, String content, String username,
			String password) {
		Mail theMail = new Mail(smtp);
		theMail.setNeedAuth(true); // 验证
		if (!theMail.setSubject(subject))
			return false;
		if (!theMail.setBody(content))
			return false;
		if (!theMail.setTo(to))
			return false;
		if (!theMail.setCopyTo(copyto))
			return false;
		if (!theMail.setFrom(from))
			return false;
		theMail.setNameAndPassword(username, password);
		if (!theMail.sendOut())
			return false;
		return true;
	}

	public static void main(String[] args) {
		String smtp = "smtp.163.com";// smtp服务器
		String from = "xxxxx@163.com";// 邮件显示名称
		String to = "1111111@qq.com";// 收件人的邮件地址,必须是真实地址
		String copyto = "";// 抄送人邮件地址
		String subject = "测试邮件";// 邮件标题
		String content = "你好!";// 邮件内容
		String username = "xxxxxxx@163.com";// 发件人真实的账户名
		String password = "xxxxxxx";// 发件人密码
		Mail.sendAndCc(smtp, from, to, copyto, subject, content, username,
				password);
	}

}

运行结果:

设置系统属性:mail.smtp.host  smtp.163.com
准备获取邮件会话对象!
准备创建MIME邮件对象!
设置smtp身份认证:mail.smtp.auth = true
定义邮件主题!
定义收信人!
设置发信人!
邮件发送中....
发送成功!

共有 人打赏支持
粉丝 8
博文 73
码字总数 0
×
指尖残雪
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: