如何使用Java Mail发邮件(包括单发和群发),含演示代码下载

这篇具有很好参考价值的文章主要介绍了如何使用Java Mail发邮件(包括单发和群发),含演示代码下载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

在我们做业务系统开发时时,经常会用到 邮件发送的场景,如 通过邮件通知给注册用户有关注册码的内容,或者 管理的某些设备有告警了,需要邮件通知相关维护人员及时处理相关设备,还有 使用的会员服务已经到期了,用邮件通知给用户等等。 在java 世界里如何发邮件,有很多种方法,下面将围绕 java mail 来做功能的实现。

什么是JavaMail

JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。

前置条件

要想通过 java 代码发送邮件,首先需要开通你邮箱的邮局服务,下面以QQ 邮箱为例,说一下开通步骤。

申请开通邮局服务(QQ为例)

  1. 进入QQ邮箱–》设置–》POP3/IMAP --》开启服务
    java群发邮件,java,java,开发语言

  2. 使用手机,发送开通短信,开启服务
    java群发邮件,java,java,开发语言

  3. 开通成功,记下授权码
    java群发邮件,java,java,开发语言
    获得授权码,把它拷贝出来,后面的JAVA代码需要用到这个授权码。

Java工程

下载依赖组件

我们将使用 JavaMail 进行邮件方面的处理, Maven的依赖配置如下:

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

核心代码

public class MailUtil {
	private static final Logger LOG = LoggerFactory.getLogger(MailUtil.class); 
	
	/**
	 * 发送邮件 
	 * @param user
	 *            发件人邮箱
	 * @param password
	 *            邮箱授权码
	 * @param host
	 *            host
	 * @param from
	 *            发件人
	 * @param toArray
	 *            接收者邮箱数组
	 * @param subject
	 *            邮件主题
	 * @param content
	 *            邮件内容
	 * @return CommonProcResult.code = 0 表示成功;<br/>
	 * 		      CommonProcResult.code != 0 表示失败,失败原因可以看 CommonProcResult.desc
	 */
	public CommonProcResult sendMail(String user, String password, String host,
			String from, String[] toArray, String subject, String content) {
		
		CommonProcResult ret = CommonProcResultFactroy.makeResultForInnerError("未实现.");
		
		try {
			if (null !=  toArray  && toArray.length > 0) {
				Properties props = System.getProperties();

				// 选择服务类型
				props.put("mail.smtp.host", host);
				// 设置服务器验证
				props.put("mail.smtp.auth", "true");
				// 设置传输协议
				props.put("mail.transport.protocol", "smtp");

				MailAuthenticator auth = new MailAuthenticator(user, password);

				Session session = Session.getInstance(props, auth);
				//session.setDebug(true);
				session.setDebug(false);

				MimeMessage message = new MimeMessage(session);
				message.setFrom(new InternetAddress(from));
				
				//邮件接收方
				int len= toArray.length;  
			    InternetAddress address[]=new InternetAddress[len];  
				for (int i = 0; i < toArray.length; i++) {
					address[i]=new InternetAddress(toArray[i]);
				}
				message.addRecipients(Message.RecipientType.TO, address);				
				
				// 主题
				message.setSubject(subject);
				
				// 正文
				MimeBodyPart mbp1 = new MimeBodyPart();
				mbp1.setContent(content, "text/html;charset=utf-8");
				// 整个邮件:正文+附件
				Multipart mp = new MimeMultipart();
				mp.addBodyPart(mbp1);
				message.setContent(mp);
				message.setSentDate(new Date());
				message.saveChanges();

				// Transport trans = session.getTransport("smtp");
				Transport.send(message);

				//System.out.println("send mail ok:"  + message.toString());

				ret = CommonProcResultFactroy.makeResultForOk("");

			} else {
				ret = CommonProcResultFactroy.makeResultForInvalidParamValue(" toArray");
			}

		} catch (Exception e) {
			LOG.error("An exception has been occured when send email. Exception=" + e.getMessage());
			ret = CommonProcResultFactroy.makeResultForInnerException(e.getMessage());
			e.printStackTrace();
		}
		
		return ret;
	}

