|
如题,如何实现发邮件附件功能,目前牛刀云的邮件组件好像不支持,我参与以下代码实现了服务发邮件功能(用于后台定时调用),可以发多人及抄送多人,但发附件不知格式如何转化才成功能发附件,请牛刀云支持一下看有没有办法,昨天开会研发同事要求APP将 附件图片也发出来,并附件可能有多个,谢谢![{"storeFileName":"anoy_C8CE8E1881000001C33F4EB41DEBABE0.jpg","realFileName":"1IMG_20200226_142820.jpg"}]这个是牛刀云EXCEL导出附件或图片格式,与下面案例对不上,要如何处理?谢谢!
//原文链接:http://liuwanxiang.iteye.com/blog/2212309
//需要下载mail.jar 地址:http://www.oracle.com/technetwork/java/index-138643.html
//简单调试一下可用,替换一下邮箱和授权码,邮箱密码是授权码,详情百度。
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
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;
/**
* 邮件多人发送,可设置发送,抄送,密送
*
* @author zhutongyu
*
*/
public class SendMail {
private static SendMail instance = null;
private SendMail() {
}
public static SendMail getInstance() {
if (instance == null) {
instance = new SendMail();
}
return instance;
}
public void send(String to[], String cs[], String ms[], String subject,
String content, String formEmail, String fileList[]) {
try {
Properties p = new Properties(); // Properties p =
// System.getProperties();
p.put("mail.smtp.auth", "true");
p.put("mail.transport.protocol", "smtp");
p.put("mail.smtp.host", "smtp.qq.com");
p.put("mail.smtp.port", "25");
// 建立会话
Session session = Session.getInstance(p);
Message msg = new MimeMessage(session); // 建立信息
BodyPart messageBodyPart = new MimeBodyPart();
Multipart multipart = new MimeMultipart();
msg.setFrom(new InternetAddress(formEmail)); // 发件人
String toList = null;
String toListcs = null;
String toListms = null;
// 发送,
if (to != null) {
toList = getMailList(to);
InternetAddress[] iaToList = new InternetAddress()
.parse(toList);
msg.setRecipients(Message.RecipientType.TO, iaToList); // 收件人
}
// 抄送
if (cs != null) {
toListcs = getMailList(cs);
InternetAddress[] iaToListcs = new InternetAddress()
.parse(toListcs);
msg.setRecipients(Message.RecipientType.CC, iaToListcs); // 抄送人
}
// 密送
if (ms != null) {
toListms = getMailList(ms);
InternetAddress[] iaToListms = new InternetAddress()
.parse(toListms);
msg.setRecipients(Message.RecipientType.BCC, iaToListms); // 密送人
}
msg.setSentDate(new Date()); // 发送日期
msg.setSubject(subject); // 主题
msg.setText(content); // 内容
// 显示以html格式的文本内容
messageBodyPart.setContent(content, "text/html;charset=gbk");
multipart.addBodyPart(messageBodyPart);
// 2.保存多个附件
if (fileList != null) {
addTach(fileList, multipart);
}
msg.setContent(multipart);
// 邮件服务器进行验证
Transport tran = session.getTransport("smtp");
tran.connect("smtp.qq.com", "postmaster@qq.com",
"asiamedia");
tran.sendMessage(msg, msg.getAllRecipients()); // 发送
System.out.println("邮件发送成功");
} catch (Exception e) {
e.printStackTrace();
}
}
// 添加多个附件
public void addTach(String fileList[], Multipart multipart)
throws MessagingException, UnsupportedEncodingException {
for (int index = 0; index < fileList.length; index++) {
MimeBodyPart mailArchieve = new MimeBodyPart();
FileDataSource fds = new FileDataSource(fileList[index]);
mailArchieve.setDataHandler(new DataHandler(fds));
mailArchieve.setFileName(MimeUtility.encodeText(fds.getName(),
"GBK", "B"));
multipart.addBodyPart(mailArchieve);
}
}
private 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);
if (i != (length - 1)) {
toList.append(",");
}
}
}
return toList.toString();
}
public static void main(String args[]) {
SendMail send = SendMail.getInstance();
String to[] = { "zhutongyu@qq.com" };
String cs[] = null;
String ms[] = null;
String subject = "测试一下";
String content = "这是邮件内容,仅仅是测试,不需要回复";
String formEmail = "zhutongyu@qq.com";
String[] arrArchievList = new String[4];
arrArchievList[0] = "c:\\2012052914033429140297.rar";
arrArchievList[1] = "c:\\topSearch.html";
arrArchievList[2] = "c:\\topSearch2.html";
arrArchievList[3] = "c:\\logo_white.png";
// 2.保存多个附件
send.send(to, cs, ms, subject, content, formEmail, arrArchievList);
}
} |
|