手把手教你用java实现邮件发送及常见问题解决

Mail_SendProper


 1. 建立项目时应首先导入包javax.mail.jar,没有资源的话,可以去我博客下载

import java.util.Properties;

public class Mail_SendProper {
    private String Host;    //服务器的IP
    private String Port;     //端口
    private String SenAddress;//发送地址
    private String ReceiveAddress;//接收地址
    private String username;    //登陆邮件服务器的用户名
    private String password;    //登陆邮件服务器的用户密码
    private String subject;       //邮件主题
    private String content;  //邮件内容
    private boolean isvalidate=true;    //是否要身份验证
    public String getSubject() {
        return subject;
    }
    public void setSubject(String subject) {
        this.subject = subject;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }

    public String getHost() {
        return Host;
    }
    public void setHost(String host) {
        Host = host;
    }
    public String getPort() {
        return Port;
    }
    public void setPort(String port) {
        Port = port;
    }
    public String getSenAddress() {
        return SenAddress;
    }
    public void setSenAddress(String senAddress) {
        SenAddress = senAddress;
    }
    public String getReceiveAddress() {
        return ReceiveAddress;
    }
    public void setReceiveAddress(String receiveAddress) {
        ReceiveAddress = receiveAddress;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public boolean isIsvalidate() {
        return isvalidate;
    }
    public void setIsvalidate(boolean isvalidate) {
        this.isvalidate = isvalidate;
    }
     /**
      * 
      *@Method : 邮件会话属性
      * @date 2016年6月25日
      * @return Properties
      */
    public Properties  getPropertices() {
        Properties properties=new Properties();
        properties.put("mail.smtp.host", this.Host);
        properties.put("mail.smtp.port",this.Port );
        properties.put("mail.smtp.auth", isvalidate ? "true" :"false");
        return properties;

    }

}

MailAttorney


import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class MailAttorney  extends Authenticator{
    private String username;
    private String password;

    /**
     * 
     * @param username
     * @param password
     */
    public MailAttorney(String username,String password) {
        // TODO Auto-generated constructor stub
        this.password=password;
        this.username=username;

    }
    //获取密码认证器
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        // TODO Auto-generated method stub
        return new PasswordAuthentication(username,password);
    }

}

Send


import java.util.Date;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class Send {
    /**
     * 
     *@Method : 发送邮件的
     * @date 2016年6月25日
     * @return boolean
     */
     public static boolean Mail_Text(Mail_SendProper mail_SendProper)
     {
         MailAttorney attorney=null;
         if (mail_SendProper.isIsvalidate()) {     //是否要进行身份验证
            attorney=new MailAttorney(mail_SendProper.getUsername(), mail_SendProper.getPassword());
        }
          //创建一个发送邮件的session 
         Session session=Session .getInstance(mail_SendProper.getPropertices(),attorney);
         //根据session创建一个邮件消息
         Message mailMessage=new MimeMessage(session);
         try {
             //邮件发送者的地址
            Address from=new InternetAddress(mail_SendProper.getSenAddress());

            mailMessage.setFrom(from);
            //邮件接收者的地址
            Address to=new InternetAddress(mail_SendProper.getReceiveAddress());

            mailMessage.setRecipient(Message.RecipientType.TO, to);
            mailMessage.setSubject(mail_SendProper.getSubject());
            mailMessage.setSentDate(new Date());
            mailMessage.setText(mail_SendProper.getContent());

            Transport.send(mailMessage);   //发送邮件
            System.out.println(mail_SendProper.getHost());
            return true;
        } catch (AddressException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return false;
        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return false;
        }


     }
     public static void main(String[] args) {
        Mail_SendProper mail=new Mail_SendProper(); 
        mail.setHost("smtp.163.com");   //163邮件服务,qq的话把163,写成qq
        mail.setPort("25");      //端口25
        mail.setIsvalidate(true);
        mail.setUsername("");    //用户名
        mail.setPassword("");    //用户密码
        mail.setSenAddress("");    //发送地址     用户名和发送地址相同
        mail.setReceiveAddress("");     //接收地址
        mail.setSubject("这是一封测试邮件");
        mail.setContent("he");
        boolean b=Mail_Text(mail);
        System.out.println(b);       //邮件发送成功,输出true
    }
}

常见问题解决
550 user has no permission
解决方法开启POP3/SMTP/IMAP
开启服务
535 Error: authentication failed
填写用户密码应该用你的客户端授权码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wending-Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值