欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現(xiàn)郵件發(fā)送功能

 更新時間:2021年08月11日 08:31:57   作者:Marvellous丶  
這篇文章主要為大家詳細介紹了Java實現(xiàn)郵件發(fā)送功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

Java實現(xiàn)郵件發(fā)送的具體代碼,供大家參考,具體內(nèi)容如下

一、郵件服務(wù)器與傳輸協(xié)議

要在網(wǎng)絡(luò)上實現(xiàn)郵件功能,必須要有專門的郵件服務(wù)器。這些郵件服務(wù)器類似于現(xiàn)實生活中的郵局,它主要負責接收用戶投遞過來的郵件,并把郵件投遞到郵件接收者的電子郵箱中。

SMTP服務(wù)器地址:一般是 smtp.xxx.com,比如163郵箱是smtp.163.com,qq郵箱是smtp.qq.com。

SMTP協(xié)議

通常把處理用戶smtp請求(郵件發(fā)送請求)的服務(wù)器稱之為SMTP服務(wù)器(郵件發(fā)送服務(wù)器)。

POP3協(xié)議

通常把處理用戶pop3請求(郵件接收請求)的服務(wù)器稱之為POP3服務(wù)器(郵件接收服務(wù)器)。

二、Java發(fā)送郵件

使用到的jar包:

  • mail.jar
  • activation.jar

QQ郵箱需獲取相應(yīng)的權(quán)限:

QQ郵箱–>郵箱設(shè)置–>賬戶–>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(wù) 開啟POP3/SMTP服務(wù),然后獲取16位授權(quán)碼(注意不要將授權(quán)碼泄露,一個賬戶可以擁有多個授權(quán)碼)

Java實現(xiàn)純文本郵件發(fā)送

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 {
        //創(chuàng)建一個配置文件并保存
        Properties properties = new Properties();

        properties.setProperty("mail.host","smtp.qq.com");

        properties.setProperty("mail.transport.protocol","smtp");

        properties.setProperty("mail.smtp.auth","true");


        //QQ存在一個特性設(shè)置SSL加密
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        properties.put("mail.smtp.ssl.enable", "true");
        properties.put("mail.smtp.ssl.socketFactory", sf);

        //創(chuàng)建一個session對象
        Session session = Session.getDefaultInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("619046217@qq.com","16位授權(quán)碼");
            }
        });

        //開啟debug模式
        session.setDebug(true);

        //獲取連接對象
        Transport transport = session.getTransport();

        //連接服務(wù)器
        transport.connect("smtp.qq.com","619046217@qq.com","16位授權(quán)碼");

        //創(chuàng)建郵件對象
        MimeMessage mimeMessage = new MimeMessage(session);

        //郵件發(fā)送人
        mimeMessage.setFrom(new InternetAddress("619046217@qq.com"));

        //郵件接收人
        mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("875203654@qq.com"));

        //郵件標題
        mimeMessage.setSubject("Hello Mail");

        //郵件內(nèi)容
        mimeMessage.setContent("我的想法是把代碼放進一個循環(huán)里","text/html;charset=UTF-8");

        //發(fā)送郵件
        transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());

        //關(guān)閉連接
        transport.close();
    }
}

Java實現(xiàn)文本圖片附件復雜的郵件發(fā)送

MIME(多用途互聯(lián)網(wǎng)郵件擴展類型)

MimeBodyPart類

javax.mail.internet.MimeBodyPart類 表示的是一個MIME消息,它和MimeMessage類一樣都是從Part接口繼承過來。

MimeMultipart類

javax.mail.internet.MimeMultipart是抽象類 Multipart的實現(xiàn)子類,它用來組合多個MIME消息。一個MimeMultipart對象可以包含多個代表MIME消息的MimeBodyPart對象

package org.westos.email;

import com.sun.mail.util.MailSSLSocketFactory;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.security.GeneralSecurityException;
import java.util.Properties;

public class SendComplexEmail {
    public static void main(String[] args) throws GeneralSecurityException, MessagingException {
        Properties prop = new Properties();
        prop.setProperty("mail.host", "smtp.qq.com");  設(shè)置QQ郵件服務(wù)器
        prop.setProperty("mail.transport.protocol", "smtp"); // 郵件發(fā)送協(xié)議
        prop.setProperty("mail.smtp.auth", "true"); // 需要驗證用戶名密碼

        // QQ郵箱設(shè)置SSL加密
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        prop.put("mail.smtp.ssl.enable", "true");
        prop.put("mail.smtp.ssl.socketFactory", sf);

        //1、創(chuàng)建定義整個應(yīng)用程序所需的環(huán)境信息的 Session 對象
        Session session = Session.getDefaultInstance(prop, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                //傳入發(fā)件人的姓名和授權(quán)碼
                return new PasswordAuthentication("619046217@qq.com","16位授權(quán)碼");
            }
        });

        //2、通過session獲取transport對象
        Transport transport = session.getTransport();

        //3、通過transport對象郵箱用戶名和授權(quán)碼連接郵箱服務(wù)器
        transport.connect("smtp.qq.com","619046217@qq.com","16位授權(quán)碼");

        //4、創(chuàng)建郵件,傳入session對象
        MimeMessage mimeMessage = complexEmail(session);

        //5、發(fā)送郵件
        transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());

        //6、關(guān)閉連接
        transport.close();


    }

    public static MimeMessage complexEmail(Session session) throws MessagingException {
        //消息的固定信息
        MimeMessage mimeMessage = new MimeMessage(session);

        //發(fā)件人
        mimeMessage.setFrom(new InternetAddress("619046217@qq.com"));
        //收件人
        mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("619046217@qq.com"));
        //郵件標題
        mimeMessage.setSubject("帶圖片和附件的郵件");

        //郵件內(nèi)容
        //準備圖片數(shù)據(jù)
        MimeBodyPart image = new MimeBodyPart();
        DataHandler handler = new DataHandler(new FileDataSource("E:\\IdeaProjects\\WebEmail\\resources\\測試圖片.png"));
        image.setDataHandler(handler);
        image.setContentID("test.png"); //設(shè)置圖片id

        //準備文本
        MimeBodyPart text = new MimeBodyPart();
        text.setContent("這是一段文本<img src='cid:test.png'>","text/html;charset=utf-8");

        //附件
        MimeBodyPart appendix = new MimeBodyPart();
        appendix.setDataHandler(new DataHandler(new FileDataSource("E:\\IdeaProjects\\WebEmail\\resources\\測試文件.txt")));
        appendix.setFileName("test.txt");

        //拼裝郵件正文
        MimeMultipart mimeMultipart = new MimeMultipart();
        mimeMultipart.addBodyPart(image);
        mimeMultipart.addBodyPart(text);
        mimeMultipart.setSubType("related");//文本和圖片內(nèi)嵌成功

        //將拼裝好的正文內(nèi)容設(shè)置為主體
        MimeBodyPart contentText = new MimeBodyPart();
        contentText.setContent(mimeMultipart);

        //拼接附件
        MimeMultipart allFile = new MimeMultipart();
        allFile.addBodyPart(appendix);//附件
        allFile.addBodyPart(contentText);//正文
        allFile.setSubType("mixed"); //正文和附件都存在郵件中,所有類型設(shè)置為mixed


        //放到Message消息中
        mimeMessage.setContent(allFile);
        mimeMessage.saveChanges();//保存修改

        return mimeMessage;
    }
}

