java发送邮件 html格式内容 多附件

一、预览

二、代码

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
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;
import javax.mail.internet.MimeUtility;

import com.net263.crm.util.mail.EmailAuthenticator;

public class SendEmailUtil {

	/**
	 * 
	 * @Description TODO
	 * @author xxxxx
	 * @param sendEmailSMTPHost  邮件服务器   qq邮箱服务器是smtp.qq.com
	 * @param myEmailAccount 用户名(邮箱)
	 * @param sendmailName 发送人(邮箱上面显示得昵称)
	 * @param myEmailPassword 密码
	 * @param receivemailUsers 接收人
	 * @param receivemailCCUsers 抄送人
	 * @param meetingtitle 邮件主题
	 * @param contentfile 邮件内容(html)
	 * @param fileList 附件集合
	 * @throws IOException
	 * @throws MessagingException
	 * void
	 */
	public static void sendNoticeMail(String sendEmailSMTPHost, String myEmailAccount, String sendmailName,
			String myEmailPassword, String receivemailUsers,String receivemailCCUsers, String meetingtitle, File contentfile,List<File>fileList) throws IOException, MessagingException{			
		StringBuffer error = new StringBuffer();		
		
		// 1. 创建参数配置, 用于连接邮件服务器的参数配置
		Properties props = new Properties();                    // 参数配置
        //props.setProperty("mail.transport.protocol", "smtp");   // 使用的协议(JavaMail规范要求)
        props.setProperty("mail.smtp.host", sendEmailSMTPHost);   // 发件人的邮箱的 SMTP 服务器地址
        props.setProperty("mail.smtp.auth", "true");            // 需要请求认证
        
		
		
		
		EmailAuthenticator auth = new EmailAuthenticator();//进行邮件服务器用户认证
		auth.check(myEmailAccount, myEmailPassword);//用户名和密码
		Session mailsession = Session.getInstance(props, auth);//设置session和邮件服务器进行通讯
		StringBuffer subject = new StringBuffer(meetingtitle);
		MimeMessage mailmess = new MimeMessage(mailsession);//获取一个跟邮件服务器通信对象
		
		mailmess.setSubject(subject.toString(), "GB2312");
		//发送人
		InternetAddress from = new InternetAddress(myEmailAccount, sendmailName, "GB2312");
		mailmess.setFrom(from);//设置邮件发送者地址
		//mailmess.setContent("内容", "text/html;charset=GB2312");//设置邮件格式
		//a.设置邮件内容,混合模式
        MimeMultipart msgMultipart = new MimeMultipart("mixed");
        mailmess.setContent(msgMultipart);
        //b.设置消息正文
		MimeBodyPart content = new MimeBodyPart();
		msgMultipart.addBodyPart(content);
		//c.设置正文格式
		MimeMultipart bodyMultipart = new MimeMultipart("related");
		content.setContent(bodyMultipart);
		//d.设置正文内容
		MimeBodyPart htmlPart = new MimeBodyPart();
		bodyMultipart.addBodyPart(htmlPart);
		htmlPart.setContent(readFileByBytesFile(contentfile), "text/html;charset=UTF-8");
		//e.设置附件
		for(int i = 0; i < fileList.size(); i++){
			File file = fileList.get(i);
			System.out.println("file:	"+file);
			try {
	           //设置相关文件
	           MimeBodyPart filePart = new MimeBodyPart();
	           FileDataSource dataSource = new FileDataSource(file);
	           DataHandler dataHandler = new DataHandler(dataSource);
	           // 文件处理
	           filePart.setDataHandler(dataHandler);
	           // 附件名称  防止中文乱码
	           //filePart.setFileName(file.getName());
	           filePart.setFileName(MimeUtility.encodeText(file.getName()));
	           // 放入正文(有先后顺序,所以在正文后面)
	           msgMultipart.addBodyPart(filePart);
		    } catch (Exception e) {
		    	
		    }
		}
		//多人发送加一个数组
		InternetAddress[] isd = InternetAddress.parse(receivemailUsers);
		mailmess.setRecipients(Message.RecipientType.TO, isd);//发送到的地址
		InternetAddress[] isdCC = InternetAddress.parse(receivemailCCUsers);
		mailmess.setRecipients(Message.RecipientType.CC, isdCC);//发送到的地址
		Transport transport = mailsession.getTransport("smtp");
		transport.connect(sendEmailSMTPHost, "", "");//获取服务器连接
		Transport.send(mailmess);//发送邮件
		transport.close();//关闭连接
		
		
	}
	
	public static String readFileByBytesFile(File file) throws IOException {
		InputStream fis = new FileInputStream(file);
		StringBuffer sb = new StringBuffer();
		try {
            InputStreamReader reader = new InputStreamReader(fis,"UTF-8"); 
            BufferedReader br = new BufferedReader(reader);
            System.out.println("br:"+br.toString());
            String line;
            while ((line = br.readLine()) != null) {
                //System.out.println(line);
                sb.append(line);
            }
            br.close();
            reader.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
		return sb.toString();
	}
}


因业务需求,第二个方法是将文件(html)转为String,又用于邮件内容
三、知识拓展
1、下面两个方法,一个是发送一个是抄送,字符串中邮箱之间用","隔开即可

InternetAddress[] isd = InternetAddress.parse(receivemailUsers);
mailmess.setRecipients(Message.RecipientType.TO, isd);//发送到的地址
InternetAddress[] isdCC = InternetAddress.parse(receivemailCCUsers);
mailmess.setRecipients(Message.RecipientType.CC, isdCC);//发送到的地址

2、在服务器上ping一下邮箱服务,ping不同ping下www.baidu.com还是不行,就是dns没设置好

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值