栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

发送邮件-Java基础

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

发送邮件-Java基础

**前言:**其实写这篇文章的时候我内心挺复杂的,所以这篇文章主要部分记录自己的反思,因为发送邮件的知识点不多,就那么一点套路,模板直接就可以用,我把它放文章的最下面。

​ 我抵抗不住诱惑。现在是23:47,两个室友在打游戏,还有一个室友在学教资,是的后天是10.30号,我也报了教资,但是到今天为止,我只学了科三和科一,而且只是简单的过了一遍,并没有花时间去背知识点和练题…怎么说呢?人都是有惰性的吧,我也一样,暑假自己一个人在家,生活作息都很有规律,每天听网课敲代码,也不会觉得枯燥无味,那段时间真的是很认真很认真的去学习。我以为这种状态会持续很久很久,我也幻想着开学后努力的样子:晚上准时准点的睡觉,然后早上早起去学习。但是想象终归是想象,开学后我确实按照在家的习惯敲了好几天代码,但是也就是这好几天,我再一次的开始的我的惰。就把我的认真学习时间算作一周吧(实际上只有两三天),我们是10月8号开的学,现在是10月28日,整整三周,前一周我在学习,而剩下的两周,我是早上睡到8点多,晚上玩到夜里两点半,白天昏昏沉沉仿佛回到高中的时候。我讨厌这样的自己,却又再一次的屈服于现实。是的,我抵抗不住诱惑,稍微有那么一点点吸引我,我就放飞自我。

​ 为什么要考教资呢?。今天早上起来的时候已经八点多了,起来第一件事是坐在桌子前做几套教资试卷,是的,后天就要考教资了,但是我不慌,不是因为我已经复习好了,而是备考这段时间我也想了想自己的未来。我的未开跟考教资有关系吗?答案是有,但是关系不大。那么我就要去考虑一个问题:**为什么要考教资呢?**起初的想法是准备给自己一条后路,因为程序员是个年龄饭,随着年龄的增大,学习能力以及记忆力会下降,这样的话,在公司和求职的过程中就是处于一种劣势的状态,这时候很多程序员就会选择转行,当然也有一小部分的人在竞争中留存下来。思考出的结果是:我不该去报考教资

​ 我不该去报考教资。为什么我不该去报考教资呢?因为在我的想法中,从来就没有打算去当老师,从始至终都没有当老师的这种想法,报考教资算是一种盲目的跟风行为。这里这样说并不是为自己的行为开脱,而是我的想法一直就是这样,只不过有时候思路很混沌罢了,有时候我也不知道自己想的是什么,自己想要的是什么。为什么我一直以来的想法不是当老师呢?第一:教师这个工作不是很自由,我喜欢的工作应是自由的;第二:教师这个行业是有瓶颈的,没有创新,而我偏偏是很喜欢创新的,总是有一些想法想要去实现;第三:教师的工资稳定但不高,作为一个男生,想要养家糊口,单单凭靠教师的死工资是不行的,毕竟一家老小都要自己去养活。从这三点基本上就把不当老师的原因说的清清楚楚了,所以对于后天的考试,我真的不担心。

​ **对于教资考试,我应该懈怠吗?**答案是不,虽然我不担心考试的结果,但是,我也准备了有那么点时间了,虽然掌握的知识不多,但是时间上的消耗如果不寻求一个结果就真的是浪费时间了,所以这个考试不会懈怠,并且要很重视,作为检验自己的一个机会。所以说,明天我会努力复习,最后一天的冲刺

​ 窥探内心的真实想法,我一直揣测自己的内心,到底要不要考研?一直都很迷茫,相信到我这个阶段的时候你也会处于一种迷茫的状态。我们这个专业很好找工作,尤其掌握前沿技术的人。我很喜欢敲代码(以前不喜欢),每当敲出自己想要的程序就很有成就感,那么我到底是专心研究技术呢还是要去考研呢?说实在的,我并不想考研,我很想专心研究代码,然后踏入社会找工作。但是现在很多高薪职位都要求学历,我真的是搞不明白,如果一个人的技术真正的达到一定的境界,跟他自己的学历有关系吗?家里一直给我说考研的事,说现在这种社会,大学生遍地都是,不考研根本不行。就这样,我一直很纠结,我有时会告诉自己,我还是考研吧,很无奈,真的无奈。我很想证明不考研也能打拼出自己的一片天地,但是我没有勇气,因为我知道这就是现实,真实的社会。

