java 发送带附件的邮件 步骤_怎么用java发送带附件的邮件代码详解

展开全部

package email;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.io.UnsupportedEncodingException;

import java.net.Socket;

import java.nio.charset.Charset;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import sun.misc.BASE64Encoder;

public class Mail {

private static final String LINE_END = "\r\n";

private boolean isDebug = true;

private boolean isAllowReadSocketInfo = true;

private String host;

private String from;

private List to;

private List cc;

private List bcc;

private String subject;

private String user;

private String password;

private String contentType;

private String boundary;

private String boundaryNextPart;

private String contentTransferEncoding;

private String charset;

private String contentDisposition;

private String content;

private String simpleDatePattern;

private String defaultAttachmentContentType;

private List partSet;

private static Map contentTypeMap;

static {

// MIME Media Types

contentTypeMap = new HashMap();

contentTypeMap.put("xls", "application/vnd.ms-excel");

contentTypeMap.put("xlsx", "application/vnd.ms-excel");

contentTypeMap.put("xlsm", "application/vnd.ms-excel");

contentTypeMap.put("xlsb", "application/vnd.ms-excel");

contentTypeMap.put("doc", "application/msword");

contentTypeMap.put("dot", "application/msword");

contentTypeMap.put("docx", "application/msword");

contentTypeMap.put("docm", "application/msword");

contentTypeMap.put("dotm", "application/msword");

}

private class MailPart extends Mail {

public MailPart() {

}

}

public Mail() {

defaultAttachmentContentType = "application/octet-stream";

simpleDatePattern = "yyyy-MM-dd HH:mm:ss";

boundary = "--=_NextPart_zlz_3907_" + System.currentTimeMillis();

boundaryNextPart = "--" + boundary;

contentTransferEncoding = "base64";

contentType = "multipart/alternative";

charset = Charset.defaultCharset().name();

partSet = new ArrayList();

to = new ArrayList();

cc = new ArrayList();

bcc = new ArrayList();

}

private String getPartContentType(String fileName) {

String ret = null;

if (null !62616964757a686964616fe59b9ee7ad9431333363373661= fileName) {

int flag = fileName.lastIndexOf(".");

if (0 <= flag && flag 

fileName = fileName.substring(flag + 1);

}

ret = contentTypeMap.get(fileName);

}

if (null == ret) {

ret = defaultAttachmentContentType;

}

return ret;

}

private String toBase64(String str, String charset) {

if (null != str) {

try {

return toBase64(str.getBytes(charset));

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

return "";

}

private String toBase64(byte[] bs) {

return new BASE64Encoder().encode(bs);

}

private String toBase64(String str) {

return toBase64(str, Charset.defaultCharset().name());

}

private String getAllParts() {

int partCount = partSet.size();

StringBuilder sbd = new StringBuilder(LINE_END);

for (int i = partCount - 1; i >= 0; i--) {

Mail attachment = partSet.get(i);

String attachmentContent = attachment.getContent();

if (null != attachmentContent && 0 

sbd.append(getBoundaryNextPart()).append(LINE_END);

sbd.append("Content-Type: ");

sbd.append(attachment.getContentType());

sbd.append(LINE_END);

sbd.append("Content-Transfer-Encoding: ");

sbd.append(attachment.getContentTransferEncoding());

sbd.append(LINE_END);

if (i != partCount - 1) {

sbd.append("Content-Disposition: ");

sbd.append(attachment.getContentDisposition());

sbd.append(LINE_END);

}

sbd.append(LINE_END);

sbd.append(attachment.getContent());

sbd.append(LINE_END);

}

}

sbd.append(LINE_END);

sbd.append(LINE_END);

partSet.clear();

return sbd.toString();

}

private void addContent() {

if (null != content) {

MailPart part = new MailPart();

part.setContent(toBase64(content));

part.setContentType("text/plain;charset=\"" + charset + "\"");

partSet.add(part);

}

}

private String listToMailString(List mailAddressList) {

StringBuilder sbd = new StringBuilder();

if (null != mailAddressList) {

int listSize = mailAddressList.size();

for (int i = 0; i 

if (0 != i) {

sbd.append(";");

}

sbd.append("");

}

}

return sbd.toString();

}

private List getrecipient() {

List list = new ArrayList();

list.addAll(to);

list.addAll(cc);

list.addAll(bcc);

return list;

}

public void addAttachment(String filePath) {

addAttachment(filePath, null);

}

public void addTo(String mailAddress) {

this.to.add(mailAddress);

}

public void addCc(String mailAddress) {

this.cc.add(mailAddress);

}

public void addBcc(String mailAddress) {

this.bcc.add(mailAddress);

}

public void addAttachment(String filePath, String charset) {

if (null != filePath && filePath.length() > 0) {

File file = new File(filePath);

try {

addAttachment(file.getName(), new FileInputStream(file),

charset);

} catch (FileNotFoundException e) {

System.out.println("错误:" + e.getMessage());

System.exit(1);

}

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值