使用Java发送邮件

JavaMail是一个通过邮件服务器发送和接收邮件的平台独立的框架。

一、简单邮件发送

首先我们需要创建一个Session对象,然后创建一个默认的MimeMessage对象。

importjavax.mail.*;
importjavax.mail.internet.*;

importjava.util.Properties;

publicclassEmailSender{
publicvoidsendEmail(Stringrecipient,Stringsubject,StringmessageBody){
//定义发送邮件的属性
finalStringusername="your-email-id";
finalStringpassword="your-password";

Propertiesprops=newProperties();
props.put("mail.smtp.auth","true");
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.host","smtp.gmail.com");
props.put("mail.smtp.port","587");

//获取Session对象
Sessionsession=Session.getInstance(props,
newjavax.mail.Authenticator(){
protectedPasswordAuthenticationgetPasswordAuthentication(){
returnnewPasswordAuthentication(username,password);
}
});

try{
//创建MimeMessage对象
Messagemessage=newMimeMessage(session);
message.setFrom(newInternetAddress("from-email"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(recipient));
message.setSubject(subject);
message.setText(messageBody);

//发送邮件
Transport.send(message);

}catch(MessagingExceptione){
thrownewRuntimeException(e);
}
}
}

二、发送含有附件的邮件

如果你想要在邮件中添加附件,则需要创建一个使用Multipart实例的MimeMessage,并添加至少一个BodyPart实例到这个Multipart实例中。

publicclassEmailSenderWithAttachment{
publicvoidsendEmailWithAttachment(Stringrecipient,Stringsubject,StringmessageBody,StringfileName){
//创建和配置Session
//...省略相同的部分代码...

try{
//创建含有附件的邮件
Messagemessage=newMimeMessage(session);
message.setFrom(newInternetAddress("from-email"));
message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(recipient));
message.setSubject(subject);

Multipartmultipart=newMimeMultipart();
BodyPartmessageBodyPart=newMimeBodyPart();
messageBodyPart.setText(messageBody);
multipart.addBodyPart(messageBodyPart);

//创建附件部分
messageBodyPart=newMimeBodyPart();
DataSourcesource=newFileDataSource(fileName);
messageBodyPart.setDataHandler(newDataHandler(source));
messageBodyPart.setFileName(fileName);
multipart.addBodyPart(messageBodyPart);

//设置邮件内容
message.setContent(multipart);

//发送邮件
Transport.send(message);

}catch(MessagingExceptione){
thrownewRuntimeException(e);
}
}
}

这段代码中添加了一个新的MimeBodyPart对象到Multipart实例中,这个新的对象包含了附件的内容

原创文章,作者:小蓝,如若转载,请注明出处:https://www.beidandianzhu.com/g/1212.html

(0)
小蓝的头像小蓝
上一篇 2024-12-17
下一篇 2024-12-17

相关推荐

  • Python成绩总分

    本文将从多个方面详细阐述如何使用Python计算成绩总分。 一、输入成绩 1、首先,我们需要获取学生的成绩信息。可以通过键盘输入或者读取文件的方式获取成绩数据。 student_s…

    程序猿 2024-12-17
  • 如何使用PyCharm运行Python代码

    PyCharm是一款强大的集成开发环境(IDE),专为Python开发而设计。它提供了许多便捷的功能,使得编写、调试和运行Python代码变得更加简单和高效。本文将从多个方面介绍如…

    程序猿 2024-12-17
  • Python下爬虫信息的显示

    本文将从多个方面对Python下爬虫信息的显示进行详细阐述。 一、爬虫基础知识 1、爬虫概述 所谓爬虫,指的是通过编写程序模拟人的操作,自动从互联网上获取数据的一种技术。在Pyth…

    程序猿 2024-12-17
  • Python跨文件导入

    在本文中,我们将详细讨论Python跨文件导入的问题。 一、Python模块 Python中的模块是一种可重用的代码组织方式,它可以将相关的代码放在一个文件中,供其他程序引用和调用…

    程序猿 2024-12-28
  • Python递归应用实例

    递归是一种常用的编程技术,在解决一些问题时,使用递归可以简化代码逻辑。Python作为一门高级编程语言,提供了强大的递归功能,可以处理复杂的问题。本文将通过多个实例来介绍Pytho…

    程序猿 2024-12-20
  • Python作为编程语言的职业前景

    Python作为一种高级、易学且功能强大的编程语言,在近年来越来越受到全球范围内的开发者的喜爱和广泛应用。它在不同领域中都有着广泛的应用,包括软件开发、Web开发、数据分析、人工智…

    程序猿 2024-12-27
  • 使用Python画平面曲线

    Python是一门功能强大且易于学习的编程语言,它提供了各种绘图库和工具,使得我们可以轻松地在平面上画出各种曲线。本文将从不同的角度详细介绍Python画平面曲线的应用。 一、ma…

    程序猿 2024-12-22
  • 正版Python程序设计

    正版Python程序设计是指在合法和授权的条件下使用Python编程语言进行软件开发和编程的过程。本文将从多个方面对正版Python程序设计进行详细阐述。 一、Python程序设计…

    程序猿 2024-12-24
  • Java高级面试题解析及代码示例

    Java面试题包括很多类型,如算法/数据结构/设计模式以及对Java语言特性的深度理解。这篇文章将从多个方面阐述Java高级面试题,并给出具体的代码示例。 一、算法和数据结构 相对…

    程序猿 2024-12-17
  • Python队列线程

    本文将从多个方面对Python队列线程进行详细阐述,包括队列的概念、队列的作用、队列的实现以及队列线程的应用。首先,让我们来解答一下什么是Python队列线程。 一、队列线程的概念…

    程序猿 2024-12-23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

分享本页
返回顶部