当前位置: 技术问答>java相关
急!用Java Mail通过需要登录认证的SMTP SERVER发邮件的问题。
来源: 互联网 发布时间:2015-09-01
本文导语: 我用Java Mail发邮件,如果邮件服务器不需要认证,是可以的。但是如果邮件服务需要SMTP认证,按API文档里的说明,总是发不出去,提示登录认证问题。谁有例子可以发一个给我吗。谢谢。 | i...
我用Java Mail发邮件,如果邮件服务器不需要认证,是可以的。但是如果邮件服务需要SMTP认证,按API文档里的说明,总是发不出去,提示登录认证问题。谁有例子可以发一个给我吗。谢谢。
|
import java.io.*;
import java.util.*;
import java.util.Date;
import javax.activation.DataHandler;
import javax.mail.*;
import javax.mail.internet.*;
/**
*
*
*/
public class Mail{
public boolean sendMail(String subject,String body,String to){
try {
SmtpAuth sa=new SmtpAuth(); // 密码验证
sa.getuserinfo(你的用户名,口令);
Properties props=System.getProperties();
props.put("mail.smtp.auth","true");
props.put("mail.smtp.host","smtp.163.com");
Session sess=Session.getInstance(props,sa);
sess.setDebug(true);//调试信息
Message msg = new MimeMessage(sess);
msg.setDataHandler(new DataHandler(body,"text/html; charset=gb2312"));
msg.setFrom(new InternetAddress(你的EMAIL地址,显示名字));
msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to,false));
msg.setSubject(subject);
msg.setSentDate(new Date());
msg.setText(body);
Transport.send(msg);
return true;
} catch (Exception e) {
return false;
}
}
public static void main(String[] args){
Mail m=new Mail();
m.sendMail("test","test javamail api",目标EMAIL地址);
}
}
这是认证函数:
import java.util.Date;
import java.util.*;
import java.util.Hashtable;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
/**
*
*
*/
public class SmtpAuth extends javax.mail.Authenticator{ //SMTP身份验证
private String user,password;
public void getuserinfo(String getuser,String getpassword){
user=getuser;
password=getpassword;
}
protected javax.mail.PasswordAuthentication getPasswordAuthentication(){
return new javax.mail.PasswordAuthentication(user,password);
}
}
你把上面的程序稍微做一下改动,放到你的JSP页面里就OK了!
import java.util.*;
import java.util.Date;
import javax.activation.DataHandler;
import javax.mail.*;
import javax.mail.internet.*;
/**
*
Title: Email
*
Description: 发送Email
*/
public class Mail{
public boolean sendMail(String subject,String body,String to){
try {
SmtpAuth sa=new SmtpAuth(); // 密码验证
sa.getuserinfo(你的用户名,口令);
Properties props=System.getProperties();
props.put("mail.smtp.auth","true");
props.put("mail.smtp.host","smtp.163.com");
Session sess=Session.getInstance(props,sa);
sess.setDebug(true);//调试信息
Message msg = new MimeMessage(sess);
msg.setDataHandler(new DataHandler(body,"text/html; charset=gb2312"));
msg.setFrom(new InternetAddress(你的EMAIL地址,显示名字));
msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to,false));
msg.setSubject(subject);
msg.setSentDate(new Date());
msg.setText(body);
Transport.send(msg);
return true;
} catch (Exception e) {
return false;
}
}
public static void main(String[] args){
Mail m=new Mail();
m.sendMail("test","test javamail api",目标EMAIL地址);
}
}
这是认证函数:
import java.util.Date;
import java.util.*;
import java.util.Hashtable;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
/**
*
Title: Email身份验证
*
Description: Email身份验证
*/
public class SmtpAuth extends javax.mail.Authenticator{ //SMTP身份验证
private String user,password;
public void getuserinfo(String getuser,String getpassword){
user=getuser;
password=getpassword;
}
protected javax.mail.PasswordAuthentication getPasswordAuthentication(){
return new javax.mail.PasswordAuthentication(user,password);
}
}
你把上面的程序稍微做一下改动,放到你的JSP页面里就OK了!
|