view plaincopy to clipboardprint?
package com.syj;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.BodyPart;
import javax.mail.Multipart;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMultipart;
import com.sun.istack.internal.ByteArrayDataSource;
/**
* <P>
* Title:用java發送郵件的例子
* </P>
*
* <P>
* Description:發送圖片附件並在html中使用該圖片
* </P>
*
* <P>
* Copyright: Copyright (c) 2007
* </P>
*
* @author 孫鈺佳
* @main [email protected]
* @date Jun 10, 2008 12:35:26 AM
*/
public class SendMail {
private static String username = "xxxx";
private static String password = "xxxx";
private static String smtpServer = "smtp.163.com";
private static String fromMailAddress = "[email protected]";
private static String toMailAddress = "[email protected]";
public static void main(String[] args) throws Exception {
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", smtpServer);
// 獲得郵件會話對象
Session session = Session.getDefaultInstance(props,
new SmtpAuthenticator(username, password));
/** *************************************************** */
// 創建MIME郵件對象
MimeMessage mimeMessage = new MimeMessage(session);
mimeMessage.setFrom(new InternetAddress(fromMailAddress));// 發件人
mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(
toMailAddress));// 收件人
mimeMessage.setSubject("主題");
mimeMessage.setSentDate(new Date());// 發送日期
Multipart mp = new MimeMultipart("related");// related意味着可以發送html格式的郵件
/** *************************************************** */
BodyPart bodyPart = new MimeBodyPart();// 正文
bodyPart.setDataHandler(new DataHandler("測<img src="cid:IMG1" />試",
"text/html;charset=GBK"));// 網頁格式
/** *************************************************** */
BodyPart attachBodyPart = new MimeBodyPart();// 普通附件
FileDataSource fds = new FileDataSource("c:/boot.ini");
attachBodyPart.setDataHandler(new DataHandler(fds));
attachBodyPart.setFileName("=?GBK?B?"
+ new sun.misc.BASE64Encoder().encode(fds.getName().getBytes())
+ "?=");// 解決附件名中文亂碼
mp.addBodyPart(attachBodyPart);
/** *************************************************** */
MimeBodyPart imgBodyPart = new MimeBodyPart(); // 附件圖標
byte[] bytes = readFile("C:/button.gif");
ByteArrayDataSource fileds = new ByteArrayDataSource(bytes,
"application/octet-stream");
imgBodyPart.setDataHandler(new DataHandler(fileds));
imgBodyPart.setFileName("button.gif");
imgBodyPart.setHeader("Content-ID", "<IMG1></IMG1>");// 在html中使用該圖片方法src="cid:IMG1"
mp.addBodyPart(imgBodyPart);
/** *************************************************** */
mp.addBodyPart(bodyPart);
mimeMessage.setContent(mp);// 設置郵件內容對象
Transport.send(mimeMessage);// 發送郵件
}
/**
* 讀取文件
*
* @param file
* 文件路徑
* @return 返回二進制數組
*/
public static byte[] readFile(String file) {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
try {
fis = new FileInputStream(file);
bos = new ByteArrayOutputStream();
int bytesRead;
byte buffer[] = new byte[1024 * 1024];
while ((bytesRead = fis.read(buffer)) != -1) {
bos.write(buffer, 0, bytesRead);
Arrays.fill(buffer, (byte) 0);
}
} catch (IOException e1) {
e1.printStackTrace();
} finally {
try {
if (bos != null)
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return bos.toByteArray();
}
}
/**
* Smtp認證
*/
class SmtpAuthenticator extends Authenticator {
String username = null;
String password = null;
// SMTP身份驗證
public SmtpAuthenticator(String username, String password) {
this.username = username;
this.password = password;
}
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(this.username, this.password);
}
}
原文網址:http://blog.csdn.net/sunyujia/archive/2008/06/10/2528696.aspx
用Java發送圖文並茂的HTML郵件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.