發送郵件(java)

像發送郵件這種都是一個工具代碼,因此備份一下,若有須要能夠直接複製:java

在使用java發送郵件時要 下載javax.mail.jar 包,這個包在csdn 下有,下載地址:javax.mail.jar 下載服務器

package com.fang.autosendmail;

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

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 AutoSendMail {
	private String host = "smtp.fang.com"; // smtp服務器
	private String user = "wanghaidong@ssa.com"; // 用戶名
	private String pwd = "adcg321d"; // 密碼
	private String from = "wanghaidong@ssa.com"; // 發件人地址,發件人地址和用戶名都必須是正確的由於要驗證
	private String to = "2275635@qq.com"; // 收件人地址,多個收件人要用半角符隔開
	private String cc = "591742@qq.com,zhangminghao@soufun.com"; // 抄送,若是是多個則使用半角符隔開
	private String bcc = "zhangminghao@soufun.com"; // 祕密抄送,若是是多個則使用半角符隔開
	private String subject = "發郵件測試"; // 郵件標題

	@SuppressWarnings("static-access")
	public void send(String txt) {
		Properties props = new Properties();
		// 設置發送郵件的郵件服務器的屬性
		props.put("mail.smtp.host", host);
		// 須要通過受權,也就是有戶名和密碼的校驗,這樣才能經過驗證(必定要有這一條)
		props.put("mail.smtp.auth", "true");
		// 用剛剛設置好的props對象構建一個session
		Session session = Session.getDefaultInstance(props);
		// 有了這句即可以在發送郵件的過程當中在console處顯示過程信息,供調試使
		// 用(你能夠在控制檯(console)上看到發送郵件的過程)
		session.setDebug(true);
		// 用session爲參數定義消息對象
		MimeMessage message = new MimeMessage(session);
		try {
			// 加載發件人地址
			message.setFrom(new InternetAddress(from));
			// 加載收件人地址,只發送一我的

			message.addRecipient(Message.RecipientType.TO, new InternetAddress(
					to));

			// 羣發,獲取地址,但各個地址之間使用半角符隔開
			// InternetAddress[] internetAddress = new
			// InternetAddress().parse(to);
			// message.addRecipients(Message.RecipientType.TO, internetAddress);
			// 我的 抄送
			/*
			 * message.addRecipient(Message.RecipientType.CC, new
			 * InternetAddress( cc));
			 */
			// 多人抄送
			InternetAddress[] ccinternetAddress = new InternetAddress()
					.parse(cc);
			message.addRecipients(Message.RecipientType.CC, ccinternetAddress);
			// 祕密抄送,抄送,以及發送都是一個函數只是參數不一樣,單個和多個調用的方法不通注意(addRecipients,addRecipient)
			message.addRecipient(Message.RecipientType.BCC,
					new InternetAddress(bcc));
			// 設置發送日期
			message.setSentDate(new Date());
			// 加載標題
			message.setSubject(subject);
			// 向multipart對象中添加郵件的各個部份內容,包括文本內容和附件
			Multipart multipart = new MimeMultipart();
			// 設置郵件的文本內容
			BodyPart contentPart = new MimeBodyPart();
			contentPart.setText(txt);
			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) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		AutoSendMail aut = new AutoSendMail();
		// 正文
		String txt = "hello test mail more person  more cc bcc ! !!!";
		aut.send(txt);
	}
}
相關文章
相關標籤/搜索