java发邮件发件人必须是获得认证的人

本文介绍了一个Java程序示例,展示了如何利用JavaMail API来构建并发送包含HTML内容及附件的电子邮件。该程序涵盖了邮件配置、主体设置、添加附件及发送等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import javax.mail.*;
import javax.mail.internet.*;
import java.util.Date;
import javax.activation.*;
import java.io.*;
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 Multipart mp;    //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象


 
/**
  * 
  
*/

  
public SendMail() {
    setSmtpHost(
"smtp.163.com");//如果没有指定邮件服务器,就从getConfig类中获取
    createMimeMessage();
  }


  
public SendMail(String smtp){
    setSmtpHost(smtp);
    createMimeMessage();
  }


 

 
/**
  * 
@param hostName String
  
*/

  
public void setSmtpHost(String hostName) {
    System.out.println(
"设置系统属性:mail.smtp.host = "+hostName);
    
if(props == null)props = System.getProperties();         //获得系统属性对象

    props.put(
"mail.smtp.host",hostName);                 //设置SMTP主机
  }



 
/**
  * 
@return boolean
  
*/

  
public boolean createMimeMessage()
  
{
    
try{
      System.out.println(
"准备获取邮件会话对象!");
      session 
= Session.getDefaultInstance(props,null);   //获得邮件会话对象
    }

    
catch(Exception e){
      System.err.println(
"获取邮件会话对象时发生错误!"+e);
      
return false;
    }


    System.out.println(
"准备创建MIME邮件对象!");
    
try{
      mimeMsg 
= new MimeMessage(session);                 //创建MIME邮件对象
      mp = new MimeMultipart();

      
return true;
    }

    
catch(Exception e){
      System.err.println(
"创建MIME邮件对象失败!"+e);
      
return false;
    }

  }


 

 
/**
  * 
@param need boolean
  
*/

  
public 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");
    }

  }


 

 
/**
  * 
@param name String
  * 
@param pass String
  
*/

  
public void setNamePass(String name,String pass) {
    username 
= name;
    password 
= pass;
  }



 
/**
  * 
@param mailSubject String
  * 
@return boolean
  
*/

  
public boolean setSubject(String mailSubject) {
    System.out.println(
"设置邮件主题!");
    
try{
      mimeMsg.setSubject(mailSubject);
      
return true;
    }

    
catch(Exception e) {
      System.err.println(
"设置邮件主题发生错误!");
      
return false;
    }

  }



 
 
/**
  * 
@param mailBody String
  
*/

  
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;
    }

  }



 
/**
  * 
@param name String
  * 
@param pass String
  
*/

  
public boolean addFileAffix(String filename) {

 System.out.println(
"增加邮件附件:"+filename);

 
try{
      BodyPart bp 
= new MimeBodyPart();
      FileDataSource fileds 
= new FileDataSource(filename);
      bp.setDataHandler(
new DataHandler(fileds));
      bp.setFileName(fileds.getName());

      mp.addBodyPart(bp);

      
return true;
    }

    
catch(Exception e){
      System.err.println(
"增加邮件附件:"+filename+"发生错误!"+e);
      
return false;
    }

  }


 

 
/**
  * 
@param name String
  * 
@param pass String
  
*/

  
public boolean setFrom(String from) {
    System.out.println(
"设置发信人!");
    
try{
      mimeMsg.setFrom(
new InternetAddress(from));             //设置发信人
      return true;
    }

    
catch(Exception e)
    
return false; }
  }



 
/**
  * 
@param name String
  * 
@param pass String
  
*/

  
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;   }

  }


 
/**
  * 
@param name String
  * 
@param pass String
  
*/

  
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; }
  }



 
/**
  * 
@param name String
  * 
@param pass String
  
*/

  
public boolean sendout()
  
{
    
try{
      mimeMsg.setContent(mp);
      mimeMsg.saveChanges();
      System.out.println(
"正在发送邮件....");
     
// Email_Autherticatorbean auth = new Email_Autherticatorbean(this.username,this.password);

      Session mailSession 
= Session.getInstance(props,null);
      Transport transport 
= mailSession.getTransport("smtp");
      transport.connect((String)props.get(
"mail.smtp.host"),username,password);
      transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
      
//transport.send(mimeMsg);

      System.out.println(
"发送邮件成功!");
      transport.close();

      
return true;
    }

    
catch(Exception e)
    
{
      System.err.println(
"邮件发送失败!"+e);
      
return false;
    }

  }



  
/**
   *  Just do it as this
   
*/

 
  
public static void main(String[] args) {

    String mailbody 
= "<meta http-equiv=Content-Type content=text/html; charset=gb2312>"+
        
"<div align=center><a href=http://www.youkuaiyun.com> csdn </a></div>";
//daoge163@126.com
    SendMail themail = new SendMail("smtp.163.com");
    themail.setNeedAuth(
true);

    
if(themail.setSubject("标题javamail发送测试"== falsereturn;
    
if(themail.setBody(mailbody) == falsereturn;
    
if(themail.setTo("邮件地址"== falsereturn;
    
if(themail.setFrom("获得认证的邮件地址"== falsereturn;
    
if(themail.addFileAffix("c:/boot.ini"== falsereturn;
    themail.setNamePass(
"用户名","密码");//获得认证的邮件地址的用户名和密码

    
if(themail.sendout() == falsereturn;    
  }

  
/*
  public static void main(String[] argv) {
      System.out.println(System.getProperty("user.home"));
   }
 
*/

}

 我用的163提供的smtp服务,我的邮箱是老以前申请的,可以用。

对于最近申请的163邮箱,不能提供这个服务了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值