⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smtp.java

📁 SendMail
💻 JAVA
字号:
import java.io.*; 
import java.net.*;
import java.util.*; 
import javax.mail.*; 
import javax.activation.*; 
import javax.mail.internet.*; 
 
class SMTP{ 
	String m_user=null;     //用于需要验证的用户名 
    String m_pass=null;     //口令 
    String m_server=null;   //SMTP服务器名称 
    int m_port=25;          //端口号,缺省为25 
         
    String m_from=null;     //发件人 
    String m_to=null;       //收件人 
    String m_cc=null;       //抄送 
    String m_bcc=null;      //密送 
    String m_subject=null;  //主题 
    String m_body=null;     //内容体 
    LinkedList m_attach=null;       //附件的文件名列表 
         
    SMTP(){ 
    } 
         
    //设定smtp服务器用户名(可选) 
    public void setUser(String user){ 
    	m_user=user; 
    } 
         
    //设定smtp服务器口令(可选) 
    public void setPass(String pass){ 
    	m_pass=pass; 
    } 
    
         
    //设定smtp的地址和端口号(可选) 
	public void setServer(String server,int port){ 
    	if(port>0) m_port=port; 
        m_server=server; 
    } 
         
    //设定smtp服务器地址,端口号使用缺省值 
    public void setServer(String server){ 
        m_server=server; 
    } 
         
    //发件人 
    public void setFrom(String from){ 
        m_from = from; 
    } 
         
    //收件人 
    public void setTo(String to){ 
	    m_to = to; 
    } 
         
    //抄送(可选) 
    public void setCc(String cc){ 
        m_cc=cc; 
    } 
         
    //密送(可选) 
    public void setBcc(String bcc){ 
        m_bcc=bcc; 
    } 
         
    //设置新的主题(可选) 
    public void setSubject(String subject){ 
        m_subject=subject; 
    } 
         
    //设置信的内容,若以<html>或<HTML>开头的内容为text/html格式 
    public void setBody(String body){ 
        m_body=body; 
    } 
         
    //可以多次添加附件,文件名最好是全路径,使用相对路径容易出错 
    public void attach(String attachfile){ 
       if(m_attach==null) m_attach=new LinkedList(); 
       m_attach.add(attachfile); 
    } 
         
    public boolean sendMail() throws Exception{ 
       Properties props=System.getProperties(); 
       props.setProperty("mail.transport.protocol","smtp");    //smtp协议 
       props.setProperty("mail.smtp.host",m_server);   //服务器地址 
       props.setProperty("mail.smtp.port",""+m_port);  //端口号 
                 
       //认证信息 
       if(m_user!=null && m_pass!=null && m_user.length()>0 && m_pass.length()>0){ 
           props.setProperty("mail.smtp.auth","true"); 
       } 
                 
       javax.mail.Session sess = javax.mail.Session.getDefaultInstance(props, null); 
                 
       MimeMessage msg=new MimeMessage(sess); 
       
       //发件人 
       msg.setFrom(new InternetAddress(m_from)); 
                 
       //收件人、抄送、密送 
	   //StringToKenizer st = StringToKennizer(m_to,";");st.nextToken()
	   //InternetAddress[] address = {new InternetAddress(args[0])};
	   //msg.setRecipients(Message.RecipientType.TO, address);
	   //msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to, false)); 
       //msg.addRecipients(Message.RecipientType.TO,InternetAddress.parse(to1, false)); 
       //msg.addRecipients(Message.RecipientType.CC,InternetAddress.parse(to1, false)); 

       msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(m_to)); 
       if(m_cc!=null && m_cc.length()>0) 
           msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(m_cc)); 
       if(m_bcc!=null && m_bcc.length()>0){
           msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(m_bcc)); 
          }
                 
       //主题 
       if(m_subject!=null) msg.setSubject(m_subject); 
                 
       //发件日期 
       msg.setSentDate(new Date()); 
                 
       //文本内容 
       MimeMultipart content=new MimeMultipart(); 
       if(content==null) return false; 

       MimeBodyPart part; 
       if(m_body!=null && m_body.length()>0){ 
           part=new MimeBodyPart(); 
           String type="text/plain"; 
           if(m_body.startsWith("<html>") || m_body.startsWith("<HTML>")){ 
               type="text/html"; 
           } 
           part.setText(m_body); 
           //以<html>和<HTML>开始的文本为text/html类型 
           part.setHeader("Content-Type",type); 
           content.addBodyPart(part); 
       } 
       
       //添加附件 
       if(m_attach!=null){ 
           String filename; 
           Iterator it=m_attach.iterator(); 
                         
           while(it.hasNext()){ 
               filename=(String)it.next(); 
               if(filename==null || filename.length()<=0) continue; 
                                                         
               part=new MimeBodyPart(); 
               //FileReader fds = new FileReader(filename); 
               DataSource fds = new FileDataSource(filename);
               part.setDataHandler(new DataHandler(fds)); 
               part.setFileName(MimeUtility.encodeText(fds.getName())); 
                                 
               content.addBodyPart(part); 
           } 
	   }
	   
       //保存修改 
       msg.setContent(content); 
       msg.saveChanges(); 
                 
       //如果需要验证用户(如:smtp.sina.com.cn),则使用connect并sendMessage 
       //注意必须设定mail.smtp.auth属性为true 
       if(m_user!=null && m_pass!=null && m_user.length()>0 && m_pass.length()>0){ 
           Transport trans=sess.getTransport(); 
           trans.connect(m_server,m_user,m_pass); 
           trans.sendMessage(msg,InternetAddress.parse(m_to)); 
           trans.close(); 
       } 
       //否则,不需要用户名和口令使用静态方法发送由件 
       else Transport.send(msg); 
       return true; 
	} 
    
    public static void main(String argv[]) throws Exception{ 
	    SMTP smtp=new SMTP(); 
        smtp.setFrom("zhui@xiyou.edu.cn"); 
        smtp.setTo("zhui@xiyou.edu.cn"); 
        //smtp.setCc("guojunbo<jgb@ict.ac.cn>,jgb@ict.ac.cn"); 
        //smtp.setServer("159.226.39.4"); 
                 
        smtp.setServer("202.117.128.6"); 
        smtp.setUser("zhui"); 
        smtp.setPass("zhui123"); 
                 
        smtp.setSubject("你好,测试由件"); 
        smtp.setBody("<html><a href=hh>你好</a>,我的朋友\r\n还有</html>"); 
        //smtp.attach("c:\\ic.txt"); 
        //smtp.attach("c:\\863.doc"); 
                 
        boolean ret = smtp.sendMail();   
                 
    } 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -