永发信息网

如何写一个JAVA类可以实现邮件发送功能,也可以实现群发功能

答案:2  悬赏:0  手机版
解决时间 2021-03-24 05:31
  • 提问者网友:回忆在搜索
  • 2021-03-23 04:44
如何写一个JAVA类可以实现邮件发送功能,也可以实现群发功能
最佳答案
  • 五星知识达人网友:爱难随人意
  • 2021-03-23 06:09
package byd.core;

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 Email {


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 List alternativeList;

private String mixedBoundary;

private String mixedBoundaryNextPart;


private static Map contentTypeMap;

private static enum TextType {
PLAIN("plain"), HTML("html");

private String v;

private TextType(String v) {
this.v = v;
}

public String getValue() {
return this.v;
}
}

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 Email {
public MailPart() {
}
}


public Email() {
defaultAttachmentContentType = "application/octet-stream";
simpleDatePattern = "yyyy-MM-dd HH:mm:ss";
boundary = "--=_NextPart_zlz_3907_" + System.currentTimeMillis();
boundaryNextPart = "--" + boundary;
contentTransferEncoding = "base64";
contentType = "multipart/mixed";
charset = Charset.defaultCharset().name();
partSet = new ArrayList();
alternativeList = new ArrayList();
to = new ArrayList();
cc = new ArrayList();
bcc = new ArrayList();
mixedBoundary = "=NextAttachment_zlz_" + System.currentTimeMillis();
mixedBoundaryNextPart = "--" + mixedBoundary;
}


private String getPartContentType(String fileName) {
String ret = null;
if (null != fileName) {
int flag = fileName.lastIndexOf(".");
if (0 <= flag && flag < fileName.length() - 1) {
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() {

StringBuilder sbd = new StringBuilder(LINE_END);
sbd.append(mixedBoundaryNextPart);
sbd.append(LINE_END);
sbd.append("Content-Type: ");
sbd.append("multipart/alternative");
sbd.append(";");
sbd.append("boundary=\"");
sbd.append(boundary).append("\""); // 邮件类型设置
sbd.append(LINE_END);
sbd.append(LINE_END);
sbd.append(LINE_END);
addPartsToString(alternativeList, sbd, getBoundaryNextPart());
sbd.append(getBoundaryNextPart()).append("--");
sbd.append(LINE_END);

addPartsToString(partSet, sbd, mixedBoundaryNextPart);

sbd.append(LINE_END);
sbd.append(mixedBoundaryNextPart).append("--");
sbd.append(LINE_END);
// sbd.append(boundaryNextPart).
// append(LINE_END);
alternativeList.clear();
partSet.clear();
return sbd.toString();
}
全部回答
  • 1楼网友:西岸风
  • 2021-03-23 07:47
现成的东西。需要给你。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