背景
在我们做业务系统开发时时,经常会用到 邮件发送的场景,如 通过邮件通知给注册用户有关注册码的内容,或者 管理的某些设备有告警了,需要邮件通知相关维护人员及时处理相关设备,还有 使用的会员服务已经到期了,用邮件通知给用户等等。 在java 世界里如何发邮件,有很多种方法,下面将围绕 java mail 来做功能的实现。
什么是JavaMail
JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。
前置条件
要想通过 java 代码发送邮件,首先需要开通你邮箱的邮局服务,下面以QQ 邮箱为例,说一下开通步骤。
申请开通邮局服务(QQ为例)
-
进入QQ邮箱–》设置–》POP3/IMAP --》开启服务
-
使用手机,发送开通短信,开启服务
-
开通成功,记下授权码
获得授权码,把它拷贝出来,后面的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();
}
}
发送结果
登录收件人的邮箱,里可看到 测试代码发出的邮件收到了。
总结
使用JavaMail可以很方便的在Java客户端实现 发邮件的功能,另外很好的实现了JavaMail API的框架还有James、Spring Mail。文章来源:https://www.toymoban.com/news/detail-568588.html
需要完整演示代码的可点击下方。
完整程序代码下载
注意:程序代码需要代入你的邮箱信息才能正确工作。文章来源地址https://www.toymoban.com/news/detail-568588.html
到了这里,关于如何使用Java Mail发邮件(包括单发和群发),含演示代码下载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!