JavaMail相关代码案例(邮件发送)

这篇具有很好参考价值的文章主要介绍了JavaMail相关代码案例(邮件发送)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

常用邮件服务商的SMTP信息:

    QQ邮A箱:SMTP服务器是smtp.qq.com,端口是465/587

    163邮箱:SMTP服务器是smtp.163.com,端口是465

    Gmail邮箱:SMTP服务器是smtp.gmail.com,端口是465/587

        通过JavaMail API连接到SMTP服务器上,连接SMTP服务器时,需要准备一个Properties对象,填入相关信息。

//SMTP服务器连接信息
		Properties props = new Properties();
		props.put("mail.smtp.host", "smtp.163.com");//SMTP主机名
		
		props.put("mail.smtp.port", "25");//主机端口号
		
        //是否需要认证
		props.put("mail.smtp.auth", "true");
		//启用TLS加密
		props.put("mail.smtp.starttls.enable", "true");
		

        最后获取Session实例时,如果服务器需要认证,还需要传入一个Authenticator对象,并返回指定的用户名和口令。当我们获取到Session实例后,打开调试模式可以看到SMTP通信的详细内容,便于调试。

        String userName = "m18091491321@163.com";
		String password = "********";
		
		//SMTP服务器连接信息
		Properties props = new Properties();
		props.put("mail.smtp.host", "smtp.163.com");//SMTP主机名
		
		props.put("mail.smtp.port", "25");//主机端口号
		
		props.put("mail.smtp.auth", "true");
		//是否需要认证
		props.put("mail.smtp.starttls.enable", "true");
		//启用TLS加密
		
		//创建Session会话
		//参数1:smtp服务器连接参数
		//参数2:账号和密码的授权认证对象
		Session session = Session.getInstance(props, new Authenticator() {

			@Override
			protected PasswordAuthentication getPasswordAuthentication() {
				// TODO 自动生成的方法存根
				return new PasswordAuthentication(userName, password);
			}
			
		});
        session.setDebug(true);
		System.out.println(session);

       发送邮件时,我们需要构造一个Message对象,然后调用Transport.send(Message)即可完成发送:绝大多数邮件服务器要求发送方地址和登录用户名必须一致,否则发送将失败.

        1.创建Session对象

        2.创建邮件对象

        3.发送邮件

        

			//2.创建邮件对象
			MimeMessage message = new MimeMessage(session);
            //设置文件主题
			message.setSubject("测试邮件");
			//设置邮件发送方账号
			message.setFrom(new InternetAddress("m18091491321@163.com"));
            //设置邮件接收方
            //参数1:接受
            //参数2:接收方账号
			message.setRecipient(RecipientType.TO, new   InternetAddress("1417547535@qq.com"));
            //抄送给多个账号
            //参数1:抄送
            //参数2:账户
			message.setRecipients(RecipientType.CC, new InternetAddress[] {new InternetAddress("1417547535@qq.com"),new InternetAddress("1252303367@qq.com")});
			
			//邮件仅包含正文
			message.setText("好好学习天天向上");
            //3.发送
			Transport.send(message);

 如果邮件内容既包含正文,又包含附件。可以构造一个Multipart对象。

			//邮件既包含正文,又包含附件
			//正文
			BodyPart textPart = new MimeBodyPart();
			textPart.setContent("<h3>我希望你</h3>","text/html;charset=utf-8");
			//附件
			BodyPart filePart = new MimeBodyPart();
			filePart.setDataHandler(
					new DataHandler(
							new ByteArrayDataSource(Files.readAllBytes(Paths.get("D:\\niuma\\bao.jpg")) , "application/octet-stream")));
			
			//将正文+附件组装成Multipart对象
			Multipart multipart = new MimeMultipart();
			multipart.addBodyPart(textPart);
			multipart.addBodyPart(filePart);
			//将Multipart对象放入邮件
			message.setContent(multipart);

一个Multipart对象可以添加若干个BodyPart,其中第一个BodyPart是文本,即邮件正文,后面的BodyPart是附件。BodyPart依靠setContent()决定添加的内容,如果添加文本,用setContent("...", "text/plain;charset=utf-8")添加纯文本,或者用setContent("...", "text/html;charset=utf-8")添加HTML文本。如果添加附件,需要设置文件名(不一定和真实文件名一致),并且添加一个DataHandler(),传入文件的MIME类型。二进制文件可以用application/octet-stream,Word文档则是application/msword。
最后,通过setContent()把Multipart添加到Message中,即可发送。

发送内嵌图片的HTML邮件

        如果需要在HTML邮件中内嵌图片,可以选择在邮件中加入<img src="http://example.com/test.jpg">,这样的外部图片链接通常会被邮件客户端过滤,并提示用户显示图片并不安全。只有内嵌的图片才能正常在邮件中显示。所以,这种方式并不推荐。
