java实现基于SMTP发送邮件的方法

作者:答复哈 时间:2023-04-06 12:22:07 

本文实例讲述了java实现基于SMTP发送邮件的方法。分享给大家供大家参考。具体实现方法如下:


import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.apache.log4j.Logger;
public class MailUtil {
private static Logger logger = Logger.getLogger(MailUtil.class);
/**
 * 发送邮件
 *
 * @param smtp
 *   SMTP服务器
 * @param user
 *   用户名
 * @param password
 *   密码
 * @param subject
 *   标题
 * @param content
 *   邮件内容
 * @param from
 *   发件人邮箱
 * @param to
 *   收件人邮箱
 */
public static void send(String smtp, final String user,
  final String password, String subject, String content, String from,
  String to) {
 try {
  Properties props = new Properties();
  props.put("mail.smtp.host", smtp);
  props.put("mail.smtp.auth", "true");
  Session ssn = Session.getInstance(props, new Authenticator() {
   @Override
   protected PasswordAuthentication getPasswordAuthentication() {
    return new PasswordAuthentication(user, password);
   }
  });
  MimeMessage message = new MimeMessage(ssn);
  //由邮件会话新建一个消息对象
  InternetAddress fromAddress = new InternetAddress(from);
  //发件人的邮件地址
  message.setFrom(fromAddress);
  //设置发件人
  InternetAddress toAddress = new InternetAddress(to);
  //收件人的邮件地址
  message.addRecipient(Message.RecipientType.TO, toAddress);
  //设置收件人
  message.setSubject(subject);
  //设置标题
  message.setText(content);
  //设置内容
  message.setSentDate(new Date());
  //设置发信时间
  Transport transport = ssn.getTransport("smtp");
  transport.connect(smtp, user, password);
  transport.sendMessage(message, message
    .getRecipients(Message.RecipientType.TO));
  // transport.send(message);
  transport.close();
  logger.info("邮件发送成功");
 } catch (Exception e) {
  logger.warn("邮件发送失败", e);
 }
}
}

希望本文所述对大家的java程序设计有所帮助。

标签:java,SMTP,邮件
0
投稿

猜你喜欢

  • Java设计模式之建造者模式的示例详解

    2022-02-13 18:47:34
  • java虚拟机内存溢出及泄漏实例

    2023-11-27 15:22:06
  • Android开发中应用程序分享功能实例

    2021-05-27 20:38:46
  • 分布式系统下调用链追踪技术面试题

    2023-11-25 05:55:00
  • C#实现图片切割、切图、裁剪

    2022-10-24 15:12:19
  • 辨析Java中的String与StringBuffer及StringBuilder字符串类

    2023-08-21 19:59:50
  • C#使用NPOI上传excel

    2022-05-20 14:46:22
  • 学习Java之如何正确地向上转型与向下转型

    2022-10-12 09:58:10
  • 高斯混合模型与EM算法图文详解

    2022-10-02 12:05:02
  • Java 批量删除Word中的空白段落示例代码

    2023-09-17 16:36:53
  • Android View事件机制 21问21答

    2022-10-14 04:27:10
  • java 工厂模式的讲解及优缺点的介绍

    2022-02-05 10:57:09
  • Java 数据结构之删除链表中重复的结点

    2023-11-28 15:36:22
  • springboot整合@Retryable实现重试功能的示例代码

    2023-11-27 11:08:20
  • Aspectj框架实战案例详解

    2022-12-30 02:28:24
  • 使用idea创建web框架和配置struts的方法详解

    2022-11-14 14:21:52
  • C# 输出字符串到文本文件中的实现代码

    2022-08-25 11:18:13
  • Hibernate用ThreadLocal模式(线程局部变量模式)管理Session

    2021-10-01 18:50:10
  • springboot schedule 解决定时任务不执行的问题

    2021-05-30 05:00:38
  • Spring创建Bean的6种方式详解

    2022-07-18 19:10:13
  • asp之家 软件编程 m.aspxhome.com