Java发送邮件例子

Java发送邮件例子


MailUtil.java

package com.util;

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.activation.*;

public class MailUtil {
	private static final Logger logger = Logger.getLogger(MailUtil.class.getName());
	private String host = ""; 		 // smtp服务器
	private String port = ""; 		 // 端口
	private String from = ""; 		 // 发件人地址
	private String to = ""; 		 // 收件人地址
	private String cc = ""; 	 	 // 收件人地址
	private String affix = ""; 		 // 附件地址
	private String affixName = "";	 // 附件名称
	private String user = "";        // 用户名
	private String pwd =  "";        // 密码
	private String subject = "";     // 邮件标题

	public void setAddress(String from, String to, String cc,String subject) {
		this.from = from;
		this.to = to;
		this.cc = cc;
		this.subject = subject;
	}

	public void setAffix(String affix,String affixName) {
		this.affix = affix;
		this.affixName = affixName;
	}

	public void send(String host,String port, String user, String pwd) {
		this.host = host;
		this.port = port;
		this.user = user;
		this.pwd = pwd;

		Properties props = new Properties();
		
		// 设置发送邮件的邮件服务器的属性
		props.put("mail.smtp.host", host);
		props.put("mail.smtp.port", port);
		// 需要经过授权,也就是有户名和密码的校验,这样才能通过验证
		props.put("mail.smtp.auth", "true");  
		
		// 用刚刚设置好的props对象构建一个session
		Session session = Session.getDefaultInstance(props);

		// 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使
		session.setDebug(true);

		// 用session为参数定义消息对象
		MimeMessage message = new MimeMessage(session);
		try {
			// 加载发件人地址
			message.setFrom(new InternetAddress(from));
			// 加载收件人地址
			message.addRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
			// 加载抄送人地址地址
			message.addRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
			// 加载标题
			message.setSubject(subject);

			// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
			Multipart multipart = new MimeMultipart();

			// 设置邮件的文本内容
			BodyPart contentPart = new MimeBodyPart();
			contentPart.setText(Constants.REPORT_MAIL_TEXT);
			multipart.addBodyPart(contentPart);
			// 添加附件
			BodyPart messageBodyPart = new MimeBodyPart();
			DataSource source = new FileDataSource(affix);
			// 添加附件的内容
			messageBodyPart.setDataHandler(new DataHandler(source));
			// 添加附件的标题
			// Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
			sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
			messageBodyPart.setFileName("=?GBK?B?"+ enc.encode(affixName.getBytes()) + "?=");
			multipart.addBodyPart(messageBodyPart);

			// 将multipart对象放到message中
			message.setContent(multipart);
			// 保存邮件
			message.saveChanges();
			// 发送邮件
			Transport transport = session.getTransport("smtp");
			// 连接服务器的邮箱
			transport.connect(host, user, pwd);
			// 把邮件发送出去
			transport.sendMessage(message, message.getAllRecipients());
			transport.close();
		} catch (Exception e) {
			logger.log(Level.WARNING, "email report error", e);
		}
	}
}


调用例子:

 MailUtil mu = new MailUtil();
 mu.setAffix(filePreFix+fileName,fileName);
 mu.setAddress(systemConfigManager.getReport_mail_from(), systemConfigManager.getReport_mail_to(),systemConfigManager.getReport_mail_cc(),Constants.REPORT_MAIL_SUBJECT);
 mu.send(systemConfigManager.report_mail_smtp_host,systemConfigManager.report_mail_smtp_port,systemConfigManager.report_mail_smtp_username, systemConfigManager.report_mail_smtp_password);




 MailUtil mu = new MailUtil();
            mu.setAffix(filePreFix+fileName,fileName);
            mu.setAddress(systemConfigManager.getReport_mail_from(), systemConfigManager.getReport_mail_to(),systemConfigManager.getReport_mail_cc(),Constants.REPORT_MAIL_SUBJECT);
            mu.send(systemConfigManager.report_mail_smtp_host,systemConfigManager.report_mail_smtp_port,systemConfigManager.report_mail_smtp_username, systemConfigManager.report_mail_smtp_password);










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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值