java发邮件实例教程 - 寒江孤影

java发邮件实例教程

作者: 寒江孤影

全网最全的网络资源分享网站

手机扫码查看

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

广告位

电子邮件

要在网络上实现邮件功能,必须要有专门的邮件服务器。这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。

SMTP服务器地址:一般是 smtp.xxx.com,比如163邮箱是smtp.163.com,qq邮箱是smtp.qq.com。电子邮箱(E-Mail地址)的获得需要在邮件服务器上进行申请。比如我们要使用QQ邮箱,就需要开通邮箱功能;

QQ截图20201129234734.png

服务全部开启,授权码就是密码

QQ截图20201129234812.png

实例测试

QQ截图20201130003851.png

首先需要下载一个java架包 com.springsource.javax.mail-1.4.1.jar

项目结构如下:

QQ截图20201130000003.png

配置文件email.properties

#邮箱账号:
user = xxxxxx@qq.com
#邮箱密码(QQ邮箱为授权码):
password = xxxxxx
#SMTP地址:
host = smtp.qq.com
#发件人:
from = xxxxxx@qq.com

实现类Email.java

package util;

import java.io.IOException;
import java.util.Properties;

public class Email {
	/**
	 * 发送邮件
	 * @param to 接收者邮箱
	 * @param subject 消息类型 <---->订单|留言
	 * @param contents 消息类容
	 * @param users 用户名称
	 * @param uid 订单编号
	 * @param check 订单状态
	 * @throws IOException 
	 */
	public static void sendEmail(String to,String subject,String contents,String users,String uid,String check) throws IOException {
		Properties p = new Properties();
		p.load(Email.class.getResourceAsStream("../config/email.properties"));
		
		String user = p.getProperty("user");
		String password = p.getProperty("password");
		String host = p.getProperty("host");
		String from = p.getProperty("from");
		
		MailOperation operation = new MailOperation();
		// 邮箱内容
		StringBuffer sb = new StringBuffer();
		sb.append("<div id=\"mailContentContainer\" class=\"qmbox qm_con_body_content qqmail_webmail_only\" style=\"\">\r\n" + 
				"			<style type=\"text/css\">\r\n" + 
				"				.qmbox .wrap span {\r\n" + 
				"					display: inline-block;\r\n" + 
				"				}\r\n" + 
				"				\r\n" + 
				"				.qmbox .w260 {\r\n" + 
				"					width: 260px;\r\n" + 
				"				}\r\n" + 
				"				\r\n" + 
				"				.qmbox .w20 {\r\n" + 
				"					width: 0px;\r\n" + 
				"				}\r\n" + 
				"				\r\n" + 
				"				.qmbox a:link {\r\n" + 
				"					text-decoration: none;\r\n" + 
				"				}\r\n" + 
				"				\r\n" + 
				"				.qmbox a:visited {\r\n" + 
				"					text-decoration: none;\r\n" + 
				"				}\r\n" + 
				"				\r\n" + 
				"				.qmbox a:hover {\r\n" + 
				"					text-decoration: none;\r\n" + 
				"				}\r\n" + 
				"				\r\n" + 
				"				.qmbox a:active {\r\n" + 
				"					text-decoration: none;\r\n" + 
				"				}\r\n" + 
				"				\r\n" + 
				"				.qmbox .wauto {\r\n" + 
				"					width: auto;\r\n" + 
				"				}\r\n" + 
				"			</style>\r\n" + 
				"			<div style=\"border-radius: 10px 10px 10px 10px;font-size:13px; color: #555555;width: 540px;margin:50px auto;border:1px solid #eee;max-width:100%;background: #ffffff repeating-linear-gradient(-45deg,#fff,#fff 1.125rem,transparent 1.125rem,transparent 2.25rem);box-shadow: 0 1px 5px rgba(0, 0, 0, 0.15);\">\r\n" + 
				"				<div style=\"width:100%;background:#49BDAD;color:#ffffff;border-radius: 10px 10px 0 0;background-image: -moz-linear-gradient(0deg, rgb(67, 198, 184), rgb(255, 209, 244));background-image: -webkit-linear-gradient(0deg, rgb(67, 198, 184), rgb(255, 209, 244));height: 66px;\">\r\n" + 
				"					<p style=\"font-size:15px;word-break:break-all;padding: 23px 32px;margin:0;border-radius: 10px 10px 0 0;\">您的Mini商城有一个\r\n" + 
				"						<a style=\"text-decoration:none;color: #ffffff;\" href=\"https://a14.cn/\" rel=\"noopener\" target=\"_blank\"> "+subject+" </a>消息:\r\n" + 
				"					</p>\r\n" + 
				"				</div>\r\n" + 
				"				<div style=\"margin:40px auto;width:90%\">\r\n" + 
				"					<p>Mini商城"+subject+"详情:</p>\r\n" + 
				"					<p style=\"background: #fafafa repeating-linear-gradient(-45deg,#fff,#fff 1.125rem,transparent 1.125rem,transparent 2.25rem);box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);margin:20px 0px;padding:15px;border-radius:5px;font-size:14px;color:#555555;\">\r\n" + 
				"						"+contents+"\r\n" + 
				"					</p>\r\n" + 
				"\r\n" + 
				"					<p class=\"wrap\" style=\"text-decoration:none\"><span class=\"w260\">下单用户:"+users+"</span><span class=\"w20\"> </span><span class=\"wauto\">邮件地址:"+to+"</span></p>\r\n" + 
				"					<p class=\"wrap\" style=\"text-decoration:none\"><span class=\"w260\">订单编号:"+uid+"</span><span class=\"w20\"> </span><span class=\"wauto\">下单状态:"+check+"</span></p>\r\n" + 
				"\r\n" + 
				"					<div class=\"btnn\">\r\n" + 
				"						<a style=\"text-decoration:none; color:#12addb\" href=\"https://a14.cn/\" target=\"_blank\" rel=\"noopener\">[查看订单]</a>&nbsp;|\r\n" + 
				"						<a style=\"text-decoration:none; color:#12addb\" href=\"https://a14.cn/\" target=\"_blank\" rel=\"noopener\">[管理评论]</a>&nbsp;|\r\n" + 
				"						<a style=\"text-decoration:none; color:#12addb\" href=\"https://a14.cn/rss.php\" target=\"_blank\" rel=\"noopener\">[订阅本站]</a>\r\n" + 
				"					</div>\r\n" + 
				"				</div>\r\n" + 
				"			</div>\r\n" + 
				"			<style type=\"text/css\">\r\n" + 
				"				.qmbox style,\r\n" + 
				"				.qmbox script,\r\n" + 
				"				.qmbox head,\r\n" + 
				"				.qmbox link,\r\n" + 
				"				.qmbox meta {\r\n" + 
				"					display: none !important;\r\n" + 
				"				}\r\n" + 
				"			</style>\r\n" + 
				"		</div>");
		try {
			String res = operation.sendMail(user, password, host, from, to, subject, sb.toString());
			System.out.println(res);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

邮件发送操作类MailOperation.java

package util;

import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Multipart;
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;
/**
 * 邮件发送操作类
 * @author 36D小可爱
 *
 */
public class MailOperation {

    /**
     * 发送邮件
     * @param user 发件人邮箱
     * @param password 授权码(注意不是邮箱登录密码)
     * @param host 
     * @param from 发件人
     * @param to 接收者邮箱
     * @param subject 邮件主题
     * @param content 邮件内容
     * @return success 发送成功 failure 发送失败
     * @throws Exception
     */
    public String sendMail(String user, String password, String host,
            String from, String to, String subject, String content)
            throws Exception {
        if (to != null){
            Properties props = System.getProperties();
            props.put("mail.smtp.host", host);
            props.put("mail.smtp.auth", "true");
            MailAuthenticator auth = new MailAuthenticator();
            MailAuthenticator.USERNAME = user;
            MailAuthenticator.PASSWORD = password;
            Session session = Session.getInstance(props, auth);
            session.setDebug(true);
            try {
                MimeMessage message = new MimeMessage(session);
                message.setFrom(new InternetAddress(from));
                if (!to.trim().equals(""))
                    message.addRecipient(Message.RecipientType.TO,
                            new InternetAddress(to.trim()));
                message.setSubject(subject);
                MimeBodyPart mbp1 = new MimeBodyPart(); // 正文
                mbp1.setContent(content, "text/html;charset=utf-8");
                Multipart mp = new MimeMultipart(); // 整个邮件:正文+附件
                mp.addBodyPart(mbp1);
                // mp.addBodyPart(mbp2);
                message.setContent(mp);
                message.setSentDate(new Date());
                message.saveChanges();
                Transport trans = session.getTransport("smtp");
                trans.send(message);
                System.out.println(message.toString());
            } catch (Exception e){
                e.printStackTrace();
                return "failure";
            }
            return "success";
        }else{            
            return "failure";
        }
    }

}

发件人账号密码MailAuthenticator.java

package util;

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

/**
 * 发件人账号密码
 * @author 36D小可爱
 *
 */
public class MailAuthenticator extends Authenticator {

	public static String USERNAME = "";
	public static String PASSWORD = "";

	public MailAuthenticator() {
	}

	protected PasswordAuthentication getPasswordAuthentication() {
		return new PasswordAuthentication(USERNAME, PASSWORD);
	}

}

测试类

调用Email中的方法共有六个参数

package test;
import java.io.IOException;

import util.Email;

public class Test {
	public static void main(String[] args) throws IOException {
		/**
		 * 发送邮件
		 * @param to 接收者邮箱
		 * @param subject 消息类型  订单|留言
		 * @param contents 消息类容
		 * @param users 用户名称
		 * @param uid 订单编号
		 * @param check 订单状态
		 */
		String to="153128151@qq.com";
		String subject="订单";
		String contents="订单编号:20192171001|商品名称:测试商品|商品规格:颜色分类,红色圣诞麋鹿角 |商品价格:18.8元|商品数量:5个 ";
		String users="管理员";
		String uid="20192171001";
		String check="已付款";
		Email.sendEmail(to, subject, contents, users, uid, check);
	}
}
该附件已被管理员隐藏 您需要 回复 后并刷新才可以下载
分享到:
打赏
-版权声明-

作者: 寒江孤影, 转载或复制请以 超链接形式 并注明出处 寒江孤影
原文地址: 《java发邮件实例教程》 发布于2020-11-29

阅读时间:   发布于:2020-11-29
文章标题:《java发邮件实例教程》
本文链接:https://a14.cn:443/post-35.html
本文编辑: 寒江孤影,转载请注明超链接和出处寒江孤影
收录状态:[百度已收录][360未收录][搜狗已收录]

评论一下

未显示?请点击刷新
切换注册

登录

忘记密码?

您也可以使用第三方帐号快捷登录

切换登录

注册

java发邮件实例教程

长按图片转发给朋友

觉得文章有用就打赏一下文章作者

花呗扫一扫打赏

微信扫一扫打赏

企鹅扫一扫打赏

召唤伊斯特瓦尔