​ **我打算考研,不妥协这个社会。**考研就要放弃自己当前的技术研究吗?很多人告诉我,假如你打算考研的话,那你现在就准备考研的事情吧,不要再去研究什么前沿技术,转新去考研。我偏不,研究技术是我的兴趣,没有兴趣学习就像行尸走肉,是没有感情的复读机器,我才不要成为一台机器。我要边研究边考研,当然大部分时间还是放在准备考研上。具体计划我还没有想好,但是初步的想法就是认真准备去考研,同时提升自己的技术,保证不落后。

​ **怎样抵挡诱惑?**如上所述,一点点诱惑就让我放飞自我,但是我自己在家的时候又怎么能静下心来学习呢?人与人是不一样的,有的人是耐不住寂寞,学习需要陪伴,有的人越安静越冷静,而我应该就是后者吧。所以,当我定好目标和详细的备考计划时,我会出去租房住,一个人安安静静的学习。这段时间我也想清楚了一句话,大佬总是孤独的。虽然我并不是什么大佬,但是我对这句话也有那么一点体会,当你懂得越多,你会发现想找一个和你交流的人就很难,甚至根本早不到一个能和你交流的人。

​ 反思结束,下面是发送邮件的笔记代码

用得到的jar包


    javax.mail
    mail
    1.4.7

一、创建一封邮件保存在本地
package cn.daitools;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.Properties;

import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
//创建一个邮件

public class demo01 {
public static void main(String[] args) throws Exception {

    // 1. 创建一封邮件
    Properties props = new Properties();
    // 用于连接邮件服务器的参数配置(发送邮件时才需要用到)
    Session session= Session.getInstance(props);        // 根据参数配置,创建会话对象(为了发送邮件准备的)
    MimeMessage message = new MimeMessage(session);     // 创建邮件对象

    

    // 2. From: 发件人
    //    其中 InternetAddress 的三个参数分别为: 邮箱, 显示的昵称(只用于显示, 没有特别的要求), 昵称的字符集编码
    //    真正要发送时, 邮箱必须是真实有效的邮箱。
    message.setFrom(new InternetAddress("aa@send.com", "USER_AA", "UTF-8"));

    // 3. To: 收件人
    message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("cc@receive.com", "USER_CC", "UTF-8"));
    //    To: 增加收件人(可选)
    message.addRecipient(MimeMessage.RecipientType.TO, new InternetAddress("dd@receive.com", "USER_DD", "UTF-8"));
    //    Cc: 抄送(可选)
    message.setRecipient(MimeMessage.RecipientType.CC, new InternetAddress("ee@receive.com", "USER_EE", "UTF-8"));
    //    Bcc: 密送(可选)
    message.setRecipient(MimeMessage.RecipientType.BCC, new InternetAddress("ff@receive.com", "USER_FF", "UTF-8"));

    // 4. Subject: 邮件主题
    message.setSubject("TEST邮件主题", "UTF-8");

    // 5. Content: 邮件正文(可以使用html标签)
    message.setContent("TEST这是邮件正文。。。", "text/html;charset=UTF-8");

    // 6. 设置显示的发件时间
    message.setSentDate(new Date());

    // 7. 保存前面的设置
    message.saveChanges();

    // 8. 将该邮件保存到本地
    OutputStream out = new FileOutputStream("MyEmail.eml");
    message.writeTo(out);
    out.flush();
    out.close();
}
}
二、发送普通邮件
package cn.daitools;

import com.sun.mail.util.MailSSLSocketFactory;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.UnsupportedEncodingException;
import java.security.GeneralSecurityException;
import java.util.Properties;


