java 送信简单实例

package OSChina;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Authenticator;

import javax.mail.Message;

import javax.mail.Multipart;

import javax.mail.PasswordAuthentication;

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;

import javax.mail.internet.MimeUtility;

/**
 *
 * <p>
 * Description:use the javamail to send email!Must use sun's mail.jar,no apache
 * jar.
 * </p>
 *
 * @author
 */

public class SendMail {

	public static void main(String[] args) {

		SendMail sendMail = new SendMail("3332211@qq.com",
				"xxxxx@126.com", "smtp.126.com", "username",

				"password", "测试Java Mail", "您好,Javamail!我测试!");

		// 增加附件

		sendMail.addAttachment("D:/english.txt");

		// sendMail.addAttachment("D://IOTest.java");

		if (sendMail.send()) {

			System.out.println("Successful!");

		}

	}

	private String to; // 接收人

	private String from; // 发送人

	private String smtpServer; // smtp地址.

	private String userName;

	private String password;

	private String subject;

	private String content;

	// 记录所有附件文件的集合,发送邮件的附件

	List<String> attachments = new ArrayList<String>();

	public SendMail(String to, String from, String smtpServer, String userName,
			String password, String subject,

			String content) {

		this.to = to;

		this.from = from;

		this.smtpServer = smtpServer;

		this.userName = userName;

		this.password = password;

		this.subject = subject;

		this.content = content;

	}

	// 将字符串转换为中文,否则标题会发生乱码现象,QQ邮箱为UTF-8.用GBK.GB2312都会乱码.

	public String translateChinese(String strText) {

		try {

			// MimeUtility.encodeText(String text, String charset, String

			// encoding) throws java.io.UnsupportedEncodingException

			// text 头值 . charset 字符集。如果此参数为 null,则使用平台的默认字符集。

			// encoding 要使用的编码。当前支持的值为 "B" 和 "Q"。如果此参数为 null,则在大部分字符使用 ASCII

			// 字符集编码时使用 "Q" 编码;其他情况使用 "B" 编码。

			strText = MimeUtility.encodeText(new String(strText.getBytes(),
					"UTF-8"), "UTF-8", "B");

		} catch (Exception e) {

			e.printStackTrace();

		}

		return strText;

	}

	// 增加附件

	public void addAttachment(String fname) {

		attachments.add(fname);

	}

	public boolean send() {

		// 创建邮件Session所需的Properties对象.API建议使用set而不是put(putall).

		Properties props = new Properties();

		props.setProperty("mail.smtp.host", smtpServer);

		props.setProperty("mail.smtp.auth", "true");

		// 创建Session对象,代表JavaMail中的一次邮件会话.

		// Authenticator==>Java mail的身份验证,如QQ邮箱是需要验证的.所以需要用户名,密码.

		// PasswordAuthentication==>系统的密码验证.内部类获取,或者干脆写个静态类也可以.

		Session session = Session.getDefaultInstance(props,

		new Authenticator() {

			public PasswordAuthentication getPasswordAuthentication() {

				return new PasswordAuthentication(userName, password);

			}

		}

		);

		try {

			// 构造MimeMessage并设置相关属性值,MimeMessage就是实际的电子邮件对象.

			MimeMessage msg = new MimeMessage(session);

			// 设置发件人

			msg.setFrom(new InternetAddress(from));

			// 设置收件人,为数组,可输入多个地址.

			InternetAddress[] addresses = { new InternetAddress(to) };

			// Message.RecipientType==>TO(主要接收人),CC(抄送),BCC(密件抄送)

			msg.setRecipients(Message.RecipientType.TO, addresses);

			// 设置邮件主题,如果不是UTF-8就要转换下.

			// subject=translateChinese(subject);

			msg.setSubject(subject);

			// =====================正文部分===========

			// 构造Multipart容器

			Multipart mp = new MimeMultipart();

			// =====================正文文字部分===========

			// 向Multipart添加正文

			MimeBodyPart mbpContent = new MimeBodyPart();

			mbpContent.setText(content);

			// 将BodyPart添加到MultiPart容器中

			mp.addBodyPart(mbpContent);

			// =====================正文附件部分===========

			// 向MulitPart添加附件,遍历附件列表,将所有文件添加到邮件消息里

			for (String efile : attachments) {

				MimeBodyPart mbpFile = new MimeBodyPart();

				// 以文件名创建FileDataSource对象

				FileDataSource fds = new FileDataSource(efile);

				// 处理附件

				mbpFile.setDataHandler(new DataHandler(fds));

				mbpFile.setFileName(fds.getName());

				// 将BodyPart添加到Multipart容器中

				mp.addBodyPart(mbpFile);

			}

			attachments.clear();

			// 向MimeMessage添加Multipart

			msg.setContent(mp);

			msg.setSentDate(new Date());

			// 发送邮件,使用如下方法!

			Transport.send(msg);

		} catch (Exception e) {

			e.printStackTrace();

			return false;

		}

		return true;

	}

	public String getTo() {

		return to;

	}

	public void setTo(String to) {

		this.to = to;

	}

	public String getFrom() {

		return from;

	}

	public void setFrom(String from) {

		this.from = from;

	}

	public String getSmtpServer() {

		return smtpServer;

	}

	public void setSmtpServer(String smtpServer) {

		this.smtpServer = smtpServer;

	}

	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 getSubject() {

		return subject;

	}

	public void setSubject(String subject) {

		this.subject = subject;

	}

	public String getContent() {

		return content;

	}

	public void setContent(String content) {

		this.content = content;

	}


}

转载于:https://my.oschina.net/xiufeng/blog/108939

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值