//现在的大部分的邮件服务器都要求有身份验证,所以需要此类实现验证功能
class MailAuthenticator extends Authenticator{ private String username = null;
private String userpasswd = null; public MailAuthenticator(){}
public MailAuthenticator(String username,String userpasswd){
this.username = username;
this.userpasswd = userpasswd;
}
public void setUserName(String username){
this.username = username;
} public void setPassword(String password){
this.userpasswd = password;
} public PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(username,userpasswd);
}
}//为了使此邮件发送程序能够支持可扩展性,把发送邮件的类型放到子类中来,
//以便支持更多的邮件类型,比如语音邮件,视频邮件等......//1.发送纯文本文件的的子类MailSendText.classclass MailSendText extends SendMail{ public MailSendText(String smtpHost,String username,String password){
super(smtpHost,username,password);
multipart = new MimeMultipart();
} public void setMailContent(String mailContent)throws MessagingException{
messageBodyPart.setText(mailContent);
multipart.addBodyPart(messageBodyPart);
}
}//2.发送html格式的子类MailSendHtml.class
class MailSendHtml extends SendMail{
private ArrayList arrayList1 = new ArrayList();
private ArrayList arrayList2 = new ArrayList(); public MailSendHtml(String smtpHost,String username,String password){
super(smtpHost,username,password);
multipart = new MimeMultipart("related");
} public void setMailContent(String mailContent)throws MessagingException{
String htmlContent = getContent("<img src=",mailContent);
System.out.println(htmlContent);//1
messageBodyPart.setContent(htmlContent,"text/html");
multipart.addBodyPart(messageBodyPart);
//调用处理html文件中的图片方法
processHtmlImage(mailContent);
}
//处理html页面上的图片方法如下:
private void processHtmlImage(String mailContent)throws MessagingException{
for(int i=0;i<arrayList1.size();i++){
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource((String)arrayList1.get(i));
messageBodyPart.setDataHandler(new DataHandler(source));
String contentId = "<"+(String)arrayList2.get(i)+">";
System.out.println(contentId);
messageBodyPart.setHeader("Content-ID",contentId);
messageBodyPart.setFileName((String)arrayList1.get(i));
multipart.addBodyPart(messageBodyPart);
}
}
//处理要发送的html文件,主要是针对html文件中的图片
private String getContent(String searchString,String mailContent){
String afterReplaceStr = "";
for(int i=0;i<mailContent.length();i++){
for(int j=i+1;j<mailContent.length();j++){
String searResult = mailContent.substring(i,j);
if(searResult.equalsIgnoreCase(searchString)){
String subString = mailContent.substring(j);
int flagIndex = subString.indexOf('>');
String replaceStr = subString.substring(1,flagIndex-1);
if(replaceStr.indexOf("http://") != -1){
System.out.println(replaceStr);
System.out.println("不需要处理图片!");
}
else{ arrayList1.add(replaceStr);
}
}
}
}
//在html文件中用"cid:"+Content-ID来替换原来的图片链接
for(int m=0;m<arrayList1.size();m++){
arrayList2.add(createRandomStr());
String addString = "cid:"+(String)arrayList2.get(m);
afterReplaceStr = mailContent.replaceAll((String)arrayList1.get(m),addString);
}
return afterReplaceStr;
}
//产生一个随机字符串,为了给图片设定Content-ID值
private String createRandomStr(){
char []randomChar = new char[8];
for(int i=0;i<8;i++){
randomChar[i]=(char)(Math.random()*26+'a');
}
String replaceStr = new String(randomChar);
return replaceStr;
}
}
测试代码
import java.util.Date;
public class SendMailTest{
public void sendemail(String str){
String []toAddress = {str};
SendMail sendmail = new MailSendHtml("smtp.126.com","Cupid1945","yonghumima");
try{
sendmail.setSubject("赶快验证,你将享受超值服务");
sendmail.setSendDate(new Date());
//String plainText = "Welcome to use this Mail-Send program!";
String htmlText = "<strong><em></em>sadfsfsfsdfsdfsd</strong>";
//sendmail.setMailContent(plainText);
sendmail.setMailContent(htmlText);
//sendmail.setAttachments("E:\\eclipse\\workspace\\cc\\eq1.htm");
sendmail.setMailFrom("[email protected]","CNIC");
sendmail.setMailTo(toAddress,"to");
//sendmail.setMailTo(toAddress,"cc");
sendmail.sendMail();
}
catch(Exception ex){ ex.printStackTrace();}
}
public static void main(String args[]){
SendMailTest cc= new SendMailTest();
cc.sendemail("[email protected]");
}
,理论上应该有HTML内容sadfsfsfsdfsdfsd的,结果YAHOO邮箱里除了标题,内容为空
class MailAuthenticator extends Authenticator{ private String username = null;
private String userpasswd = null; public MailAuthenticator(){}
public MailAuthenticator(String username,String userpasswd){
this.username = username;
this.userpasswd = userpasswd;
}
public void setUserName(String username){
this.username = username;
} public void setPassword(String password){
this.userpasswd = password;
} public PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(username,userpasswd);
}
}//为了使此邮件发送程序能够支持可扩展性,把发送邮件的类型放到子类中来,
//以便支持更多的邮件类型,比如语音邮件,视频邮件等......//1.发送纯文本文件的的子类MailSendText.classclass MailSendText extends SendMail{ public MailSendText(String smtpHost,String username,String password){
super(smtpHost,username,password);
multipart = new MimeMultipart();
} public void setMailContent(String mailContent)throws MessagingException{
messageBodyPart.setText(mailContent);
multipart.addBodyPart(messageBodyPart);
}
}//2.发送html格式的子类MailSendHtml.class
class MailSendHtml extends SendMail{
private ArrayList arrayList1 = new ArrayList();
private ArrayList arrayList2 = new ArrayList(); public MailSendHtml(String smtpHost,String username,String password){
super(smtpHost,username,password);
multipart = new MimeMultipart("related");
} public void setMailContent(String mailContent)throws MessagingException{
String htmlContent = getContent("<img src=",mailContent);
System.out.println(htmlContent);//1
messageBodyPart.setContent(htmlContent,"text/html");
multipart.addBodyPart(messageBodyPart);
//调用处理html文件中的图片方法
processHtmlImage(mailContent);
}
//处理html页面上的图片方法如下:
private void processHtmlImage(String mailContent)throws MessagingException{
for(int i=0;i<arrayList1.size();i++){
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource((String)arrayList1.get(i));
messageBodyPart.setDataHandler(new DataHandler(source));
String contentId = "<"+(String)arrayList2.get(i)+">";
System.out.println(contentId);
messageBodyPart.setHeader("Content-ID",contentId);
messageBodyPart.setFileName((String)arrayList1.get(i));
multipart.addBodyPart(messageBodyPart);
}
}
//处理要发送的html文件,主要是针对html文件中的图片
private String getContent(String searchString,String mailContent){
String afterReplaceStr = "";
for(int i=0;i<mailContent.length();i++){
for(int j=i+1;j<mailContent.length();j++){
String searResult = mailContent.substring(i,j);
if(searResult.equalsIgnoreCase(searchString)){
String subString = mailContent.substring(j);
int flagIndex = subString.indexOf('>');
String replaceStr = subString.substring(1,flagIndex-1);
if(replaceStr.indexOf("http://") != -1){
System.out.println(replaceStr);
System.out.println("不需要处理图片!");
}
else{ arrayList1.add(replaceStr);
}
}
}
}
//在html文件中用"cid:"+Content-ID来替换原来的图片链接
for(int m=0;m<arrayList1.size();m++){
arrayList2.add(createRandomStr());
String addString = "cid:"+(String)arrayList2.get(m);
afterReplaceStr = mailContent.replaceAll((String)arrayList1.get(m),addString);
}
return afterReplaceStr;
}
//产生一个随机字符串,为了给图片设定Content-ID值
private String createRandomStr(){
char []randomChar = new char[8];
for(int i=0;i<8;i++){
randomChar[i]=(char)(Math.random()*26+'a');
}
String replaceStr = new String(randomChar);
return replaceStr;
}
}
测试代码
import java.util.Date;
public class SendMailTest{
public void sendemail(String str){
String []toAddress = {str};
SendMail sendmail = new MailSendHtml("smtp.126.com","Cupid1945","yonghumima");
try{
sendmail.setSubject("赶快验证,你将享受超值服务");
sendmail.setSendDate(new Date());
//String plainText = "Welcome to use this Mail-Send program!";
String htmlText = "<strong><em></em>sadfsfsfsdfsdfsd</strong>";
//sendmail.setMailContent(plainText);
sendmail.setMailContent(htmlText);
//sendmail.setAttachments("E:\\eclipse\\workspace\\cc\\eq1.htm");
sendmail.setMailFrom("[email protected]","CNIC");
sendmail.setMailTo(toAddress,"to");
//sendmail.setMailTo(toAddress,"cc");
sendmail.sendMail();
}
catch(Exception ex){ ex.printStackTrace();}
}
public static void main(String args[]){
SendMailTest cc= new SendMailTest();
cc.sendemail("[email protected]");
}
,理论上应该有HTML内容sadfsfsfsdfsdfsd的,结果YAHOO邮箱里除了标题,内容为空
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货