博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过javamail发送电子邮件
阅读量:6707 次
发布时间:2019-06-25

本文共 2652 字,大约阅读时间需要 8 分钟。

首先当然是到官网去下载javamail的jar包了;放置到工程中

接下来当然就是代码了,下面是我自己写的一个demo,

package com.mail;

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;
import javax.mail.internet.MimeUtility;

public class TestMail {

private static String affix = ""; // 附件地址
private static String affixName = ""; // 附件名称
public static void sendMail(String fromMail, String user, String password,
String toMail,
String mailTitle,
String mailContent) throws Exception {
Properties pro = new Properties(); //可以加载一个配置文件
// 使用smtp:简单邮件传输协议
String smtpHostName = "smtp." + fromMail.split("@")[1];
pro.put("mail.smtp.host", smtpHostName);//存储发送邮件服务器的信息
pro.put("mail.smtp.auth", "true");//同时通过验证
Session session = Session.getInstance(pro);//根据属性新建一个邮件会话
session.setDebug(true); //有他会打印一些调试信息。
MimeMessage message = new MimeMessage(session);//由邮件会话新建一个消息对象
message.setFrom(new InternetAddress(fromMail));//设置发件人的地址
message.setRecipient(Message.RecipientType.TO, new InternetAddress(toMail));//设置收件人,并设置其接收类型为TO
message.setSubject(mailTitle);//设置标题
//设置信件内容
// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
Multipart multipart = new MimeMultipart();

// 设置邮件的文本内容

BodyPart contentPart = new MimeBodyPart();
contentPart.setText("邮件的具体内容在此");
multipart.addBodyPart(contentPart);
// 添加附件
BodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(affix);
// 添加附件的内容
messageBodyPart.setDataHandler(new DataHandler(source));
// 添加附件的标题
// 这里很重要,通过下面的MimeUtility编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
messageBodyPart.setFileName(MimeUtility.encodeText(affixName));
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
// message.setText(mailContent); //发送 纯文本 邮件 todo
// message.setContent(mailContent, "text/html;charset=gbk"); //发送HTML邮件,内容样式比较丰富
message.setSentDate(new Date());//设置发信时间
message.saveChanges();//存储邮件信息
//发送邮件
Transport transport = session.getTransport("smtp");
// Transport transport = session.getTransport();
transport.connect(user, password); //这里的密码可能是发件人的登录密码,也可能是对应邮箱服务器的授权码
transport.sendMessage(message, message.getAllRecipients());//发送邮件,其中第二个参数是所有已设好的收件人地址
transport.close();
}
public static void main(String[] args) throws Exception {
sendMail("", "", "", "", "", "");
}
}

如有帮助,不胜荣幸;

 

转载于:https://www.cnblogs.com/cj28-27/p/6372601.html

你可能感兴趣的文章
CactiEZ中文版10.1正式发布
查看>>
Linux命令之top
查看>>
中断和异常
查看>>
字符串的处理2
查看>>
android - 自定义(组合)控件 + 自定义控件外观
查看>>
关于subpartition(hash)在表空间中的分布
查看>>
java 对象序列化
查看>>
我的友情链接
查看>>
51次课(设置更改root密码、连接mysql、mysql常用命令)
查看>>
2. 使用指针操作数组
查看>>
innodb_flush_log_at_trx_commit理解
查看>>
DHCP安装授权
查看>>
zabbix安装配置
查看>>
K8s Ingress 模式简介及示例
查看>>
Hubs & Repeaters
查看>>
Android进阶知识:事件分发与滑动冲突(二)
查看>>
linux运维面试题
查看>>
Objective-C之成魔之路【17-内存管理】
查看>>
c++学习总结:抽象类
查看>>
Quartz2.x增、删、改工具类
查看>>