JAVA 发送邮件

java

// 文件路径 D:\ApacheServer\web_java\HelloWorld\src\com\test\TestSendMail.java

package com.test;

import java.io.File;

import java.util.Date;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.DataSource;

import javax.activation.FileDataSource;

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.Multipart;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

public class TestSendMail {

public void testfun(){

// 需要先下载 javax.mail.jar 和 activation.jar。只发文字邮件 javax.mail.jar 就够了,发附件则还需要 activation.jar

// mail.jar 下载地址 https://www.oracle.com/technetwork/java/javamail/index.html 点击 Downloads 下载 JavaMail API 1.4.7,或者 https://javaee.github.io/javamail/ 下载 JavaMail 1.6.2 这里版本是 JavaMail 1.6.2

// jaf 下载页面 https://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html 这里用到版本 JavaBeans Activation Framework 1.1.1

// 提取下载的压缩包里的 javax.mail.jar 和 activation.jar 放到项目中

// 收件人的电子邮件 ID

String to = "32705317@qq.com";

// 发件人的电子邮件 ID

String from = "zdy_521@126.com";

// SMTP服务器地址

String host = "smtp.126.com";

// 授权密码,到网易邮箱中设置

String passWord = "87477zhang";

// 设置邮件发送相关属性

Properties properties = System.getProperties();

// 设置邮件传输采用的协议smtp(这里使用网易的smtp服务器)

properties.setProperty("mail.transport.protocol", "smtp");

//设置发送邮件的邮件服务器的属性

properties.setProperty("mail.smtp.host", host);

//需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)

properties.setProperty("mail.smtp.auth", "true");

// SMTP 服务器的端口 (非 SSL 连接的端口一般默认为 25, 可以不添加, 如果开启了 SSL 连接,

// 需要改为对应邮箱的 SMTP 服务器的端口, 具体可查看对应邮箱服务的帮助,

// QQ邮箱的SMTP(SLL)端口为465或587, 其他邮箱自行去查看)

/*

final String smtpPort = "465";

properties.setProperty("mail.smtp.port", smtpPort);

properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

properties.setProperty("mail.smtp.socketFactory.fallback", "false");

properties.setProperty("mail.smtp.socketFactory.port", smtpPort);

*/

// 获取默认的 Session 对象

Session session = Session.getDefaultInstance(properties);

// 会话采用debug模式

session.setDebug(true);

try {

// 创建邮件对象

MimeMessage message = new MimeMessage(session);

// 设置发送邮件地址,param1 代表发送地址 param2 代表发送的名称(任意的) param3 代表名称编码方式

message.setFrom(new InternetAddress(from, "发件人名称", "utf-8"));

// 代表收件人

message.setRecipient(Message.RecipientType.TO, new InternetAddress(to, "收件人名称", "utf-8"));

// To: 增加更多收件人(可选)

//message.addRecipient(MimeMessage.RecipientType.TO, new InternetAddress("chimuhuadao@126.com", "收件人名称", "UTF-8"));

//message.addRecipient(MimeMessage.RecipientType.TO, new InternetAddress("chimuhuadao@163.com", "收件人名称", "UTF-8"));

// Cc: 抄送(可选)

//message.setRecipient(MimeMessage.RecipientType.CC, new InternetAddress("chimuhuadao@126.com", "抄送人名称", "UTF-8"));

// Bcc: 密送(可选)

//message.setRecipient(MimeMessage.RecipientType.BCC, new InternetAddress("chimuhuadao@126.com", "密送人名称", "UTF-8"));

// 设置邮件主题

message.setSubject("测试转发邮件");

//====================附件测试开始=================

//以下部分为测试邮件附件,如不需要可以把整段附件这部分代码注释

// 创建 Multipart 对象,来包含邮件的多部分(正文,附件等)消息

Multipart multipart = new MimeMultipart();

// 第一部分正文消息部分

BodyPart bodyPart = new MimeBodyPart();

// 设置邮件正文内容

bodyPart.setContent("<h1>早安,世界</h1>", "text/html;charset=utf-8");

// 将正文消息部分添加到 Multipart 对象中

multipart.addBodyPart(bodyPart);

// 第二部分是附件

bodyPart = new MimeBodyPart();

// 读取项目根目录下 upload 文件夹内 00125943U-0.jpg 文件作为附件,这里路径为 D:/ApacheServer/web_java/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/HelloWorld/upload/00125943U-0.jpg。这里WebContent为实际项目运行根目录

String fileName = "00125943U-0.jpg";

// 获取项目运行根目录

// .toString().substring(6) 消除返回路径中的 file:/ 字符串,这里返回路径为 D:/ApacheServer/web_java/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/HelloWorld/

String appBase = Thread.currentThread().getContextClassLoader().getResource("../../").toString().substring(6);

// 合成文件绝对路径

String filePath = appBase + "upload" + File.separator + fileName;

DataSource dataSource = new FileDataSource(filePath);

bodyPart.setDataHandler(new DataHandler(dataSource));

// 设置邮件中附件名称

bodyPart.setFileName("testAttachment.jpg");

// 将附件部分添加到 Multipart 对象中

multipart.addBodyPart(bodyPart);

//response.getWriter().append(filePath);if(true)return;

// 另一份附件,可发送多个附件

bodyPart = new MimeBodyPart();

// 读取项目根目录下 upload 文件夹内 00125943U-0.jpg 文件作为附件

fileName = "abc.ppt";

filePath = appBase + "upload" + File.separator+ fileName;

dataSource = new FileDataSource(filePath);

bodyPart.setDataHandler(new DataHandler(dataSource));

// 设置邮件中附件名称

bodyPart.setFileName("testAttachment.ppt");

// 将附件部分添加到 Multipart 对象中

multipart.addBodyPart(bodyPart);

//和下面发送文本的 message.setContent("<h1>早安,世界</h1>", "text/html;charset=utf-8"); 二选一执行

message.setContent(multipart);

//====================附件测试结束=================

// 设置邮件内容,可以带HTML标签,也可以不带,内容大小不限

//message.setContent("<h1>早安,世界</h1>", "text/html;charset=utf-8");

// 设置发送时间

message.setSentDate(new Date());

// 保存上面的编辑内容

message.saveChanges();

Transport transport = session.getTransport();

// 链接邮件服务器

transport.connect(from, passWord);

// 发送信息

transport.sendMessage(message, message.getAllRecipients());

// 关闭链接

transport.close();

}catch(Exception exception) {

// 处理错误

exception.printStackTrace();

}

}

}

以上是 JAVA 发送邮件 的全部内容, 来源链接: utcz.com/z/390137.html

回到顶部