	//测试代码
	public static void main(String[] args) {
		MailUtil operation = new MailUtil();
		String user = "发送人的邮箱";	//如xxxxxxx@qq.com
		String password = "邮箱的授权密码";
		String host = "邮箱主机";//如smtp.qq.com
		String from = "发件人的邮箱";	//如xxxxxxx@qq.com

		String to = "收件人的邮箱";  //支持群发,可以写多个收件邮箱,如  bbbbbb@yeah.net;ccccccc@qq.com
		String subject = "java 发送邮件测试";
		//邮箱内容
		StringBuffer sb = new StringBuffer();
		String yzm = Long.toString(System.currentTimeMillis());

		sb.append("<!DOCTYPE>"
						+ "<div bgcolor='#f1fcfa'   style='border:1px solid #d9f4ee; font-size:14px; line-height:22px; color:#005aa0;padding-left:1px;padding-top:5px;   padding-bottom:5px;'><span style='font-weight:bold;'>温馨提示:</span>"
						+ "<div style='width:950px;font-family:arial;'>欢迎xx系统,您的注册码为:<br/><h2 style='color:green'>"
						+ yzm
						+ "</h2><br/>本邮件由系统自动发出,请勿回复。<br/>感谢您的使用。<br/>xx网络科技公司</div>"
						+ "</div>");
		try {
			String[] toArray = to.split(";");
			
			CommonProcResult ret = operation.sendMail(user, password, host, from, toArray, subject, sb.toString());
			
			System.out.println("ret code=" + ret.getCode() + ", ret desc=" +   ret.getDesc());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

发送结果

java群发邮件,java,java,开发语言
登录收件人的邮箱,里可看到 测试代码发出的邮件收到了。

总结

使用JavaMail可以很方便的在Java客户端实现 发邮件的功能,另外很好的实现了JavaMail API的框架还有James、Spring Mail。

需要完整演示代码的可点击下方。
完整程序代码下载
注意:程序代码需要代入你的邮箱信息才能正确工作。文章来源地址https://www.toymoban.com/news/detail-568588.html

到了这里,关于如何使用Java Mail发邮件(包括单发和群发),含演示代码下载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java使用ews-java-api发送邮件(包括附件和内联图片处理)

    不废话,开整 注意:普通邮件详情和带内联图片邮件详情选择其一。 有疑问欢迎留言。

    2024年02月11日
    浏览(70)
  • 使用群晖NAS Mail Server搭建个性化邮件系统

    一个顶级域名 可以获取公网IP的宽带 路由使用DDNS功能,或使用群晖自带DDNS,解析顶级域名 可以做“端口映射”的路由器 step1:安装套件 登录群晖NAS,打开[套件中心],搜索“mail”,安装如下两个套件:“MailPlus server”、“MailPlus”; step2:安装MailPlus server服务端 打开“M

    2024年02月16日
    浏览(54)
  • 外贸群发邮件最好的软件?群发软件哪个好?

    外贸开发信群发软件推荐?做外贸用什么邮件群发软件? 在外贸业务中,与潜在客户建立联系并保持沟通是至关重要的。那么,如何快速有效地发送邮件给大量的潜在客户呢?这就涉及到了外贸群发邮件。蜂邮EDM来探讨一下,哪些软件最适合外贸群发邮件。 外贸群发邮件软

    2024年02月01日
    浏览(49)
  • outlook邮件群发单显技巧?群发怎么单显?

    outlook邮件群发单显如何设置? QQ邮箱怎么群发单显? 在群发邮件时,如何让每个收件人只看到自己的名字,而不是其他人的名字,这就涉及到所谓的“单显”技巧。下面蜂邮EDM就为大家揭秘Outlook邮件群发单显的奥秘。 outlook邮件群发单显: 默认行为 Outlook在群发邮件时,为

    2024年01月23日
    浏览(50)
  • Mail 邮件服务

    ~ Postfix ~   sdskill.com 的邮件发送服务器 ~~   支持smtps(465)协议连接,使用Rserver颁发的证书,证书路径/CA/cacert.pem ~    创建邮箱账户“user1~user99”(共99个用户),密码为Chinaskill20!; ~    Dovecot ~    sdskill.com 的邮件接收服务器; ~    支持imaps(993)协议连接,使用Rserver颁发

    2023年04月26日
    浏览(44)
  • 使用SpringBoot + JavaMailSender 发送邮件报错 Mail server connection failed;Could not connect to SMTP host

    在 application.yml 中将邮件配置为 SSL 连接 yml 如果你使用的是 properties 文件,应该修改为: properties 推荐一个 yml、properties 文件在线转换的网站  在线yaml转properties-在线properties转yaml-ToYaml.com   来源:https://www.cnblogs.com/songjilong/p/12577010.html

    2024年02月04日
    浏览(56)
  • Python Flask-Mail实现邮件发送

    目录 前言 准备工作 配置Flask应用 初始化Flask-Mail 发送邮件 总结 Python Flask-Mail是一个非常方便的库,用于实现在Flask应用中发送邮件。本文将介绍Flask-Mail的基本用法和实例代码,帮助读者快速上手使用。 Flask-Mail是基于Python的Flask框架的一个扩展,它提供了一种简单而强大的方

    2024年04月12日
    浏览(41)
  • outlook微软自动给对方群发邮件消息带弹窗!

    下载地址:outlook微软自动给对方群发邮件消息带弹窗!

    2024年02月02日
    浏览(45)
  • .Net FrameWork 框架下使用System.Net.Mail封装类 发送邮件失败:服务器响应:5.7.1 Client was not authenticated 解决方案

    偶然兴起,想做一个后台监控PLC状态的服务。功能如下:监控到PLC状态值异常后触发邮件推送,状态改变后只推送一次。开始使用的是.net6.0开发框架开发,一切都很顺利,邮件也能正常推送。但由于现场工控机系统不是WIN10 20H2的最新版本,导致系统未安装.Net6.0 Runtime。而我

    2024年02月03日
    浏览(46)
  • 群晖免费邮件服务器Mail Server搭建心德

    2023年1月2日 Daniel.y 群晖Synology Mail Server可以用于搭建免费的企业邮箱,不限用户数也不限邮箱容量。常规的安装流程在群晖的官方网站中有介绍,在此就不再赘述。这里主要介绍一些注意事项和疑难问题解决经验。 搭建自己的邮箱服务器面临最大的挑战是如何防止收到垃圾邮

    2024年02月07日
    浏览(75)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包