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

📄 sendmail.java

📁 精通Java核心技术的随书源代码
💻 JAVA
字号:
// ==================== Program Discription ==========================
// 程序名称:示例19-1 : SendMail.java
// 程序目的:使用JavaMail API发送电子邮件
// ==============================================================
import java.util.* ;
import java.io.* ;
import javax.mail.* ;
import javax.mail.internet.* ;
import javax.activation.* ;

public class SendMail
{
  public SendMail() {
  }

  private String smtphost;                       	//SMTP转发服务器
  private String smtpuser;                          	//SMTP转发的用户名
  private String smtppassword;                     	//SMTP转发的用户密码
  private String from;                             	//发件人
  private String to;                               	//收件人
  private String subject;                            	//邮件标题
  private String body;                             	//邮件内容
  private String bodystyle="text/plain;charset=GB2312"; 	//邮件内容的格式(默认为文本格式)
  private String filename;                          	//附件的文件名
  private Vector file = new Vector();                 	//用于保存发送附件的文件名的集合

  /**
   * 用于返回邮件SMTP转发服务器
   */
  public String getSmtphost(){
    return smtphost;
  }

  /**
   * 用于设置邮件SMTP转发服务器
   */
  public void setSmtphost(String inString){
    smtphost=inString;
  }

   /**
    ** 用于返回邮件SMTP转发的用户名
    */
  public String getSmtpuser(){
    return smtpuser;
  }

  /**
   ** 用于设置邮件SMTP转发的用户名
   */
  public void setSmtpuser(String inString){
    smtpuser=inString;
  }

   /**
    ** 用于返回邮件SMTP转发的用户密码
    */
  public String getSmtppassword(){
    return smtppassword;
  }

  /**
   ** 用于设置邮件SMTP转发的用户密码
   */
  public void setSmtppassword(String inString){
    smtppassword=inString;
  }

  /**
   ** 用于返回邮件发件人
   */
  public String getFrom(){
    return from;
  }

  /**
   ** 用于设置邮件发件人
   */
  public void setFrom(String inString){
    from=inString;
  }

  /**
   ** 用于返回邮件收件人
   */
  public String getTo(){
    return to;
  }

  /**
   ** 用于设置邮件收件人
   */
  public void setTo(String inString){
    to=inString;
  }

  /**
   ** 用于返回邮件标题
   */
  public String getSubject(){
    return subject;
  }

  /**
   ** 用于设置邮件标题
   */
  public void setSubject(String inString){
    subject=inString;
  }

  /**
   ** 用于返回邮件内容
   */
  public String getBody(){
    return body;
  }

  /**
   ** 用于设置邮件内容
   */
  public void setBody(String inString){
    body=inString;
  }

  /**
   ** 用于设置邮件内容的格式
   */
  public void setBodyStyle(String inString){
    bodystyle=inString;
  }

  /**
   ** 该方法用于收集附件名
   */
  public void attachfile(String fname){
    file.addElement(fname);
  }

  /**
   ** 用于邮件发送,返回发送结果
   **  true为发送成功
   **  false为发送失败
   */
  public boolean send(){
    boolean result;

    if(smtphost=="" || smtphost==null){
      System.out.println("An error ocur:smtp host is invalid!");
      return false;
    }

    if(from=="" || from==null){
      System.out.println("An error ocur:mail sender is invalid!");
      return false;
    }

    if(to=="" || to==null){
      System.out.println("An error ocur:mail reciever is invalid!");
      return false;
    }

    if(subject=="" || subject==null){
      System.out.println("An error ocur:subject is invalid!");
      return false;
    }

    Properties props = System.getProperties();
    if(smtpuser=="" || smtpuser==null || smtppassword=="" || smtppassword==null){
       props.put("mail.smtp.host",smtphost);
    }else{
       props.put("mail.smtp.auth","true");
    }
    Session session=Session.getInstance(props,null);
    try {
       MimeMessage msg = new MimeMessage(session);
       msg.setFrom(new InternetAddress(from));
       InternetAddress[] address={new InternetAddress(to)};
       msg.setRecipients(Message.RecipientType.BCC,InternetAddress.parse(to));
       msg.setSubject(subject);

       Multipart mp = new MimeMultipart();                /* 后面的BodyPart将加入到此处
                                                      创建的Multipart中 */
       Enumeration efile=file.elements();                   //利用枚举器方便的遍历集合
       while(efile.hasMoreElements()){
          MimeBodyPart mbp=new MimeBodyPart();
          filename=efile.nextElement().toString();            //选择出每一个附件名
          FileDataSource fds=new FileDataSource(filename);   //得到数据源
          mbp.setDataHandler(new DataHandler(fds));        //得到附件本身并置入BodyPart
          mbp.setFileName(fds.getName());                 //得到文件名同样置入BodyPart
          mp.addBodyPart(mbp);
       }
       file.removeAllElements();                          //移走集合中的所有元素
       MimeBodyPart mbp_body=new MimeBodyPart();
       mbp_body.setContent(body,bodystyle);               //加入邮件正文
       mp.addBodyPart(mbp_body);
       msg.setContent(mp);                              //Multipart加入到信件
       msg.setSentDate(new Date());                       //设置信件头的发送日期

       if(smtpuser=="" || smtpuser==null || smtppassword=="" || smtppassword==null){
          Transport.send(msg);                                 //发送信件
       }else{
          Transport trans=session.getTransport("smtp");
          trans.connect(smtphost,smtpuser,smtppassword);
          trans.sendMessage(msg,msg.getAllRecipients());          //发送信件
          trans.close();
       }
       result=true;
    } catch (MessagingException mex) {
       mex.printStackTrace();
       Exception ex = null;
       if ((ex=mex.getNextException())!=null){
          ex.printStackTrace();
       }
       result=false;
    }
    return result;
  }

  public static void main(String[] args) {
    SendMail mymail = new SendMail();
    mymail.setSmtphost(args[0]);
    mymail.setSmtpuser(args[1]);
    mymail.setSmtppassword(args[2]);
    mymail.setFrom(args[3]);
    mymail.setTo(args[4]);
    mymail.setSubject(args[5]);
    mymail.setBody(args[6]);
    mymail.setBodyStyle(args[7]);
    mymail.attachfile(args[8]);
    mymail.send() ;
  }
}

⌨️ 快捷键说明

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