java邮件发送协议有哪些?如何实现纯文本发送邮件?

BSO 2020-09-01 09:51:03 java常见问答 3615

随着时代的不断向前发展,人们对于新技术新应用开始投入更多的精力与时间。关于java所能应用的范围,在不断地扩大。今天主要为大家介绍java中邮件发送时的协议有哪几条,以及如何实现纯文本发送邮件。

首先,我们需要知道的是,要在网络上实现邮件功能,必须要有专门的邮件服务器。这些邮件服务器就像是我们在现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。SMTP服务器地址:一般是 smtp.xxx.com,比如163邮箱是smtp.163.com,qq邮箱是smtp.qq.com。

它主要包括两个协议。

第一个:SMTP协议,通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。

第二个:POP3协议,通常把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)。

接下来通过实例代码为大家展示如何在java中实现纯文本邮件的发送。代码如下:

package org.westos.email;
import com.sun.mail.util.MailSSLSocketFactory;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.security.GeneralSecurityException;
import java.util.Properties;
public class SendEamil
{
    public static void main(String[] args) throws MessagingException, GeneralSecurityException
    {
        //创建一个配置文件并保存
        Properties properties = new Properties();
        properties.setProperty("mail.host", "smtp.qq.com");
        properties.setProperty("mail.transport.protocol", "smtp");
        properties.setProperty("mail.smtp.auth", "true");
        //QQ存在一个特性设置SSL加密
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        properties.put("mail.smtp.ssl.enable", "true");
        properties.put("mail.smtp.ssl.socketFactory", sf);
        //创建一个session对象
        Session session = Session.getDefaultInstance(properties, new Authenticator()
        {
            @Override
            protected PasswordAuthentication getPasswordAuthentication()
            {
                return new PasswordAuthentication("619046217@qq.com", "16位授权码");
            }
        });
        //开启debug模式
        session.setDebug(true);
        //获取连接对象
        Transport transport = session.getTransport();
        //连接服务器
        transport.connect("smtp.qq.com", "619046217@qq.com", "16位授权码");
        //创建邮件对象
        MimeMessage mimeMessage = new MimeMessage(session);
        //邮件发送人
        mimeMessage.setFrom(new InternetAddress("619046217@qq.com"));
        //邮件接收人
        mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress("875203654@qq.com"));
        //邮件标题
        mimeMessage.setSubject("Hello Mail");
        //邮件内容
        mimeMessage.setContent("我的想法是把代码放进一个循环里", "text/html;charset=UTF-8");
        //发送邮件
        transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());
        //关闭连接
        transport.close();
    }
}

以上就是java邮件发送协议包括哪几条,以及如何发送纯文本的邮件。想要了解更多java常见问题,敬请关注奇Q工具网。

推荐阅读:

java try catch finally语句详细介绍

java常量类的实现该如何编写?

java常量池是什么?要如何实现?