public class demo02 {
public static void main(String[] args) throws GeneralSecurityException, MessagingException, UnsupportedEncodingException {
    //配置邮箱连接信息
    Properties prop = new Properties();
    prop.setProperty("mail.host","smtp.qq.com");
    prop.setProperty("mail.transport.protocol","smtp");
    prop.setProperty("mail.smtp.auth","true");

    //设置ssl加密
    MailSSLSocketFactory sf = new MailSSLSocketFactory();
    sf.setTrustAllHosts(true);
    prop.put("mail.smtp.ssl.enable","true");
    prop.put("mail.smtp.ssl.socketFactory",sf);

    //1、创建发送邮件的Seeeion环境
    Session session = Session.getDefaultInstance(prop, new Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            //发件人,授权码
            return new PasswordAuthentication("1500015797@qq.com","tujcblipdrbngaef");
        }
    });

//        //开启发送邮件的Debug模式
//        session.setDebug(true);

    //2、通过Session对象得到transport对象
    Transport ts = session.getTransport();

    //3、使用用户名和授权码连上邮箱服务器
    ts.connect("smtp.qq.com","1500015797@qq.com","tujcblipdrbngaef");

    //4、创建邮件
    //需要传递Session
    MimeMessage message = new MimeMessage(session);
    //指明发件人
    message.setFrom(new InternetAddress("1500015797@qq.com","网站注册","utf-8"));
    //指明邮件的收件人
    message.setRecipient(Message.RecipientType.TO,new InternetAddress("78278738@qq.com"));
    //设置邮件的标题
    message.setSubject("验证码");

    //准备正文数据
    MimeBodyPart textbody = new MimeBodyPart();
    textbody.setContent("code","text/html;charset=utf-8");

    //描述数据关系
    MimeMultipart mm =new MimeMultipart();
    mm.addBodyPart(textbody);
    mm.setSubType("related");

    //将拼装好的mm图文设置为主题
    MimeBodyPart contentText = new MimeBodyPart();
    contentText.setContent(mm);

    //设置消息,保存修改
    message.setContent(mm);
    message.saveChanges();

    //5、发送邮件
    ts.sendMessage(message,message.getAllRecipients());
    //6、关闭连接
    ts.close();
}
}
三、优化代码结构
package cn.daitools;

import com.sun.mail.util.MailSSLSocketFactory;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;


public class demo03 {
    public static void main(String[] args) throws Exception {

        
        String fromAddress = "1500015797@qq.com";   
        String token = "tujcblipdrbngaef";      
        String toAddress = "78278738@qq.com";   
        String mailHost = "smtp.qq.com";        


        
        Properties prop = new Properties();
        prop.setProperty("mail.host", "smtp.qq.com");  //设置QQ邮件服务器
        prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议
        prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码

        
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        prop.put("mail.smtp.ssl.enable", "true");
        prop.put("mail.smtp.ssl.socketFactory", sf);

        
        Session session = Session.getDefaultInstance(prop, new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                //发件人邮件用户名、授权码
                return new PasswordAuthentication(fromAddress, token);
            }
        });

        //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
        session.setDebug(true);

        
        Transport ts = session.getTransport();
        ts.connect(mailHost,fromAddress,toAddress);

        
        MimeMessage msg = new MimeMessage(session);

        
        msg.setFrom(new InternetAddress(fromAddress,"呆呆","utf-8"));

        
        msg.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(toAddress));

        
        msg.setSubject("简单邮件测试");

        
        msg.setContent("大家好,我是呆呆","text/html;charset=utf-8");

        
        ts.sendMessage(msg,msg.getAllRecipients());

        
        ts.close();

    }
}
四、发送一封图文邮件
package cn.daitools;

import com.sun.mail.util.MailSSLSocketFactory;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.io.FileReader;
import java.util.Properties;

