JavaMail发送html格式的邮件

本文详细介绍了Java中用于发送和接收邮件的类库,包括如何配置SMTP服务器,发送邮件的基本步骤,以及如何处理邮件地址和邮件内容的编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  之前分享过一个发邮件的类,今天再分享一个收邮件的类,

 

package zhang.stony.mail;

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

import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
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;
/**
 * @author Stony Zhang  (Mybeautiful)
 * @Createdate 2010-8-12
 * @Emal:stonyz@live.com
 * @QQ:55279427
 */
public class MailSender {
	private MailSetting mSetting;

	private Session session;

	public MailSender(MailSetting mSetting) {
		this.mSetting = mSetting;

		final String username = mSetting.getUser();
		final String password = mSetting.getPassword();
		Properties props = new Properties();
		props.put("mail.smtp.host", mSetting.getSmtpHost());
		props.put("mail.smtp.auth", "true");
		session = Session.getInstance(props, new Authenticator() {
			public PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(username, password);
			}
		});
	}

	public void sentMessage(String titile, String msg, String[] to)
			throws MessagingException {
		this.sentMessage(titile, msg, to, null);
	}

	public void sentMessage(String titile, String msg, String[] to, String[] cc)
			throws MessagingException {
		Message mailMessage = new MimeMessage(session);
		Address from = new InternetAddress(mSetting.getUser());
		mailMessage.setFrom(from);
		// Address to = new InternetAddress(mSetting.getUser());

		Address[] tos = new Address[to.length];
		for (int i = 0; i < to.length; i++) {
			tos[i] = new InternetAddress(to[i]);
		}
		mailMessage.setRecipients(Message.RecipientType.TO, tos);

		if (cc != null && cc.length > 0) {
			Address[] ccs = new Address[cc.length];
			for (int i = 0; i < cc.length; i++) {
				ccs[i] = new InternetAddress(cc[i]);
			}
			mailMessage.setRecipients(Message.RecipientType.CC, ccs);
		}

		mailMessage.setSubject(titile);
		mailMessage.setSentDate(new Date());
//		mailMessage.setText(msg);
		
		   BodyPart mdp = new MimeBodyPart(); 
		    mdp.setContent(msg, "text/html;charset=gb2312"); 
		    Multipart mm = new MimeMultipart(); 
		    mm.addBodyPart(mdp); 
		    mailMessage.setContent(mm); 
		    mailMessage.saveChanges(); 
		
		
		Transport.send(mailMessage);
	}
}

 

 

     其中用到了一个MailSetting的类,其内容请参阅   分享一个收邮件的类,使用相当简单

 

     关于Javamail,几年间已经用了N多次了,其间也碰到了一些问题,也都一一解决了,比如发送附件,乱码等等,如果各位有兴趣就相关问题进行探讨,欢迎留言。 

 

### 使用JavaMail发送HTML格式邮件 为了通过JavaMail发送HTML格式的电子邮件,可以利用`javax.mail.internet.MimeMessage`类来构建消息体,并设置其内容类型为"text/html"。下面是一个具体的实现例子: ```java import javax.mail.*; import javax.mail.internet.*; public class SendHTMLEmail { public static void main(String[] args) throws MessagingException { String host = "smtp.gmail.com"; Properties properties = System.getProperties(); properties.put("mail.smtp.host", host); properties.put("mail.smtp.port", "587"); properties.put("mail.smtp.auth", "true"); properties.put("mail.smtp.starttls.enable", "true"); Session session = Session.getDefaultInstance(properties, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("username", "password"); } }); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("user@gmail.com")); message.addRecipient(Message.RecipientType.TO, new InternetAddress("foo@bar.com")); message.setSubject("Test HTML Mail"); // 设置HTML内容 String htmlContent = "<h1>This is actual message</h1><p>paragraph text...</p>"; message.setContent(htmlContent, "text/html; charset=utf-8"); Transport.send(message); System.out.println("Sent message successfully...."); } } ``` 此代码片段展示了如何配置SMTP服务器参数并创建一个包含HTML内容的消息对象[^2]。 对于更复杂的场景,比如添加内嵌图片或提供纯文本替代版本给不支持HTML显示的客户端,则建议采用Apache Commons Email库中的`HtmlEmail`类,它简化了许多操作并且提供了额外的功能[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值