JavaWeb發(fā)送郵件(網(wǎng)站注冊成功發(fā)送提示郵件)

1.User

package org.westos.mail;

public class User {
    private String name;
    private String password;
    private String mail;

    public User() {
    }

    public User(String name, String password, String mail) {
        this.name = name;
        this.password = password;
        this.mail = mail;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getMail() {
        return mail;
    }

    public void setMail(String mail) {
        this.mail = mail;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", password='" + password + '\'' +
                ", mail='" + mail + '\'' +
                '}';
    }
}

2.Servlet

package org.westos.mail;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class Servlet extends javax.servlet.http.HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) {
        //處理前端請求
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String email = request.getParameter("email");

        //將信息封裝進user對象
        User user = new User(username, password, email);

        SendMail sendMail = new SendMail(user);
        sendMail.start(); //開啟線程

        request.setAttribute("msg","發(fā)送成功");
        try {
            request.getRequestDispatcher("msg.jsp").forward(request,response);
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


    }
}

3.SengMail

package org.westos.mail;

import com.sun.mail.util.MailSSLSocketFactory;

import javax.mail.*;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.security.GeneralSecurityException;
import java.security.PublicKey;
import java.util.Properties;

public class SendMail extends Thread {
    //發(fā)件人信息
    private String From = "619046217@qq.com";
    //發(fā)件人郵箱
    private String recipient = "619046217@qq.com";
    //郵箱密碼
    private String password = "16位授權(quán)碼";
    //郵件發(fā)送的服務(wù)器
    private String host = "smtp.qq.com";

    //收件人信息
    private User user;
    public SendMail(User user){
        this.user = user;
    }

    @Override
    public void run() {
        try {
            Properties properties = new Properties();

            properties.setProperty("mail.host","smtp.qq.com");

            properties.setProperty("mail.transport.protocol","smtp");

            properties.setProperty("mail.smtp.auth","true");

            //QQ存在一個特性設(shè)置SSL加密
            MailSSLSocketFactory sf = null;
            try {
                sf = new MailSSLSocketFactory();
            } catch (GeneralSecurityException e) {
                e.printStackTrace();
            }
            sf.setTrustAllHosts(true);
            properties.put("mail.smtp.ssl.enable", "true");
            properties.put("mail.smtp.ssl.socketFactory", sf);

            //創(chuàng)建一個session對象
            Session session = Session.getDefaultInstance(properties, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(recipient,password);
                }
            });

            //開啟debug模式
            session.setDebug(true);

            //獲取連接對象
            Transport transport = null;
            try {
                transport = session.getTransport();
            } catch (NoSuchProviderException e) {
                e.printStackTrace();
            }

            //連接服務(wù)器
            transport.connect(host,From,password);


            //創(chuàng)建一個郵件發(fā)送對象
            MimeMessage mimeMessage = new MimeMessage(session);
            //郵件發(fā)送人
            mimeMessage.setFrom(new InternetAddress(recipient));

            //郵件接收人
            mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(user.getMail()));

            //郵件標題
            mimeMessage.setSubject("網(wǎng)站注冊成功");

            //郵件內(nèi)容
            mimeMessage.setContent("網(wǎng)站注冊成功,密碼為"+user.getPassword()+",請妥善保管密碼","text/html;charset=UTF-8");

            //發(fā)送郵件
            transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());

            transport.close();

        }catch (Exception e){
            e.printStackTrace();
        }

    }

}

4.register.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注冊頁面</title>
</head>
<body>

<form action="${pageContext.request.contextPath}/a.do" method="post">
    <p>用戶名:<input type="text" name="username" required></p>
    <p>密碼:<input type="password" name="password" required></p>
    <p>郵箱:<input type="email" name="email" required></p>
    <p><input type="submit" value="提交"></p>
</form>
</body>
</html>

5.msg.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${msg}
</body>
</html>

6.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>Servlet</servlet-name>
        <servlet-class>org.westos.mail.Servlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Servlet</servlet-name>
        <url-pattern>/a.do</url-pattern>
    </servlet-mapping>
</web-app>

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論