1. 程式人生 > 程式設計 >java郵件亂碼的徹底解決方案

java郵件亂碼的徹底解決方案

java傳送郵件亂碼解決方法:

//設定郵件主題 

message.setSubject(MimeUtility.encodeText(mail_subject,MimeUtility.mimeCharset("gb2312"),null)); 

message.setContent(sendmessage,"text/html;charset=gbk"); // 設定郵件格式 

message.setSentDate(new Date()); // 設定郵件傳送日期 

//設定郵件發件人名稱 

Address address = new InternetAddress(usernames,MimeUtility.encodeText(personalName,null));

當一段 Text 或者 HTML 通過電子郵件傳送時,傳送的內容首先通過一種指定的字元編碼轉化成“位元組串”,然後再把“位元組串”通過一種指定的傳輸編碼(Content-Transfer-Encoding)進行轉化得到另一串“位元組串”。

郵件的標題,用了一種更簡短的格式來標註“字元編碼”和“傳輸編碼”。

擴充套件內容

1.構造MimeMessageHelper時設定編碼格式

	@Resource
	private JavaMailSender javaMailSender;
	
	@Test
	public void mimeMailTest() throws MessagingException {
		String email = "[email protected]";
		String mailCode = 123456789;
		// 建立多用途郵件訊息物件
		MimeMessage mailMessage = javaMailSender.createMimeMessage();
		// 建立郵件訊息助手(引數2:設定為true,表示可以傳送超連結、附件)
		MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"UTF-8");

		messageHelper.setTo("[email protected]");
		messageHelper.setFrom("[email protected]");
		messageHelper.setSubject("註冊提醒");

		String text = "註冊成功,<a href=\"http://127.0.0.1:8080/userActivate" + "?code=" + mailCode
				+ "&email=" + email + "\">點選啟用</a>";
		//引數2表示是否以html格式傳送.如不設定會發送純文字
		messageHelper.setText(text,true);

		javaMailSender.send(mailMessage);
	}

2.構造MimeMessageHelper 不設定編碼,使用MimeMessage 的setContent()方法時設定

	@Test
	public void mimeMailTest2() throws MessagingException {
		String email = "[email protected]";
		String mailCode = 123456789;
		// 建立多用途郵件訊息物件
		MimeMessage mailMessage = javaMailSender.createMimeMessage();
		// 建立郵件訊息助手
		MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);

		messageHelper.setTo("[email protected]");
		messageHelper.setFrom("[email protected]");
		messageHelper.setSubject("註冊提醒2");

		String text = "註冊成功2,<a href=\"http://127.0.0.1:8080/userActivate" + "?code=" + mailCode
				+ "&email=" + email + "\">點選啟用</a>";
		//引數2:以html格式傳送
		mailMessage.setContent(text,"text/html;charset=UTF-8");
		
		javaMailSender.send(mailMessage);

	}