📄 messagecenter.java
字号:
try {
message.setSubject("测试HTML方式发送邮件s");
message.setFrom(new InternetAddress(MAIL_ADDRESS));
message.addRecipient(Message.RecipientType.TO,
new InternetAddress("daibing@jobcn.com"));
String htmlText = text;
String path = "./img/";
for(int i=0;i<imgs.size();i++) {
htmlText += "<img src=\"cid:"+imgs.get(i)+"\"><br>";
System.out.println("files[i]="+imgs.get(i));
}
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(htmlText, "text/html");
MimeMultipart multipart = new MimeMultipart("related");
multipart.addBodyPart(messageBodyPart);
for(int i=0;i<imgs.size();i++) {
DataSource fds = new FileDataSource(path+imgs.get(i));
messageBodyPart = new MimeBodyPart();
messageBodyPart.setDataHandler(new DataHandler(fds));
messageBodyPart.setHeader("Content-ID","<"+imgs.get(i)+">");
multipart.addBodyPart(messageBodyPart);
}
message.setContent(multipart);
Transport.send(message);
logger.info("邮件已发送!");
} catch (AddressException e) {
e.printStackTrace();
logger.info("无效地址!");
} catch (MessagingException e) {
e.printStackTrace();
logger.info("消息错,邮件发送失败!");
}
}
public static void writeLog(String outputFile, String outputStr) {
try {
RandomAccessFile rf = new RandomAccessFile(outputFile, "rw");
rf.seek(rf.length());
rf.write(outputStr.getBytes());
rf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public String[] sendHtmlWithImg(String subject, String htmlText, ArrayList imgs, String[] mails) {
String[] result = {"", ""};
Session session = null;
Message message = null;
MimeMultipart multipart = null;
Transport transport = null;
props = new Properties();
props.put("mail.smtp.port", "25");
props.put("mail.smtp.auth", "false");
try
{
session = Session.getDefaultInstance(props, null);
session.setDebug(false);
message = new MimeMessage(session);
message.setSubject(subject);
String[] tempArray = mails[0].split("`");
int tempLen = tempArray.length;
String fromMail = tempArray[0];
String fromPerson = tempLen > 1?tempArray[1]:"";
String feedback = tempLen > 2?tempArray[2]:"";
message.setFrom(new InternetAddress(fromMail, fromPerson));
//是否要求回执
if(feedback.equals("on.")) {
message.setHeader("Disposition-Notification-To", fromMail);
}
tempArray = mails[1].split(";");
for(int i=0;i<tempArray.length;i++) {
if (tempArray[i].length()<=3 || tempArray[i].indexOf("@")==-1)
{
continue;
}
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(tempArray[i]));
}
tempArray = mails[2].split(";");
for(int i=0;i<tempArray.length;i++) {
if (tempArray[i].length()<=3 || tempArray[i].indexOf("@")==-1)
{
continue;
}
message.addRecipient(Message.RecipientType.CC,
new InternetAddress(tempArray[i]));
}
tempArray = mails[3].split(";");
for(int i=0;i<tempArray.length;i++) {
if (tempArray[i].length()<=3 || tempArray[i].indexOf("@")==-1)
{
continue;
}
message.addRecipient(Message.RecipientType.BCC,
new InternetAddress(tempArray[i]));
}
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(htmlText, "text/html;charset=GBK");
multipart = new MimeMultipart("related");
multipart.addBodyPart(messageBodyPart);
result[0] = "ok";
imgs = imgs == null? new ArrayList():imgs;
for(int i=0;i<imgs.size();i++) {
String[] temp = (String[])imgs.get(i);
String f = temp[0];
if (new File(f).exists())
{
try{
DataSource fds = new FileDataSource(f);
messageBodyPart = new MimeBodyPart();
messageBodyPart.setDataHandler(new DataHandler(fds));
messageBodyPart.setHeader("Content-ID","<"+temp[1]+">");
multipart.addBodyPart(messageBodyPart);
} catch (Exception e) {
System.out.println(e);
result[0] = "no";
result[1] = ("未知错误!"+e.getMessage()).replaceAll("\r", "").replaceAll("\n", "").replaceAll("'", " ");
break;
}
}
else {
result[1] = ("系统找不到指定的文件:"+f).replaceAll("\r", " ").replaceAll("\n", " ").replaceAll("'", " ");
}
}
message.setContent(multipart);
message.saveChanges();
transport = session.getTransport("smtp");
transport.connect(currentMailServer, null, null);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
logger.info(currentMailServer+" 邮件已发送!");
} catch (AddressException e) {
System.out.println(e);
result[0] = "no";
result[1] = ("无效邮件地址!"+e.getMessage()).replaceAll("\r", "").replaceAll("\n", "").replaceAll("'", " ");
} catch (MessagingException e) {
System.out.println(e);
currentMailServer = MAIL_SMTP_HOSTs[1];
try {
transport.connect(currentMailServer, null, null);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
result[0] = "ok";
logger.info(currentMailServer+" 邮件已发送!");
}
catch (MessagingException ex) {
System.out.println(ex);
currentMailServer = MAIL_SMTP_HOSTs[2];
try {
transport.connect(currentMailServer, null, null);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
result[0] = "ok";
logger.info(currentMailServer+" 邮件已发送!");
}
catch (Exception ex2) {
System.out.println(ex2);
result[0] = "no";
result[1] = "邮件服务器繁忙,请稍候再试!";
}
}
} catch (Exception e) {
e.printStackTrace();
result[0] = "no";
result[1] = ("未知错误!"+e.getMessage()).replaceAll("\r", "").replaceAll("\n", "").replaceAll("'", " ");
}
multipart = null;
message = null;
session = null;
transport = null;
//System.out.println("currentMailServer="+currentMailServer);
return result;
}
public static void main(String[] args) {
String[] mails = { "daibing@jobcn.com", "sssry22@163.com",
"shenhai_22@163.com", "shenhai_22@yahoo.com.cn" };
//MessageCenter.sendSimpleEmail(mails, "测试群发", "测试群发");
//MessageCenter.testSendWithAttachment();
//MessageCenter.testSendHtmlWithImg();
new MessageCenter().sendHtmlWithImg("test", "hahaha", null, mails);
}
private Properties props;
private String[] MAIL_SMTP_HOSTs = Constant.mailServers;
private String currentMailServer = MAIL_SMTP_HOSTs[0];
private static Logger logger = Logger.getLogger(MessageCenter.class);
private static String MAIL_SMTP_HOST = "smtp.163.com";
private static String MAIL_DOMAIN = "163.com";
private static String MAIL_USER = "sssry22";
private static String MAIL_PASSWORD = "158622";
private static String MAIL_ADDRESS = MAIL_USER + "@" + MAIL_DOMAIN;
private static String fileAttachment = "./img/A_1.jpg";
}
class CheckEmail extends Authenticator {
private String m_username = null;
private String m_userpass = null;
public CheckEmail() {
}
public void setUsername(String username) {
m_username = username;
}
public void setUserpass(String userpass) {
m_userpass = userpass;
}
public CheckEmail(String username, String userpass) {
super();
setUsername(username);
setUserpass(userpass);
}
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(m_username, m_userpass);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -