通过javamail发送电子邮件

首先当然是到官网去下载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