package com.yourcompany.struts.dao;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.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;
public class Email {
// 发送邮件
public void send() {
String from = "[email protected]";
String to = "[email protected]";
String subject = "这是个测试邮件";
String content = "这是邮件内容";
String password = "zb_19871217";
String path = "";//s.getAdjunct();
try {
String mailserver ="smtp."+to.substring(to.indexOf('@')+1,to.length()); //在Internet上发送邮件时的代码
//String mailserver = "wanggh"; //在局域网内发送邮件时的代码
//String mailserver ="smtp.163.com";
Properties prop = new Properties();
prop.put("mail.smtp.host", mailserver);
prop.put("mail.smtp.auth", "true");
Session sess = Session.getDefaultInstance(prop);
sess.setDebug(true);
MimeMessage message = new MimeMessage(sess);
message.setFrom(new InternetAddress(from)); // 给消息对象设置发件人
//设置收件人
String toArr[]=to.split(",");
InternetAddress[] to_mail=new InternetAddress[toArr.length];
for(int i=0;i<toArr.length;i++){
to_mail[i]=new InternetAddress(toArr[i]);
}
message.setRecipients(Message.RecipientType.BCC,to_mail);
//设置主题
message.setSubject(subject);
Multipart mul = new MimeMultipart(); // 新建一个MimeMultipart对象来存放多个BodyPart对象
BodyPart mdp = new MimeBodyPart(); // 新建一个存放信件内容的BodyPart对象
mdp.setContent(content, "text/html;charset=gb2312");
mul.addBodyPart(mdp); // 将含有信件内容的BodyPart加入到MimeMulitipart对象中
if(!path.equals("") && path!=null){ //当存在附件时
// 设置信件的附件(用本机上的文件作为附件)
mdp = new MimeBodyPart(); // 新建一个存放附件的BodyPart
String adjunctname = new String(path.getBytes("GBK"), "ISO-8859-1"); // 此处需要转码,否则附件中包括中文时,将产生乱码
path = (System.getProperty("java.io.tmpdir") + "/" + path).replace(
"\\", "/");
System.out.println("路径:" + path);
FileDataSource fds = new FileDataSource(path);
DataHandler handler = new DataHandler(fds);
mdp.setFileName(adjunctname);
mdp.setDataHandler(handler);
mul.addBodyPart(mdp);
}
message.setContent(mul); // 把mul作为消息对象的内容
message.saveChanges();
message.setSentDate(new Date());
// message.addRecipients(javax.mail.Message.RecipientType.TO,
// to);
Transport transport = sess.getTransport("smtp");
// 以smtp方式登录邮箱,第1个参数是发送邮件用的邮件服务器SMTP地址,第2个参数为用户名,第3个参数为密码
transport.connect(mailserver, from, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (Exception e) {
System.out.println("发送邮件产生的错误:" + e.getMessage());
e.printStackTrace();
}
}
// public static void send(
// String to,/* 收信人地址 */ String toName,//收信人姓名
// String subject, /* 主题 */
// String body /* 内容 */
// ) {
// try {
// HtmlEmail email = new HtmlEmail();
// email.setHostName("smtp.163.com");//设置发信的smtp服务器
// email.addTo(to, toName);//设置收件人帐号和收件人
// email.setFrom("[email protected]", "aaa");//设置发信的邮件帐号和发信人
// email.setSubject(subject);//设置邮件主题
// email.setAuthentication("aaa","111111");//如果smtp服务器需要认证的话,在这里设置帐号、密码
// email.setHtmlMsg(body,"text/html; charset=GB2312");//设置邮件正文和字符编码
// email.send();
// } catch (EmailException e) {
// e.printStackTrace();
// }
public static void main(String[] args) {
new Email().send();
}
}
import java.util.Properties;import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
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;
public class Email {
// 发送邮件
public void send() {
String from = "[email protected]";
String to = "[email protected]";
String subject = "这是个测试邮件";
String content = "这是邮件内容";
String password = "zb_19871217";
String path = "";//s.getAdjunct();
try {
String mailserver ="smtp."+to.substring(to.indexOf('@')+1,to.length()); //在Internet上发送邮件时的代码
//String mailserver = "wanggh"; //在局域网内发送邮件时的代码
//String mailserver ="smtp.163.com";
Properties prop = new Properties();
prop.put("mail.smtp.host", mailserver);
prop.put("mail.smtp.auth", "true");
Session sess = Session.getDefaultInstance(prop);
sess.setDebug(true);
MimeMessage message = new MimeMessage(sess);
message.setFrom(new InternetAddress(from)); // 给消息对象设置发件人
//设置收件人
String toArr[]=to.split(",");
InternetAddress[] to_mail=new InternetAddress[toArr.length];
for(int i=0;i<toArr.length;i++){
to_mail[i]=new InternetAddress(toArr[i]);
}
message.setRecipients(Message.RecipientType.BCC,to_mail);
//设置主题
message.setSubject(subject);
Multipart mul = new MimeMultipart(); // 新建一个MimeMultipart对象来存放多个BodyPart对象
BodyPart mdp = new MimeBodyPart(); // 新建一个存放信件内容的BodyPart对象
mdp.setContent(content, "text/html;charset=gb2312");
mul.addBodyPart(mdp); // 将含有信件内容的BodyPart加入到MimeMulitipart对象中
if(!path.equals("") && path!=null){ //当存在附件时
// 设置信件的附件(用本机上的文件作为附件)
mdp = new MimeBodyPart(); // 新建一个存放附件的BodyPart
String adjunctname = new String(path.getBytes("GBK"), "ISO-8859-1"); // 此处需要转码,否则附件中包括中文时,将产生乱码
path = (System.getProperty("java.io.tmpdir") + "/" + path).replace(
"\\", "/");
System.out.println("路径:" + path);
FileDataSource fds = new FileDataSource(path);
DataHandler handler = new DataHandler(fds);
mdp.setFileName(adjunctname);
mdp.setDataHandler(handler);
mul.addBodyPart(mdp);
}
message.setContent(mul); // 把mul作为消息对象的内容
message.saveChanges();
message.setSentDate(new Date());
// message.addRecipients(javax.mail.Message.RecipientType.TO,
// to);
Transport transport = sess.getTransport("smtp");
// 以smtp方式登录邮箱,第1个参数是发送邮件用的邮件服务器SMTP地址,第2个参数为用户名,第3个参数为密码
transport.connect(mailserver, from, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (Exception e) {
System.out.println("发送邮件产生的错误:" + e.getMessage());
e.printStackTrace();
}
}
// public static void send(
// String to,/* 收信人地址 */ String toName,//收信人姓名
// String subject, /* 主题 */
// String body /* 内容 */
// ) {
// try {
// HtmlEmail email = new HtmlEmail();
// email.setHostName("smtp.163.com");//设置发信的smtp服务器
// email.addTo(to, toName);//设置收件人帐号和收件人
// email.setFrom("[email protected]", "aaa");//设置发信的邮件帐号和发信人
// email.setSubject(subject);//设置邮件主题
// email.setAuthentication("aaa","111111");//如果smtp服务器需要认证的话,在这里设置帐号、密码
// email.setHtmlMsg(body,"text/html; charset=GB2312");//设置邮件正文和字符编码
// email.send();
// } catch (EmailException e) {
// e.printStackTrace();
// }
public static void main(String[] args) {
new Email().send();
}
}
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.163.com", port 25220 163.com Anti-spam GT for Coremail System (163com[20081010])
DEBUG SMTP: connected to host "smtp.163.com", port: 25EHLO zh-b
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-coremail 1U702Iq1cx7no18twnFpTcGKas0Po18ZrZFpTcJGryayTZAdr43WS9vJo18ZrXCPTuFA-sKBj8Cz28x1UUUUU7Ic2I0Y2Ur843xiUCa0xDrUUUUj
250 8BITMIME
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"
DEBUG SMTP: Found extension "AUTH=LOGIN", arg "PLAIN"
DEBUG SMTP: Found extension "coremail", arg "1U702Iq1cx7no18twnFpTcGKas0Po18ZrZFpTcJGryayTZAdr43WS9vJo18ZrXCPTuFA-sKBj8Cz28x1UUUUU7Ic2I0Y2Ur843xiUCa0xDrUUUUj"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Attempt to authenticate
AUTH LOGIN
334 dXNlcm5hbWU6
NTY4NjYyMzQ4QHFxLmNvbQ==
334 UGFzc3dvcmQ6
emJfMTk4NzEyMTc=
535 Error: authentication failed
发送邮件产生的错误:null
javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:264)
at javax.mail.Service.connect(Service.java:134)
at com.yourcompany.struts.dao.Email.send(Email.java:72)
at com.yourcompany.struts.dao.Email.main(Email.java:100)