//发送文本+图片
public class demo04 {
public static void main(String[] args) throws Exception {

    
    String fromAddress = "1500015797@qq.com";   
    String token = "tujcblipdrbngaef";      
    String toAddress = "78278738@qq.com";   
    String mailHost = "smtp.qq.com";        


    
    Properties prop = new Properties();
    prop.setProperty("mail.host", "smtp.qq.com");  //设置QQ邮件服务器
    prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议
    prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码

    
    MailSSLSocketFactory sf = new MailSSLSocketFactory();
    sf.setTrustAllHosts(true);
    prop.put("mail.smtp.ssl.enable", "true");
    prop.put("mail.smtp.ssl.socketFactory", sf);

    
    Session session = Session.getDefaultInstance(prop, new Authenticator() {
        public PasswordAuthentication getPasswordAuthentication() {
            //发件人邮件用户名、授权码
            return new PasswordAuthentication(fromAddress, token);
        }
    });

    //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
    session.setDebug(true);

    
    Transport ts = session.getTransport();
    ts.connect(mailHost,fromAddress,toAddress);

    
    MimeMessage msg = new MimeMessage(session);

    
    msg.setFrom(new InternetAddress(fromAddress,"daidai","utf-8"));

    
    msg.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(toAddress));

    
    msg.setSubject("简单邮件测试");

    
    
    
    final MimeBodyPart body1 = new MimeBodyPart();
    body1.setDataHandler(new DataHandler(new FileDataSource("img/1.png")));
    body1.setContentID("1.png");

    
    final MimeBodyPart body2 = new MimeBodyPart();
    body2.setContent("","text/html;charset=utf-8");

    
    final MimeMultipart context = new MimeMultipart();
    context.addBodyPart(body2);
    context.addBodyPart(body1);
    context.setSubType("related");

    
    msg.setContent(context);
    msg.saveChanges();
    

    
    ts.sendMessage(msg,msg.getAllRecipients());

    
    ts.close();

}
}
五、发送一封带有附件的邮件

注意:由于一些协议规则,附件的大小被限制在20m以内,所以20m以上的附件就会报异常

package cn.daitools;

import com.sun.mail.util.MailSSLSocketFactory;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.*;
import java.util.Properties;

//发送附件
public class demo05 {
public static void main(String[] args) throws Exception {

    
    String fromAddress = "1500015797@qq.com";   
    String token = "tujcblipdrbngaef";      
    String toAddress = "78278738@qq.com";   
    String mailHost = "smtp.qq.com";        


    
    Properties prop = new Properties();
    prop.setProperty("mail.host", "smtp.qq.com");  //设置QQ邮件服务器
    prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议
    prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码

    
    MailSSLSocketFactory sf = new MailSSLSocketFactory();
    sf.setTrustAllHosts(true);
    prop.put("mail.smtp.ssl.enable", "true");
    prop.put("mail.smtp.ssl.socketFactory", sf);

    
    Session session = Session.getDefaultInstance(prop, new Authenticator() {
        public PasswordAuthentication getPasswordAuthentication() {
            //发件人邮件用户名、授权码
            return new PasswordAuthentication(fromAddress, token);
        }
    });

    //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
    session.setDebug(true);

    
    Transport ts = session.getTransport();
    ts.connect(mailHost,fromAddress,toAddress);

    
    MimeMessage msg = new MimeMessage(session);

    
    msg.setFrom(new InternetAddress(fromAddress,"daidai","utf-8"));

    
    msg.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(toAddress));

    
    msg.setSubject("简单邮件测试");

    
    
    
    final MimeBodyPart body1 = new MimeBodyPart();
    body1.setDataHandler(new DataHandler(new FileDataSource("img/1.png")));
    body1.setContentID("1.png");

    
    final MimeBodyPart body2 = new MimeBodyPart();
    body2.setContent("","text/html;charset=utf-8");

    
    final MimeMultipart context = new MimeMultipart();
    context.addBodyPart(body2);
    context.addBodyPart(body1);
    context.setSubType("related");

    
    final MimeBodyPart body3 = new MimeBodyPart();
    body3.setContent(context);

    
    final MimeBodyPart body4 = new MimeBodyPart();
    body4.setDataHandler(new DataHandler(new FileDataSource("D:\desktop\待整理\抖音下载助手V1.0.zip")));
    body4.setFileName(MimeUtility.encodeText("抖音下载助手V1.0.zip"));    //使用工具包进行文件名转码,防止中文乱码

    
    final MimeMultipart mail = new MimeMultipart();
    mail.addBodyPart(body3);
    mail.addBodyPart(body4);
    mail.setSubType("mixed");


    
    msg.setContent(mail);
    msg.saveChanges();
    

    
    ts.sendMessage(msg,msg.getAllRecipients());

    
    ts.close();

}
}

今天的记录到此结束,晚安!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/358353.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号