Mail邮件

Email邮件

JavaMail

使用JavaMail发送邮件的5个步骤

// 1、创建session
Session session = Session.getInstance(prop);
// 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true);
// 2、通过session得到transport对象
Transport ts = session.getTransport();
// 3、连上邮件服务器,需要发件人提供邮箱的用户名和密码进行验证。
ts.connect(mail_host,mailFrom, password_mailFrom);
// 4、创建邮件
Message message = createSimpleMail(...);
// 5、发送邮件
ts.sendMessage(message, message.getAllRecipients());
ts.close();

发送只包含文本的 简易邮件

public static MimeMessage createSimpleMail(Session session, String mailfrom, String mailTo, 									String mailTittle,String mailText) throws Exception {
		// 创建邮件对象
		MimeMessage message = new MimeMessage(session);
		// 指明邮件的发件人
		message.setFrom(new InternetAddress(mailfrom));
		// 指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
		message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
		// 邮件的标题
		message.setSubject(mailTittle);
		// 邮件的文本内容
		message.setContent(mailText, "text/html;charset=UTF-8");
		// 返回创建好的邮件对象
		return message;
}

发送带图片的邮件

public static MimeMessage createImageMail(Session session) throws Exception {
    // 创建邮件
    MimeMessage message = new MimeMessage(session);
    message.setFrom(new InternetAddress(mailFrom)); // 发件人
    message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo)); // 收件人
    message.setSubject(mailTittle);// 邮件标题
    
    MimeBodyPart text = new MimeBodyPart();// 邮件正文数据
    text.setContent(mailText + "<img src='cid:xxx.jpg'>", "text/html;charset=UTF-8");// 需要修改
    
    MimeBodyPart image = new MimeBodyPart();// 准备图片数据
    DataHandler dh = new DataHandler(new FileDataSource(photoSrc));// 需要修改
    image.setDataHandler(dh);
    image.setContentID("xxx.jpg");// 需要修改
    
    MimeMultipart mm = new MimeMultipart();// 描述数据关系
    mm.addBodyPart(text);
    mm.addBodyPart(image);
    mm.setSubType("related");

    message.setContent(mm);
    message.saveChanges();
    message.writeTo(new FileOutputStream("F:/Program Files/TestMail/ImageMail.eml"));// 将创建好的邮件写入到F盘以文件的形式进行保存
    return message;
}

发送带附件的邮件

public static MimeMessage createAttachMail(Session session) throws Exception {
    MimeMessage message = new MimeMessage(session);
	message.setFrom(new InternetAddress(mailFrom));	// 发件人
	message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));// 收件人
    message.setSubject(mailTittle);// 邮件标题

    MimeBodyPart text = new MimeBodyPart();// 创建邮件正文,为了避免邮件正文中文乱码问题,需要使用charset=UTF-8指明字符编码
    text.setContent(mailText, "text/html;charset=UTF-8");

    MimeBodyPart attach = new MimeBodyPart();// 创建邮件附件
    DataHandler dh = new DataHandler(new FileDataSource(photoSrc));// 需要修改
    attach.setDataHandler(dh);
    attach.setFileName(dh.getName());

    MimeMultipart mp = new MimeMultipart(); // 创建容器描述数据关系
    mp.addBodyPart(text);
    mp.addBodyPart(attach);
    mp.setSubType("mixed");

    message.setContent(mp);
    message.saveChanges();
    message.writeTo(new FileOutputStream("F:/Program Files/TestMail/ImageMail.eml"));// 将创建的Email写入到F盘存储
    return message;
}

发送图片和附件的复杂邮件

public static MimeMessage createMixedMail(Session session) throws Exception {
    MimeMessage message = new MimeMessage(session);// 设置邮件的基本信息
    message.setFrom(new InternetAddress(mailFrom));	// 发件人	
    message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));// 收件人
    message.setSubject(mailTittle);

    MimeBodyPart text = new MimeBodyPart();// 正文
    text.setContent(mailText+"<br/><img src='cid:aaa.jpg'>", "text/html;charset=UTF-8");

    MimeBodyPart image = new MimeBodyPart(); // 图片
    image.setDataHandler(new DataHandler(new FileDataSource(photoSrc)));
    image.setContentID("aaa.jpg");

    MimeBodyPart attach = new MimeBodyPart();// 附件1,可有多个附件
    DataHandler dh = new DataHandler(new FileDataSource(fileList.get(0)));
    attach.setDataHandler(dh);
    attach.setFileName(dh.getName());

    MimeMultipart mp1 = new MimeMultipart();// 描述关系:正文和图片
    mp1.addBodyPart(text);
    mp1.addBodyPart(image);
    mp1.setSubType("related");

   	MimeMultipart mp2 = new MimeMultipart(); // 描述关系:正文和附件
    mp2.addBodyPart(attach);

    MimeBodyPart content = new MimeBodyPart();// 代表正文的bodypart
    content.setContent(mp1);
    mp2.addBodyPart(content);
    mp2.setSubType("mixed");

    message.setContent(mp2);
    message.saveChanges();
	message.writeTo(new FileOutputStream("F:/Program Files/TestMail/ImageMail.eml"));
    return message;
}
SimpleEmail 简易邮件

发送只包含文本的 简易邮件

SimpleEmail email = new SimpleEmail();        
email.setTLS(needTls); //是否TLS校验         
email.setSSL(needSsl); //是否SSL校验   
email.setHostName(serverAddr);  //邮箱地址:smtp.qq.com;smtp.163.com   
email.setSmtpPort(serverPort); //邮箱端口:	587/465;		25
email.setAuthentication(recUserName,recUserPwd);   //用户名和密码   
email.addTo(mail.getTo()); //接收方 
email.addCc(mail.getCC());//抄送方
email.addBcc(mail.getBCC());//密送方
email.setFrom(fromMailAddr); //发送方,这里可以写多个      
email.setCharset("GB2312");//格式                    
email.setSubject(mail.getSubject()); //标题        
email.setMsg(mail.getContent());   //内容     
email.send(); //发送
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值