java发送邮件

用gmail邮箱写java程序在后台自动发送邮件的方法,如果是126邮箱,则不需要ssl验证和端口号,可惜最近申请的126邮箱都不支持邮件客户端接收和发送邮件了,所以选择了gmail.但是配置起来要麻烦一些,在网上找了许多,才实验成功。

 

import  java.util.Properties;

import  javax.mail.Authenticator;
import  javax.mail.Message;
import  javax.mail.PasswordAuthentication;
import  javax.mail.Session;
import  javax.mail.Transport;
import  javax.mail.internet.InternetAddress;
import  javax.mail.internet.MimeMessage;

public   class  SimpleMail  {
    
/** 服务器的域名*/
    
private String hostName = "";
    
    
/** 服务器的端口号*/
    
private String port = "";
    
    
/** 服务器是否需要ssl验证*/
    
private String needSSL = "";
    
    
/** 发件人用户名*/
    
private String userName = "";
    
    
/** 发件人密码*/
    
private String passWord = "";
    
    
public SimpleMail(){}
    
    
public SimpleMail(String hostName,String port,String userName,String passWord,String needSSL){
        
this.hostName = hostName;
        
this.port = port;
        
this.userName = userName;
        
this.passWord = passWord;
        
this.needSSL = needSSL;
    }


    
/**
    * 发送邮件 
    * 
@param fromAdd 发件人地址
    * 
@param toAdd 收件人地址
    * 
@param subject 邮件主题
    * 
@param text 文本内容
    
*/

    
public void sentMail(String fromAdd,String toAdd,String subject,String text) throws Exception{
        
        Properties props 
= new Properties();
        props.put(
"mail.transport.protocol","smtp");
        
if(needSSL!=null && needSSL.trim().equalsIgnoreCase("Y"))
            java.security.Security.addProvider(
new com.sun.net.ssl.internal.ssl.Provider());
            props.setProperty(
"mail.smtp.socketFactory.class""javax.net.ssl.SSLSocketFactory");
            props.setProperty(
"mail.smtp.socketFactory.fallback""false");
            
if(port!=null && port.trim().length()>0){
                props.setProperty(
"mail.smtp.socketFactory.port", port);
            }

        }
else{
            props.put(
"mail.smtp.class""com.sun.mail.smtp.SMTPTransport");
        }

        
        
if(port!=null && port.trim().length()>0)
            props.setProperty(
"mail.smtp.port", port);
        
        props.put(
"mail.smtp.host",hostName);
        props.put(
"mail.smtp.auth""true");
        Session mailSession 
= Session.getDefaultInstance(props, new ForcedAuthenticator(userName,passWord));
        
        Message msg 
= new MimeMessage(mailSession);
        
        InternetAddress[] toAddress 
= InternetAddress.parse(toAdd,false);
        msg.setRecipients(Message.RecipientType.TO, toAddress);
        msg.setSubject(subject);
        msg.setFrom(
new InternetAddress(fromAdd));
        msg.setText(text);
        Transport.send(msg);
    }

    
    
class ForcedAuthenticator extends Authenticator {
        String userName 
= "";
        String passWord 
= "";
        
public ForcedAuthenticator(String userName,String passWord){
            
this.userName = userName;
            
this.passWord = passWord;
        }

        
        
public PasswordAuthentication getPasswordAuthentication() {
            
return new PasswordAuthentication(userName,passWord);
        }

    }
 

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值