1. 程式人生 > 程式設計 >Spring傳送郵件如何內嵌圖片增加附件

Spring傳送郵件如何內嵌圖片增加附件

用到的JAR包:

spring.jar
mail.jar
activation.jar
commons-logging.jar
log4j-1.2.15.jar

內嵌圖片,給定一個CID值即可,增加附件,使用MimeMessageHelper的addAttachment即可

現在一般不會做內嵌圖片,因為這樣郵件會很大,容易對伺服器造成壓力,一般做法是使用圖片連結

另外,如果要做內嵌或傳送圖片,你應該使用信用較高的郵箱帳戶,否則會報錯:

554 DT:SPM 傳送的郵件內容包含了未被許可的資訊,或被系統識別為垃圾郵件。請檢查是否有使用者傳送病毒或者垃圾郵件

對於163郵箱伺服器會產生的其他問題,參見:http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html

以下是示例程式碼:

package test;

import java.util.Properties;
import javax.mail.Session;
import javax.mail.internet.MimeMessage;
import org.springframework.core.io.ClassPathResource;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

/**
 * 這裡不做異常處理
 */
public class SendMail {
	public static void main(String[] args) throws Exception{
		// 傳送器
		JavaMailSenderImpl sender = new JavaMailSenderImpl();
		sender.setHost("smtp.163.com");
		sender.setPort(25); // 預設就是25
		sender.setUsername("使用者@163.com"); 
		sender.setPassword("密碼");
		sender.setDefaultEncoding("UTF-8");
		
		// 配置檔案物件
    Properties props = new Properties();  
    props.put("mail.smtp.auth","true"); // 是否進行驗證
		Session session = Session.getInstance(props);
		sender.setSession(session); // 為傳送器指定會話
		
		MimeMessage mail = sender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(mail,true);
		helper.setTo("使用者@163.com"); // 傳送給誰
		helper.setSubject("強哥邀請,誰敢不從!"); // 標題
		helper.setFrom("使用者@163.com"); // 來自
		// 郵件內容,第二個引數指定傳送的是HTML格式
		helper.setText("<font color='red'>強哥邀請你訪問我的部落格:http://cuisuqiang.iteye.com/!</font><br><img src='cid:myImg'>",true);
		// 增加CID內容
		ClassPathResource img = new ClassPathResource("abc.jpg");
		helper.addInline("myImg",img);
		// 增加附件
		ClassPathResource file = new ClassPathResource("abc.zip");
		helper.addAttachment("abc.zip",file);
		
		sender.send(mail); // 傳送
		
		System.out.println("郵件傳送成功");
	}
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。