java 发送邮件带附件,正文带图片

mac2022-06-30  23

 

import java.io.UnsupportedEncodingException;import java.net.MalformedURLException;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.Properties;

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

public class SendEmail{ //收件人邮箱地址 private String[] to; //抄送人邮箱地址 private String[] copyto; //发件人邮箱地址 private String from ="xxx"; //SMTP服务器地址 如:smtp.163.com private String smtpServer = "xxx"; //登录SMTP服务器的用户名(不需要后面带@xxx.com) private String username =""; //登录SMTP服务器的密码 (服务密码,不是登录密码) private String password ="xxx"; //邮件主题 private String subject; //邮件正文 private String content; //记录所有附件文件的集合 List<String> attachments = new ArrayList<String>(); // 发件人昵称  private String senderNick = "xxx"; //无参数的构造器 public SendEmail() { } public SendEmail(String[] to , String from , String smtpServer , String username , String password , String subject , String content,String senderNick,String[] copyto) { this.to = to; this.from = from; this.smtpServer = smtpServer; this.username = username; this.password = password; this.subject = subject; this.content = content; this.senderNick = senderNick; this.copyto = copyto; } //to属性的setter方法 public void setTo(String[] to) { this.to = to; } //to属性的setter方法 public void setCopyto(String[] copyto) { this.copyto = copyto; } //from属性的setter方法 public void setFrom(String from) { this.from = from; } //smtpServer属性的setter方法 public void setSmtpServer(String smtpServer) { this.smtpServer = smtpServer; } //username属性的setter方法 public void setUsername(String username) { this.username = username; } //password属性的setter方法 public void setPassword(String password) { this.password = password; } //subject属性的setter方法 public void setSubject(String subject) { this.subject = subject; } //content属性的setter方法 public void setContent(String content) { this.content = content; } public void setSenderNick(String senderNick) { this.senderNick = senderNick; } //把邮件主题转换为中文 public String transferChinese(String strText) { try { strText = MimeUtility.encodeText(new String(strText.getBytes() , "UTF-8"), "UTF-8", null); } catch(Exception e) { e.printStackTrace(); } return strText; } //增加附件,将附件文件名添加的List集合中 public void attachfile(String fname) { attachments.add(fname); } //发送邮件 public boolean send(String path1,String path2) throws MalformedURLException { //创建邮件Session所需的Properties对象 Properties props = new Properties(); props.put("mail.smtp.host" , smtpServer); props.put("mail.smtp.auth" , "true"); props.put("mail.smtp.debug" , "true"); //创建Session对象 Session session = Session.getDefaultInstance(props //以匿名内部类的形式创建登录服务器的认证对象 , new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); try { //构造MimeMessage并设置相关属性值 MimeMessage msg = new MimeMessage(session); String nick = ""; try { nick = javax.mail.internet.MimeUtility.encodeText(senderNick); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } //设置发件人 try { msg.setFrom(new InternetAddress(from,nick)); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } //设置收件人 if (to != null && to.length > 0) { String toListStr = getMailList(to); msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toListStr)); } //设置抄送人 if (copyto != null && copyto.length > 0) { String copytoListStr = getMailList(copyto); msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(copytoListStr)); } //InternetAddress[] addresses = {new InternetAddress(toListStr)}; //msg.setRecipients(Message.RecipientType.TO , addresses); //设置邮件主题 subject = transferChinese(subject); msg.setSubject(subject); //构造Multipart Multipart mp = new MimeMultipart(); //向Multipart添加正文 MimeBodyPart mbpContent = new MimeBodyPart(); mbpContent.setContent(content, "text/html;charset=UTF-8"); //将BodyPart添加到MultiPart中 mp.addBodyPart(mbpContent); //path1="D:\\xxx.png"; mbpContent = new MimeBodyPart(); DataSource fd = new FileDataSource(path1); mbpContent.setDataHandler(new DataHandler(fd)); mbpContent.setHeader("Content-ID", "<image1>"); mp.addBodyPart(mbpContent); //path2="D:\\xxx.png"; mbpContent = new MimeBodyPart(); DataSource fd2 = new FileDataSource(path2); mbpContent.setDataHandler(new DataHandler(fd2)); mbpContent.setHeader("Content-ID", "<image2>"); mp.addBodyPart(mbpContent); //向Multipart添加附件 //遍历附件列表,将所有文件添加到邮件消息里 for(String efile : attachments) { MimeBodyPart mbpFile = new MimeBodyPart(); //以文件名创建FileDataSource对象 FileDataSource fds = new FileDataSource(efile); //处理附件 mbpFile.setDataHandler(new DataHandler(fds)); try { mbpFile.setFileName(MimeUtility.encodeText(fds.getName())); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } //将BodyPart添加到MultiPart中 mp.addBodyPart(mbpFile); } //清空附件列表 attachments.clear(); //向Multipart添加MimeMessage msg.setContent(mp); //设置发送日期 msg.setSentDate(new Date()); //发送邮件 Transport.send(msg); } catch (MessagingException mex) { mex.printStackTrace(); return false; } return true; } //多用户发送用,号格开 public String getMailList(String[] mailArray) { StringBuffer toList = new StringBuffer(); int length = mailArray.length; if (mailArray != null && length < 2) { toList.append(mailArray[0]); } else { for (int i = 0; i < length; i++) { toList.append(mailArray[i]); if (i != (length - 1)) { toList.append(","); }

} } return toList.toString(); } public static void main(String[] args) { SendEmail sendMail = new SendEmail(); //设置收件人的地址多人用逗号隔开 String[] to = {"xxxx@xx.com", "xxx@xxxx.com"}; sendMail.setTo(to); //设置抄送人人的地址多人用逗号隔开 String[] copyto = {"xxxx@xx.com"}; sendMail.setCopyto(copyto); //设置标题 sendMail.setSubject("测试邮件标题!"); //设置内容 StringBuffer sb = new StringBuffer(); sb.append("<body>" ); sb.append("<p style='text-align:left'>hi,all</p>") .append("<p style='text-align:left;text-indent:2em;'>这里是测试数据!</p>");

sendMail.setContent(sb.toString()); //附件 sendMail.attachfile("D://xxx.xls"); try {

//可以在这里设置你要发送的图片路径 if (sendMail.send(null,null)) { System.out.println("---邮件发送成功---"); } } catch (MalformedURLException e) { e.printStackTrace(); } }}

转载于:https://www.cnblogs.com/sx-zeng/p/7020102.html

相关资源:javamail发送邮件(带附件)
最新回复(0)