推荐将内嵌图片作为一个附件嵌入邮件,即邮件本身也是Multipart,但需要做一点额外的处理:

        

			//邮件内容
			BodyPart textpart = new MimeBodyPart();
			StringBuilder sb = new StringBuilder();
			sb.append("<h3>Hello</h3>");
			sb.append("<img src=\"cid:bgls\"/>");
			textpart.setContent(sb.toString(), "text/html;charset=utf-8");
			
			//附件
			BodyPart filepart = new MimeBodyPart();
			filepart.setDataHandler(new DataHandler(
					new ByteArrayDataSource(Files.readAllBytes(Paths.get("D:\\niuma\\bao2.jpg")),"application/octet-stream")));
			
			
			filepart.setHeader("Content-ID", "bgls");//照片ID
			
			Multipart multipart = new MimeMultipart();
			multipart.addBodyPart(textpart);
			multipart.addBodyPart(filepart);
			
			message.setContent(multipart);

小结:

使用JavaMail API发送邮件本质上是一个MUA软件通过SMTP协议发送邮件至MTA服务器
打开调试模式可以看到详细的SMTP交互信息
某些邮件服务商需要开启SMTP,并需要独立的SMTP登录密码文章来源地址https://www.toymoban.com/news/detail-554433.html

到了这里,关于JavaMail相关代码案例(邮件发送)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【开发篇】十六、SpringBoot整合JavaMail实现发邮件

    SMTP(Simple Mail Transfer Protocol):简单邮件传输协议, 用于发送 电子邮件的传输协议 POP3(Post Office Protocol - Version 3): 用于接收 电子邮件的标准协议 IMAP(Internet Mail Access Protocol):互联网消息协议,是 POP3的替代协议 STEP1: 加入JavaMail起步依赖: STEP2: 相关配置: 注意pa

    2024年02月07日
    浏览(33)
  • 使用证书认证方式调用Microsoft Graph Api发送邮件案例

    项目需求:           以证书认证获取授权调用MS Graph API发送邮件,代替原有的SMTP协议以用户名密码认证的方式。 操作步骤:         1.在Microsoft Azure 应用中心注册你的应用,申请需要使用的api权限   注册好后你会得到如下信息:  在权限中添加你需要的,发送邮件的

    2024年02月06日
    浏览(34)
  • JAVA之发送邮件

    一、导入依赖 二、发送普通文本 三、发送附件 一、导入依赖 二、发送普通文本 三、发送附件 方法一:通过POI读取数据库的数据,并生成excel,但不保存在本地文件,通过流的方式,作为附件并发送邮件 主要的代码如下: 全部代码如下: 方法二:将导出的数据生成文件,

    2024年02月13日
    浏览(31)
  • java实现发送邮件

    本文介绍下java实现邮件的发送,意在网站用户评论时能够及时通知站长和用户评论被回复后能够及时通知用户。 下文介绍下具体实现。 java实现 首先引入springboot的邮箱依赖 配置邮箱参数,这里以 qq邮箱 作为示例 此时就差不多了,接下来实现邮箱工具类 此时调用 MailUtil 里

    2024年02月16日
    浏览(37)
  • java ssl加密发送邮件

    通过25端口发送邮件不安全,改为ssl加密方式发送邮件,比较常见的2中实现类发送邮件如下所示。 使用该实现类发送邮件,ssl加密使用端口号为465,借助Properties类设置ssl的各种配置。 网上资料较少,自己记录一下。 修改application.yml文件配置 至于能否都采用第二种方式来实

    2024年02月12日
    浏览(40)
  • Java发送邮件 启用SSL

    使用的maven依赖: 配置文件 mail.properties 如下: 在Foxmail的配置如下: 代码如下:

    2024年04月26日
    浏览(26)
  • Java Email 实现邮件发送

    Email:电子邮件。 在当今社会有着重要的应用,传统的邮件是通过邮局投递,然后从一个邮局到另一个邮局,最终到达用户的邮箱。 在电子邮件中也有着相似的发送过程:电子邮件是从用户电脑的邮件软件发送到邮件服务器上,经过若干个邮件服务器的中转,最终到达对方邮

    2024年02月03日
    浏览(33)
  • 用Java实现发送邮件——Java Email

            众所周知,Email就是邮件,在科技高速发展的今天我们也使用了非常之久的电子邮件,我们熟知的邮件有自己的QQ邮箱、网易邮箱大师还有Outlook等都是用来发送邮件的,而用Java程序也是可以用来发送邮件的。 首先我们先对比一下传统的邮件信息是如何发送的:传

    2024年02月05日
    浏览(32)
  • java 发送html 格式的邮件

    在 Java 中,可以使用 JavaMail API 来发送 HTML 格式的邮件。下面是一个简单的示例代码: 在上面的代码中,首先设置了收件人、发件人、发件人密码和邮件服务器的信息。然后设置了系统属性,包括邮件服务器、SMTP 认证、SMTP 端口和 SSL 连接。接着创建一个默认的 Session 对象,

    2024年02月15日
    浏览(32)
  • Java发送邮件-工具类-基于springboot

    那么,废话少说,直接上代码。 1. 目录结构  重点是那几个带mail的,其他文件不用管。 2. pom 其他文件都是基础的,主要是引入这个mail。 我这个版本比较老旧,更新一下也是可以的。 3. 主要代码 先搞一个邮件实体类 再搞一个邮箱实体类 最后再搞一个发送邮件的工具类 最

    2024年02月11日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包