smtp方式
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
import com.sun.mail.util.MailSSLSocketFactory;
import microsoft.exchange.webservices.data.core.ExchangeService;
import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion;
import microsoft.exchange.webservices.data.credential.ExchangeCredentials;
import microsoft.exchange.webservices.data.credential.WebCredentials;
import java.net.URI;
import java.net.URISyntaxException;
import java.security.GeneralSecurityException;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
public class MailUntil {
private MailUntil() {}
public static Session createSession() {
String host = "smtp.163.com";
String username = "xxx@dsd.com";// 邮箱发送账号
String password = "did34dsvfd";// 邮箱授权码
Properties prop = new Properties();
prop.setProperty("mail.host",host);
prop.setProperty("mail.smtp.port", "25");
prop.setProperty("mail.transport.protocol","smtp");
prop.setProperty("mail.smtp.auth","true");
MailSSLSocketFactory sf = null;//存在一个特性设置SSL加密
try {
sf = new MailSSLSocketFactory();
} catch (GeneralSecurityException e) {
e.printStackTrace();
}
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf);
Session session = Session.getDefaultInstance(prop, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,password);
}
});
// 控制台打印调试信息
session.setDebug(true);
return session;
}
}
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import javax.mail.*;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.lang.invoke.MethodHandles;
import java.util.List;
import java.util.Set;
public class TestInfrom {
public static void main(String[] args) throws Exception {
String host = "smtp.163.com";
String username = "xxx@dsd.com";// 邮箱发送账号
String password = "did34dsvfd";// 邮箱授权码
String sendMsg="邮件的内容详情!!!";
LOG.info("mail_inform_begin>>start.......................");
Session session = MailUntil.createSession();
session.setDebug(true);//开启debug模式
Transport transport = session.getTransport();//获取连接对象
transport.connect(host,username,password);//连接服务器
MimeMessage mimeMessage = new MimeMessage(session);//创建邮件对象
mimeMessage.setFrom(new InternetAddress(username));//邮件发送人
mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("123456@163.com"));//邮件接收人
mimeMessage.setSubject("邮件标题");//邮件标题
mimeMessage.setContent(sendMsg,"text/html;charset=UTF-8");//邮件内容
transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());//发送邮件
transport.close();//关闭连接
System.out.println("Email sent successfully.");
}
}
Exchange邮件发送方式
注意:jdk11需要额外引入一个包javax.xml.ws
URL可以尝试加后缀/ews/exchange.asmx
<dependency>
<groupId>com.microsoft.ews-java-api</groupId>
<artifactId>ews-java-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.3.1</version>
</dependency>
import com.sun.mail.util.MailSSLSocketFactory;
import microsoft.exchange.webservices.data.core.ExchangeService;
import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion;
import microsoft.exchange.webservices.data.credential.ExchangeCredentials;
import microsoft.exchange.webservices.data.credential.WebCredentials;
import java.net.URI;
import java.net.URISyntaxException;
import java.security.GeneralSecurityException;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
public class MailUntil {
private MailUntil() {}
public static ExchangeService createService() {
String host = "https://mail-xxx.xxx";//如果地址报404错。可以加后缀https://mail-xxx.xxx/ews/exchange.asmx
String username = "xxx@ccvxx.com";// 邮箱发送账号
String password = "xxx@xxxfn";// 邮箱密码
// 创建Exchange服务对象
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
ExchangeCredentials credentials = new WebCredentials(username, password);
service.setCredentials(credentials);
try {
service.setUrl(new URI(host));
} catch (URISyntaxException e) {
e.printStackTrace();
}
return service;
}
}
import microsoft.exchange.webservices.data.core.ExchangeService;
import microsoft.exchange.webservices.data.core.service.item.EmailMessage;
import microsoft.exchange.webservices.data.property.complex.MessageBody;
public class TestInfrom{
public static void main(String[] args) throws Exception {
String sendMsg="邮件详情!!!";
LOG.info("mail_inform_begin>>start.......................");
ExchangeService service = MailUntil.createService();
EmailMessage message = new EmailMessage(service);
message.setSubject("邮件标题!");
message.setBody(MessageBody.getMessageBodyFromText(sendMsg));
message.getToRecipients().add("sdsad@dsds.com");
// 发送邮件
message.send();
System.out.println("Email sent successfully.");
}
}