一、背景
1.因为公司要使用邮件发送,基于这个我们就来写我们自己的邮箱测试代码,公司的是基于其他的服务进行完成的,我们使用的是基于QQ的发件箱。
2.基于QQ邮箱进行邮件的发送测试,使用QQ邮箱作为发件邮箱,完成这么一个有趣的测试,下面我们来进行测试如何使用吧。
二、代码结构图
1.项目图
三、具体讲解代码
1.pom.xml
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.0</version>
</dependency>
2.mail.properties
#用户名
emailName=1396736195@qq.com
passWord=znopegvspsetgahj
mail.transport.protocol=smtp
mail.smtp.host=smtp.qq.com
mail.smtp.port=465
mail.smtp.auth=true
mail.smtp.timeout=60000
mail.smtp.socketFactory.port=465
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
3.Mail.java
public class Mail {
//要发送至哪个邮箱
private String emailName;
//抄送对象
private String cc;
//密送对象
private String bcc;
//邮箱的主题
private String subject;
//邮箱的内容
private String content;
//邮箱发送的类型,纯文本还是网页,还是其他的格式
private String contentType;
//邮箱的接收者
private String toEmilName;
private String[] filePath;
public String[] getFilePath() {
return filePath;
}
public void setFilePath(String[] filePath) {
this.filePath = filePath;
}
public InternetAddress[] getToEmilName() {
try {
return InternetAddress.parse(toEmilName);
} catch (AddressException e) {
e.printStackTrace();
}
return null;
}
public void setToEmilName(String toEmilName) {
this.toEmilName = toEmilName;
}
public InternetAddress getEmailName() {
try {
return InternetAddress.parse(emailName)[0];
} catch (AddressException e) {
e.printStackTrace();
}
return null;
}
public void setEmailName(String emailName) {
this.emailName = emailName;
}
public InternetAddress[] getCc() {
if(cc==null){
return null;
}else{
try {
return InternetAddress.parse(cc);
} catch (AddressException e) {
e.printStackTrace();
}
}
return null;
}
public void setCc(String cc) {
this.cc = cc;
}
public InternetAddress[] getBcc() {
if(bcc==null){
return null;
}else{
try {
return InternetAddress.parse(bcc);
} catch (AddressException e) {
e.printStackTrace();
}
}
return null;
}
public void setBcc(String bcc) {
this.bcc = bcc;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
}
4.MailAuthenticator.java
public class MailAuthenticator extends Authenticator {
private String emailName;
private String password;
public MailAuthenticator(){}
public MailAuthenticator(String emailName,String password){
this.emailName=emailName;
this.password=password;
}
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(emailName, password);
}
}
5.SendMailUtil.java
public class SendMailUtil {
public static Properties properties;
public static Properties getEmailInfo(String path) throws Exception{
synchronized (SendMailUtil.class){
if(properties==null){
synchronized (SendMailUtil.class){
properties = new Properties();
FileInputStream fis = new FileInputStream(new File(path));
properties.load(fis);
return properties;
}
}else{
return properties;
}
}
}
public static Integer getInteger(String key){
return Integer.parseInt(properties.getProperty(key));
}
public static String getString(String key){
return properties.getProperty(key);
}
public static Double getDouble(String key){
return Double.parseDouble(properties.getProperty(key));
}
}
6.SendEmail.java
public class SendEmail {
public static void sendEmail() throws Exception{
Properties properties = SendMailUtil.getEmailInfo("src/main/resources/mail.properties");
Session session = Session.getInstance(properties,new MailAuthenticator(SendMailUtil.getString("emailName"),SendMailUtil.getString("passWord")));
System.out.println(SendMailUtil.getString("emailName")+"这个是我的发送邮箱");
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(SendMailUtil.getString("emailName")));
message.setSubject("你好,这个是我的邮件主题");
message.setContent("这个是我的邮件的内容!","text/plain;charset=utf-8");
message.setReplyTo(new InternetAddress[]{new InternetAddress("cmx15670546730@163.com")});
Transport transport = session.getTransport();
transport.connect();
transport.sendMessage(message,message.getReplyTo());
}
public static void main(String...arg){
try {
sendEmail();
} catch (Exception e) {
e.printStackTrace();
}
}
}
四、发送邮件的配置
1.发送邮件的配置可以参考我之前的博客:https://blog.csdn.net/chenmingxu438521/article/details/89416263
五、结果
1.测试结果
六、结束
1.今天就整理到这里吧,有问题请留言!!!