使用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中一个非常有用的特性,它可以按需生成值,而无需一次性将所有结果计算出来并存储在内存中。本文将从多个方面详细阐述Python生成器的实现。 一、生成器的概念 生成…

    程序猿 2025-02-05
  • 如何使用Python关闭txt文件

    要关闭txt文件,需要使用Python中的file.close()函数。此函数用于关闭文件,释放资源并将文件保存在磁盘上。 一、使用file.close()关闭文件 file.cl…

    程序猿 2024-12-28
  • Python函数的定义要点

    Python中的函数是一种可重复使用的代码块,用于执行特定任务。它们通过提供代码的封装和模块化来提高代码的可读性和可维护性。本文将从多个方面详细阐述Python函数的定义要点。 一…

    程序猿 2024-12-29
  • Python少儿基础编程课程

    本文将从多个方面对Python少儿基础编程课程进行详细阐述。 一、Python编程的重要性 Python编程是目前非常受欢迎的编程语言之一,它具有简单易学、功能强大和广泛应用等优点…

    程序猿 2024-12-17
  • Python的乐趣

    Python是一种广泛应用的编程语言,具有简单易学、功能强大、代码优雅等特点。在这篇文章中,我们将从多个方面探讨Python的乐趣所在。 一、Python的语法简洁 1、Pytho…

    程序猿 2024-12-30
  • 排队论Python实现

    排队论是运筹学中的一门重要分支,研究的是由顾客要求服务而需要等待的问题。在实际生活中,我们经常会遇到需要排队等待的场景,例如购物、就餐、医院挂号等。Python作为一种强大的编程语…

    程序猿 2024-12-17
  • Python大杂烩领域博主

    Python大杂烩领域博主是在Python编程语言的热潮中崛起的一群技术博主。他们对各种领域的知识都有所涉猎,从机器学习到网络编程,从数据分析到Web开发,他们能够为读者带来丰富多…

    程序猿 2025-02-01
  • 使用Python列出本年度所有星期天

    Python是一种流行的编程语言,它提供了许多方便的工具和库,可以帮助我们完成各种任务。在本文中,我们将介绍如何使用Python列出本年度的所有星期天。 一、计算本年度的开始和结束…

    程序猿 2024-12-22
  • Python编码处理之综述

    Python是一种高级编程语言,拥有丰富的库和内置函数来处理各种编码相关的任务。本文将从多个方面详细阐述Python编码处理的方法和技巧。 一、字符编码介绍 字符编码是将字符转换为…

    程序猿 2025-01-01
  • Python现在还火吗?

    Python作为一种高级编程语言,近年来一直备受关注和推崇,但是随着其他编程语言的不断发展,Python现在还火吗?本文将从多个方面对Python的现状进行分析和阐述。 一、Pyt…

    程序猿 2025-02-09

发表回复

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

分享本页
返回顶部