package com.cn.mail.util;import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.security.spec.X509EncodedKeySpec;
public class SendMail {
private MimeMessage mimeMsg; //MIME mail object private Session session;
private Properties props; //system property
private boolean needAuth = false; private String username = "";
private String password = ""; private Multipart mp; //Multipart ,存放信件 title\内容\附件等 public SendMail(String smtp) {
setSmtpHost(smtp);
createMimeMessage();
} /**
* @param hostName String
*/
public void setSmtpHost(String hostName) {
System.out.println("sytem属性:mail.smtp.host = " + hostName);
if (props == null) {
props = System.getProperties();
}
props.put("mail.smtp.host", hostName); //SMTP主机
} /**
* @return boolean
*/
public boolean createMimeMessage() {
try {
System.out.println("session begin-------");
session = Session.getInstance(props, null);
}
catch (Exception e) {
System.err.println("Session.getInstance faild!" + e);
return false;
} System.out.println("MimeMessage begin-------!");
try {
mimeMsg = new MimeMessage(session);
mp = new MimeMultipart(); return true;
}
catch (Exception e) {
System.err.println("MimeMessage fiald!" + e);
return false;
}
} /**
* @param need boolean
*/
public void setNeedAuth(boolean need) {
System.out.println(":mail.smtp.auth = " + need);
if (props == null) {
props = System.getProperties(); }
if (need) {
props.put("mail.smtp.auth", "true");
}
else {
props.put("mail.smtp.auth", "false");
}
} /**
* @param name String
* @param pass String
*/
public void setNamePass(String name, String pass) {
username = name;
password = pass;
} /**
* @param mailSubject String
* @return boolean
*/
public boolean setSubject(String mailSubject) {
System.out.println("set title begin-----!");
try {
if (!mailSubject.equals("") && mailSubject != null) {
mimeMsg.setSubject(mailSubject);
}
return true;
}
catch (Exception e) {
System.err.println("set title faild!");
return false;
}
} /**
* @param name String
* @param pass String
*/
public boolean addFileAffix(String filename) { System.out.println("增加附件----:" + filename);
if (filename.equals("") || filename == null) {
return false;
}
String file[];
file = filename.split(";");
System.err.println("========" + file.length);
try {
for (int i = 0; i < file.length; i++) {
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(file[i]);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName());
mp.addBodyPart(bp);
}
return true;
}
catch (Exception e) {
System.err.println("增加附件:" + filename + "--faild!" + e);
return false;
} } /**
* @param name String
* @param pass String
*/
public boolean setFrom(String from) {
System.out.println("set Mail From!");
try {
mimeMsg.setFrom(new InternetAddress(from));
return true;
}
catch (Exception e) {
return false;
}
} /**
* @param name String
* @param pass String
*/
public boolean setTo(String to) {
if (to == null) {
return false;
} try {
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
return true;
}
catch (Exception e) {
return false;
} } /**
* @param name String
* @param pass String
*/
public boolean setCopyTo(String copyto) {
if (copyto.equals("") || copyto == null) {
return false;
}
try {
String copy[];
int i = 0;
copy = copyto.split(";");
for(i=0; i<copy.length; i++){
mimeMsg.setRecipients(Message.RecipientType.CC,
(Address[]) InternetAddress.parse(copy[i]));
}
return true;
}
catch (Exception e) {
return false;
}
} /**
* @param mailBody String
*/
public boolean setBody(String mailBody) {
try {
BodyPart bp = new MimeBodyPart();
bp.setContent(
"<meta http-equiv=Content-Type content=text/html; charset=gb2312>" +
mailBody, "text/html;charset=GB2312");
mp.addBodyPart(bp); return true;
}
catch (Exception e) {
System.err.println("Set content Fiald!" + e);
return false;
}
} /**
*送html
* @param htmlPath
* @return
*/
public boolean setHtml(String htmlPath) {
try {
if (!htmlPath.equals("") && htmlPath != null) {
BodyPart mbp = new MimeBodyPart();
DataSource ds = new FileDataSource(htmlPath);
mbp.setDataHandler(new DataHandler(ds));
mbp.setHeader("Content-ID", "meme");
mp.addBodyPart(mbp);
}
return true;
}
catch (Exception e) {
System.err.println("set html Fiald!" + e);
return false;
}
} /**
* @param name String
* @param pass String
*/
public boolean sendout() {
try {
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println("正在 Send Mail ...."); Session mailSession = Session.getInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect( (String) props.get("mail.smtp.host"), username,
password);
transport.sendMessage(mimeMsg,
mimeMsg.getRecipients(Message.RecipientType.TO));
transport.sendMessage(mimeMsg,
mimeMsg.getRecipients(Message.RecipientType.CC));
System.out.println("Mail Send 成功!");
transport.close(); return true;
}
catch (Exception e) {
System.err.println("Mail Send Fiald!" + e);
return false;
}
}}
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.security.spec.X509EncodedKeySpec;
public class SendMail {
private MimeMessage mimeMsg; //MIME mail object private Session session;
private Properties props; //system property
private boolean needAuth = false; private String username = "";
private String password = ""; private Multipart mp; //Multipart ,存放信件 title\内容\附件等 public SendMail(String smtp) {
setSmtpHost(smtp);
createMimeMessage();
} /**
* @param hostName String
*/
public void setSmtpHost(String hostName) {
System.out.println("sytem属性:mail.smtp.host = " + hostName);
if (props == null) {
props = System.getProperties();
}
props.put("mail.smtp.host", hostName); //SMTP主机
} /**
* @return boolean
*/
public boolean createMimeMessage() {
try {
System.out.println("session begin-------");
session = Session.getInstance(props, null);
}
catch (Exception e) {
System.err.println("Session.getInstance faild!" + e);
return false;
} System.out.println("MimeMessage begin-------!");
try {
mimeMsg = new MimeMessage(session);
mp = new MimeMultipart(); return true;
}
catch (Exception e) {
System.err.println("MimeMessage fiald!" + e);
return false;
}
} /**
* @param need boolean
*/
public void setNeedAuth(boolean need) {
System.out.println(":mail.smtp.auth = " + need);
if (props == null) {
props = System.getProperties(); }
if (need) {
props.put("mail.smtp.auth", "true");
}
else {
props.put("mail.smtp.auth", "false");
}
} /**
* @param name String
* @param pass String
*/
public void setNamePass(String name, String pass) {
username = name;
password = pass;
} /**
* @param mailSubject String
* @return boolean
*/
public boolean setSubject(String mailSubject) {
System.out.println("set title begin-----!");
try {
if (!mailSubject.equals("") && mailSubject != null) {
mimeMsg.setSubject(mailSubject);
}
return true;
}
catch (Exception e) {
System.err.println("set title faild!");
return false;
}
} /**
* @param name String
* @param pass String
*/
public boolean addFileAffix(String filename) { System.out.println("增加附件----:" + filename);
if (filename.equals("") || filename == null) {
return false;
}
String file[];
file = filename.split(";");
System.err.println("========" + file.length);
try {
for (int i = 0; i < file.length; i++) {
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(file[i]);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName());
mp.addBodyPart(bp);
}
return true;
}
catch (Exception e) {
System.err.println("增加附件:" + filename + "--faild!" + e);
return false;
} } /**
* @param name String
* @param pass String
*/
public boolean setFrom(String from) {
System.out.println("set Mail From!");
try {
mimeMsg.setFrom(new InternetAddress(from));
return true;
}
catch (Exception e) {
return false;
}
} /**
* @param name String
* @param pass String
*/
public boolean setTo(String to) {
if (to == null) {
return false;
} try {
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
return true;
}
catch (Exception e) {
return false;
} } /**
* @param name String
* @param pass String
*/
public boolean setCopyTo(String copyto) {
if (copyto.equals("") || copyto == null) {
return false;
}
try {
String copy[];
int i = 0;
copy = copyto.split(";");
for(i=0; i<copy.length; i++){
mimeMsg.setRecipients(Message.RecipientType.CC,
(Address[]) InternetAddress.parse(copy[i]));
}
return true;
}
catch (Exception e) {
return false;
}
} /**
* @param mailBody String
*/
public boolean setBody(String mailBody) {
try {
BodyPart bp = new MimeBodyPart();
bp.setContent(
"<meta http-equiv=Content-Type content=text/html; charset=gb2312>" +
mailBody, "text/html;charset=GB2312");
mp.addBodyPart(bp); return true;
}
catch (Exception e) {
System.err.println("Set content Fiald!" + e);
return false;
}
} /**
*送html
* @param htmlPath
* @return
*/
public boolean setHtml(String htmlPath) {
try {
if (!htmlPath.equals("") && htmlPath != null) {
BodyPart mbp = new MimeBodyPart();
DataSource ds = new FileDataSource(htmlPath);
mbp.setDataHandler(new DataHandler(ds));
mbp.setHeader("Content-ID", "meme");
mp.addBodyPart(mbp);
}
return true;
}
catch (Exception e) {
System.err.println("set html Fiald!" + e);
return false;
}
} /**
* @param name String
* @param pass String
*/
public boolean sendout() {
try {
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println("正在 Send Mail ...."); Session mailSession = Session.getInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect( (String) props.get("mail.smtp.host"), username,
password);
transport.sendMessage(mimeMsg,
mimeMsg.getRecipients(Message.RecipientType.TO));
transport.sendMessage(mimeMsg,
mimeMsg.getRecipients(Message.RecipientType.CC));
System.out.println("Mail Send 成功!");
transport.close(); return true;
}
catch (Exception e) {
System.err.println("Mail Send Fiald!" + e);
return false;
}
}}
两种验证用户名密码的方法都用过了,无法测试通过代码如下import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
public class sendMail
{
public static void main(String args[]) throws Exception
{ String host = "smtp.tom.com";
String from = "[email protected]";
String to = "[email protected]";
String username = "kotaro2005";
String password = "******"; // Get system properties
// Properties props = System.getProperties();
Properties props = new Properties();
//Properties props = System.getProperties(); // Setup mail server
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
//SmtpAuth sa=new SmtpAuth();
//sa.getuserinfo("kotaro2005","*******");
// Get session
Session session = Session.getInstance(props,null);
// watch the mail commands go by to the mail server
session.setDebug(true); // Define message
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
message.setSubject("Hello JavaMail");
message.setText("Welcome to JavaMail"); // Send message
message.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect(host, username, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
}
错误信息如下:
javax.mail.SendFailedException: Sending failed;
nested exception is:
class javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 25;
nested exception is:
java.net.SocketException: Software caused connection abort: connect at javax.mail.Transport.send0(Transport.java:218) at javax.mail.Transport.send(Transport.java:80) at testcon.ConTest.main(ConTest.java:98)javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 25;
nested exception is:
java.net.SocketException: Software caused connection abort: connect at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1008) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:197) at javax.mail.Service.connect(Service.java:255)Sending failed;
nested exception is:
class javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 25;
nested exception is:
java.net.SocketException: Software caused connection abort: connect at javax.mail.Service.connect(Service.java:134) at javax.mail.Service.connect(Service.java:86) at com.sun.mail.smtp.SMTPTransport.connect(SMTPTransport.java:104) at javax.mail.Transport.send0(Transport.java:162) at javax.mail.Transport.send(Transport.java:80) at testcon.ConTest.main(ConTest.java:98)
错误信息是
javax.mail.MessagingException: Could not connect to SMTP host: smtp.tom.com, port: 25;
nested exception is:
java.net.SocketException: Software caused connection abort: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1008)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:197)
at javax.mail.Service.connect(Service.java:233)
at javax.mail.Service.connect(Service.java:134)
at testcon.sendMail.main(sendMail.java:46)
Exception in thread "main"
上面的写错了