使用java进行代码发送邮件的测试

一、背景

1.因为公司要使用邮件发送,基于这个我们就来写我们自己的邮箱测试代码,公司的是基于其他的服务进行完成的,我们使用的是基于QQ的发件箱。

2.基于QQ邮箱进行邮件的发送测试,使用QQ邮箱作为发件邮箱,完成这么一个有趣的测试,下面我们来进行测试如何使用吧。

二、代码结构图

1.项目图

三、具体讲解代码

1.pom.xml

<dependency>
   <groupId>com.sun.mail</groupId>
   <artifactId>javax.mail</artifactId>
   <version>1.6.0</version>
</dependency>

2.mail.properties

#用户名
emailName=1396736195@qq.com
passWord=znopegvspsetgahj
mail.transport.protocol=smtp
mail.smtp.host=smtp.qq.com
mail.smtp.port=465
mail.smtp.auth=true
mail.smtp.timeout=60000
mail.smtp.socketFactory.port=465
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

3.Mail.java

public class Mail {

    //要发送至哪个邮箱
    private String emailName;
    //抄送对象
    private String cc;
    //密送对象
    private String bcc;
    //邮箱的主题
    private String subject;
    //邮箱的内容
    private String content;
    //邮箱发送的类型,纯文本还是网页,还是其他的格式
    private String contentType;
    //邮箱的接收者
    private String toEmilName;

    private String[] filePath;

    public String[] getFilePath() {
        return filePath;
    }

    public void setFilePath(String[] filePath) {
        this.filePath = filePath;
    }

    public InternetAddress[] getToEmilName() {
        try {
            return InternetAddress.parse(toEmilName);
        } catch (AddressException e) {
            e.printStackTrace();
        }
        return null;
    }

    public void setToEmilName(String toEmilName) {
        this.toEmilName = toEmilName;
    }

    public InternetAddress getEmailName() {
        try {
            return InternetAddress.parse(emailName)[0];
        } catch (AddressException e) {
            e.printStackTrace();
        }
        return  null;
    }

    public void setEmailName(String emailName) {
        this.emailName = emailName;
    }

    public InternetAddress[] getCc() {
        if(cc==null){
            return null;
        }else{
            try {
                return InternetAddress.parse(cc);
            } catch (AddressException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    public void setCc(String cc) {
        this.cc = cc;
    }

    public InternetAddress[] getBcc() {
        if(bcc==null){
            return  null;
        }else{
            try {
                return InternetAddress.parse(bcc);
            } catch (AddressException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    public void setBcc(String bcc) {
        this.bcc = bcc;
    }

    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 getContentType() {
        return contentType;
    }

    public void setContentType(String contentType) {
        this.contentType = contentType;
    }
}

4.MailAuthenticator.java

public class MailAuthenticator extends Authenticator {

    private String emailName;
    private String password;
    public MailAuthenticator(){}
    public MailAuthenticator(String emailName,String password){
        this.emailName=emailName;
        this.password=password;
    }
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(emailName, password);
    }
}

5.SendMailUtil.java

public class SendMailUtil {

    public static Properties properties;
    public static Properties getEmailInfo(String path) throws  Exception{
        synchronized (SendMailUtil.class){
            if(properties==null){
                synchronized (SendMailUtil.class){
                    properties = new Properties();
                    FileInputStream fis = new FileInputStream(new File(path));
                    properties.load(fis);
                    return  properties;
                }
            }else{
                return  properties;
            }
        }
    }
    public static Integer getInteger(String key){
        return  Integer.parseInt(properties.getProperty(key));
    }
    public static String getString(String key){
        return  properties.getProperty(key);
    }
    public static Double getDouble(String key){
        return  Double.parseDouble(properties.getProperty(key));
    }
}

6.SendEmail.java

public class SendEmail  {
    public static void sendEmail() throws  Exception{
        Properties properties = SendMailUtil.getEmailInfo("src/main/resources/mail.properties");
        Session session = Session.getInstance(properties,new MailAuthenticator(SendMailUtil.getString("emailName"),SendMailUtil.getString("passWord")));
        System.out.println(SendMailUtil.getString("emailName")+"这个是我的发送邮箱");
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(SendMailUtil.getString("emailName")));
        message.setSubject("你好,这个是我的邮件主题");
        message.setContent("这个是我的邮件的内容!","text/plain;charset=utf-8");
        message.setReplyTo(new InternetAddress[]{new InternetAddress("cmx15670546730@163.com")});
        Transport transport = session.getTransport();
        transport.connect();
        transport.sendMessage(message,message.getReplyTo());
    }
    public static void main(String...arg){
        try {
           sendEmail();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

四、发送邮件的配置

1.发送邮件的配置可以参考我之前的博客:https://blog.csdn.net/chenmingxu438521/article/details/89416263

五、结果

1.测试结果

六、结束

1.今天就整理到这里吧,有问题请留言!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值