发送邮件使用:SMTP协议
接收邮件使用:POP3协议
案例
首先导入包
activation-1.1.1.jar和mail-1.4.7.jar
jar包下载
发送简单邮件
import com.sun.mail.util.MailSSLSocketFactory;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.security.GeneralSecurityException;
import java.util.Properties;
//发送简单邮件
public class MailDemo1 {
public static void main(String[] args) throws Exception {
Properties prop = new Properties();
prop.setProperty("mail.host","smtp.qq.com");//设置QQ邮箱服务器
prop.setProperty("mail.transport.protocol","smtp");//邮件发送协议
prop.setProperty("mail.smtp.auth","true");//需要验证用户名和密码
//关于QQ邮箱,还要设置SSL加密,加以下代码即可
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable","true");
prop.put("mail.smtp.ssl.socketFactory",sf);
//使用JavaMail发送邮件的5个步骤
//1.创建丁一整个应用程序所需的环境信息的session对象
//创建定义整个应用程序所需的环境信息的Session对象
//QQ才有
Session session = Session.getDefaultInstance(prop, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//发件人邮件用户名、授权码
return new PasswordAuthentication("1156388927@qq.com","spcekrubmsdjgjid");
}
});
//开启Session的debug模式,这样就能看到程序发送Email的运行状态
session.setDebug(true);
//2.通过session得到transport对象
Transport ts = session.getTransport();
//3.使用邮箱的用户名和授权码连接邮件服务器
ts.connect("smtp.qq.com","1156388927@qq.com","spcekrubmsdjgjid");
//4.创建邮件:写邮件
//注意需要传递session
MimeMessage message = new MimeMessage(session);
//指明邮件的发件人
message.setFrom(new InternetAddress("1156388927@qq.com"));
//指明邮件的收件人,现在发件人和收件人一样,说明就是自己给自己发
message.setRecipient(Message.RecipientType.TO,new InternetAddress("1156388927@qq.com"));
//邮件的标题
message.setSubject("只包含文本的简单邮件");
//邮件的文本内容
message.setContent("你好","text/html;charset=UTF-8");
//5.发送邮件
ts.sendMessage(message,message.getAllRecipients());
//关闭连接
ts.close();
}
}
在邮件中加入图片附件
package com.hty;
import com.sun.mail.util.MailSSLSocketFactory;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.security.GeneralSecurityException;
import java.util.Properties;
public class MailDemo1 {
public static void main(String[] args) throws Exception {
Properties prop = new Properties();
prop.setProperty("mail.host","smtp.qq.com");//设置QQ邮箱服务器
prop.setProperty("mail.transport.protocol","smtp");//邮件发送协议
prop.setProperty("mail.smtp.auth","true");//需要验证用户名和密码
//关于QQ邮箱,还要设置SSL加密,加以下代码即可
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable","true");
prop.put("mail.smtp.ssl.socketFactory",sf);
//使用JavaMail发送邮件的5个步骤
//1.创建丁一整个应用程序所需的环境信息的session对象
//创建定义整个应用程序所需的环境信息的Session对象
//QQ才有
Session session = Session.getDefaultInstance(prop, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//发件人邮件用户名、授权码
return new PasswordAuthentication("1156388927@qq.com","spcekrubmsdjgjid");
}
});
//开启Session的debug模式,这样就能看到程序发送Email的运行状态
session.setDebug(true);
//2.通过session得到transport对象
Transport ts = session.getTransport();
//3.使用邮箱的用户名和授权码连接邮件服务器
ts.connect("smtp.qq.com","1156388927@qq.com","spcekrubmsdjgjid");
//4.创建邮件:写邮件
//注意需要传递session
MimeMessage message = new MimeMessage(session);
//指明邮件的发件人
message.setFrom(new InternetAddress("1156388927@qq.com"));
//指明邮件的收件人,现在发件人和收件人一样,说明就是自己给自己发
message.setRecipient(Message.RecipientType.TO,new InternetAddress("1156388927@qq.com"));
//邮件的标题
message.setSubject("只包含文本的简单邮件");
//---------------------------------------------------------------------------------------------
//准备图片数据
MimeBodyPart image = new MimeBodyPart();
//图片需要经过数据处理
DataHandler dh = new DataHandler(new FileDataSource("E:\\编程\\javaweb\\邮件的发送\\email\\emailsend\\src\\123.JPG"));
image.setDataHandler(dh);//在Body中放入这个处理的图片数据
image.setContentID("123.JPG");//给图片设置一个ID,可以在后面使用
//准备正文数据
MimeBodyPart text = new MimeBodyPart();
//通过cid:名字就可以使用图片了
text.setContent("这是一份邮件正文带图片<img src='cid:123.JPG'>的邮件","text/html;charset=UTF-8");
//描述数据关系
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(image);
mm.setSubType("related");
//设置到消息中,保存修改
message.setContent(mm);//把最后编辑好的邮件放到消息中
message.saveChanges();//保存修改
//---------------------------------------------------------------------------------------------
//邮件的文本内容
// message.setContent("你好","text/html;charset=UTF-8");
//5.发送邮件
ts.sendMessage(message,message.getAllRecipients());
//关闭连接
ts.close();
}
}
网站注册发送邮件实现
和上面的代码一样只需要更改收件的邮箱就行,改为前端接收到的数据