📄 sendmail.java
字号:
package com.sxit.wap.staff;
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.io.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class sendmail {
private MimeMessage mimeMsg; //MIME邮件对象
private Session session; //邮件会话对象
private Properties props; //系统属性
private boolean needAuth = false; //smtp是否需要认证
private String username = ""; //smtp认证用户名和密码
private String password = "";
private String hostName = "";
private String[] toUrl;
private String fromUrl = "";
private String content = "";
private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象
public sendmail(String username,String password,String hostName,String[] toUrl,String fromUrl,String content){
this.username = username;
this.password = password;
this.hostName = hostName;
this.toUrl = toUrl;
this.fromUrl = fromUrl;
this.setSmtpHost();
this.content = content;
this.createMimeMessage();
}
private void setSmtpHost() {
System.out.println("设置系统属性:mail.smtp.host = "+hostName);
if(props == null)props = System.getProperties(); //获得系统属性对象
props.put("mail.smtp.host",hostName); //设置SMTP主机
}
private boolean createMimeMessage(){
try {
session = Session.getDefaultInstance(props, null); //获得邮件会话对象
}catch (Exception e) {
System.err.println("获取邮件会话对象时发生错误!" + e);
return false;
}
try {
mimeMsg = new MimeMessage(session); //创建MIME邮件对象
mp = new MimeMultipart();
return true;
}catch (Exception e) {
System.err.println("创建MIME邮件对象失败!" + e);
return false;
}
}
private void setNeedAuth(boolean need) {
System.out.println("设置smtp身份认证: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");
}
}
public boolean setSubject(String mailSubject) {
System.out.println("设置邮件主题!");
try{
mimeMsg.setSubject(mailSubject,"GB2312");
return true;
}catch(Exception e) {
System.err.println("设置邮件主题发生错误!");
return false;
}
}
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("设置邮件正文时发生错误!"+e);
return false;
}
}
public boolean addFileAffix(String filename) {
System.out.println("增加邮件附件:"+filename);
try{
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
System.out.println(fileds.getName());
bp.setFileName(new String(fileds.getName().getBytes(),"GB2312"));
mp.addBodyPart(bp);
return true;
}catch(Exception e){
System.err.println("增加邮件附件:"+filename+"发生错误!"+e);
return false;
}
}
public boolean setFrom(String from) {
System.out.println("设置发信人!");
try{
mimeMsg.setFrom(new InternetAddress(from)); //设置发信人
return true;
}
catch(Exception e)
{ return false; }
}
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;
}
}
public boolean setTo(String[] to){
if(to == null)return false;
try{
InternetAddress[] rec = new InternetAddress[to.length];
for (int i = 0; i < to.length; i++) {
rec[i] = new InternetAddress(to[i]);
}
mimeMsg.setRecipients(Message.RecipientType.TO, rec);
return true;
}catch(Exception ex){
return false;
}
}
public boolean setCopyTo(String copyto){
if(copyto == null)return false;
try{
mimeMsg.setRecipients(Message.RecipientType.CC,(Address[])InternetAddress.parse(copyto));
return true;
}
catch(Exception e) {
return false;
}
}
public boolean sendout()
{
try{
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println("正在发送邮件....");
Session mailSession = Session.getInstance(props,null);
Transport transport = mailSession.getTransport("smtp");
try{
transport.connect( (String) props.get("mail.smtp.host"), username,
password);
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
}catch(Exception ex){
transport.close();
this.setNeedAuth(!needAuth);
transport.connect( (String) props.get("mail.smtp.host"), username,
password);
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
}
System.out.println("11111111111111111111111");
//transport.send(mimeMsg);
System.out.println("发送邮件成功!");
transport.close();
return true;
}catch(javax.mail.AuthenticationFailedException e){
System.err.println("认证失败!"+ e);
return false;
}catch(javax.mail.MessagingException ex){
System.err.println("初始化错误!"+ ex);
ex.printStackTrace();
return false;
}
}
public boolean startmail(){
this.setNeedAuth(needAuth);
if(this.setSubject("测试")==false)return false;
if(this.setBody(this.content)==false)return false;
if(this.setTo(this.toUrl)==false)return false;
if(this.setFrom(this.fromUrl)==false)return false;
// if(this.addFileAffix("D://命名规则.txt")==false)return false;
if(this.sendout()==false) return false;
else
return true;
}
public static void main(String[] args){
String[] t = {"wanggang@sxit.com.cn"};
String f = "13316996852@gd165.com";
String content = "你好,见到你真高兴";
sendmail send = new sendmail("13316996852","790810","mail.gd165.com",t,f,content);
send.startmail();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -